java android中取消静音按钮的问题
我正在创建一个简单的点击计数器android应用程序,点击按钮时会播放声音,离开计数屏幕然后返回时也会保存计数 我遇到了静音按钮的问题。当我单击它时,它会使整个应用程序静音,而不仅仅是特定的gui屏幕(活动)java android中取消静音按钮的问题,java,android,Java,Android,我正在创建一个简单的点击计数器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新手,您能告诉我更多关于如何操作的细节吗?