unmute按钮java android的问题

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

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

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

  2. 第二个问题是,当您单击静音按钮并退出屏幕,然后返回,然后尝试取消静音 – 它不会取消静音。

我认为解决这个问题的方法是我们将静音按钮从SharedPreferences保存实例状态中取出 – 如果可能的话……

到目前为止,这是我的代码,如果你可以指导我如何实现上述那将是伟大的。 谢谢。

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(); } } 

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

编辑

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

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)方法获取SharedPreferences对象,该方法将整数值作为参数,模式值可以是以下之一:

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

 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. 

资源