Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java android中取消静音按钮的问题_Java_Android - Fatal编程技术网

java android中取消静音按钮的问题

java android中取消静音按钮的问题,java,android,Java,Android,我正在创建一个简单的点击计数器android应用程序,点击按钮时会播放声音,离开计数屏幕然后返回时也会保存计数 我遇到了静音按钮的问题。当我单击它时,它会使整个应用程序静音,而不仅仅是特定的gui屏幕(活动) 第一个问题是静音按钮会使整个应用程序的声音静音,而我只需要为该活动静音 第二个问题是,当你点击静音按钮走出屏幕,然后返回,然后尝试取消静音-它不会取消静音的声音 我认为解决这个问题的办法是我们将静音按钮从SharedReferences保存实例状态中移除-如果可能的话 这是我迄今为止的代码

我正在创建一个简单的点击计数器android应用程序,点击按钮时会播放声音,离开计数屏幕然后返回时也会保存计数

我遇到了静音按钮的问题。当我单击它时,它会使整个应用程序静音,而不仅仅是特定的gui屏幕(活动)

  • 第一个问题是静音按钮会使整个应用程序的声音静音,而我只需要为该活动静音

  • 第二个问题是,当你点击静音按钮走出屏幕,然后返回,然后尝试取消静音-它不会取消静音的声音

  • 我认为解决这个问题的办法是我们将静音按钮从SharedReferences保存实例状态中移除-如果可能的话

    这是我迄今为止的代码,如果你能指导我如何实现上述目标,那就太好了。谢谢

    public class wazeefa extends Activity {
    
        //Count Button
        TextView txtCount;
        ImageView image;
        Button btnCount;
        Button wmute;
        Button wreset;
        public static int count = 0;
        SharedPreferences app_preferences;
        MediaPlayer mpButtonClick;
        AudioManager audioManager;
        public static boolean mutestatus = false;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // The activity is being created.
            setContentView(R.layout.wazeefa);
    
    
            audioManager =
                    (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            //SAVE COUNT
            app_preferences = this.getSharedPreferences("myPrefscount", MODE_WORLD_READABLE);
    
    
            count = app_preferences.getInt("count", 0);
    
            txtCount = (TextView) findViewById(R.id.wcount);
            txtCount.setText("This app has been started " + count + " times.");
    
            image = (ImageView) findViewById(R.id.imageview);
    
            txtCount = (TextView) findViewById(R.id.wcount);
            txtCount.setText("This app has been started " + count + " times.");
    
            //Button SOUND AND COUNT
            mpButtonClick = MediaPlayer.create(this, R.raw.bubble);
            //RESET Button
            wreset = (Button) findViewById(R.id.wreset);
    
            txtCount = (TextView) findViewById(R.id.wcount);
            txtCount.setText(String.valueOf(count));
    
            btnCount = (Button) findViewById(R.id.wclick);
    
            wmute = (Button) findViewById(R.id.wmute);
    
            btnCount.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
    
                    count++;
                    if (count > 50) count = 0;
                    image.setImageResource(R.drawable.duroodimage);
                    if (count > 0) image.setImageResource(R.drawable.duroodimage);
                    if (count > 9) image.setImageResource(R.drawable.zikrimage);
                    if (count > 39) image.setImageResource(R.drawable.duroodimage);
                    txtCount.setText(String.valueOf(count));
                    mpButtonClick.start();
                }
            });
    
            wreset.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    count = 0;
                    image.setImageResource(R.drawable.duroodimage);
                    ;
                    txtCount.setText("0");
                    SharedPreferences.Editor editor = app_preferences.edit();
                    editor.putInt("count", count);
                    editor.commit();
                }
            });
    
    
            wmute.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    if (!mutestatus) {
                        mutestatus = true;
                        audioManager.setMode(AudioManager.MODE_IN_CALL);
                        audioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);
                        Log.v("'test....", "" + mutestatus);
                    } else {
                        mutestatus = false;
                        audioManager.setMode(AudioManager.MODE_NORMAL);
                        audioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, false);
                        Log.v("'test....", "" + mutestatus);
                    }
                }
            });
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            // save count value here
    
            SharedPreferences.Editor editor = app_preferences.edit();
            editor.putInt("count", count);
            editor.commit();
    
        }
    }
    

    您正在保存应用程序级别的首选项,使其特定于活动,即为活动而不是应用程序实现静音功能

    编辑

    看看你的目标是什么,静音和取消静音(雄辩)的音频,首选项可以通过三种方式保存

    1)只能通过单个活动检索首选项。 2)可以在应用程序内的所有活动之间共享和检索首选项。 3) 可以通过设备上的所有应用程序共享和检索首选项。

    在您的情况下,保存活动级别首选项:

    SharedPreferences prefs=getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor=prefs.edit();
            editor.putString("pref 1", "some text");
    
            editor.commit();
    
    我们通过调用getPreferences(int mode)方法获得SharedReferences对象,该方法采用整数值作为参数,模式值可以是以下值之一:

    Context.MODE_PRIVATE(0):一种文件创建模式,使创建的文件只能由具有相同用户ID的应用程序访问(稍后将从相同的应用程序上下文访问该文件)。 Context.MODE_WORLD_READABLE(1):文件模式使文件从其他应用程序中可读。 Context.MODE_WORLD_WRITEABLE(2):文件模式允许其他应用程序写入该文件。 然后,我们得到SharedReferences.Editor的一个实例,并使用Editor.putString(String键,String值)方法编写首选项值。 共享首选项允许您使用以下方法插入首选项:

    editor.putBoolean(String key, boolean value).
    editor.putFloat(String key,float value).
    editor.putInt(String key, int value).
    editor.putLong(String key, long value)
    editor.putString(String key, String value)
    
    然后调用edit.commit()将首选项保存到文件中。commit返回一个布尔值,指示保存的结果,如果成功则返回true,如果失败则返回false

    阅读首选项值: 要读取首选项值,请执行以下操作:

    SharedPreferences prefs=getPreferences(Context.MODE_PRIVATE);
    String val=prefs.getString("pref 1", "some text");
    We use sharedpreferences.getString(String key, String defaultValue) (or get boolean/float/int) to return the value stored with a specific key or defaultValue if not found.
    

    您好,我是Java新手,您能告诉我更多关于如何操作的细节吗?