我正在尝试创建一个应用程序来切换铃声音量。但是,当我使用音量按钮更改铃声卷时,我的活动不会被中断,因此它不会识别更改。是否有任何方法可以促进这一点。public void onWindowFocusChanged(boolean)方法不将弹出视为焦点更改,任何常规的活动OnResume()等方法也不起作用。
代码:
public class MainActivity extends ActionBarActivity {
private AudioManager mAudioManager;
private boolean mPhoneIsSilent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
CheckIfPhoneIsSilent();
setButtonClickListener();
toggleUi();
}
public void onWindowFocusChanged(boolean tryi)
{
CheckIfPhoneIsSilent();
toggleUi();
}
private void setButtonClickListener(){
Button toggleButton = (Button)findViewById(R.id.toggleButton);
toggleButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mPhoneIsSilent){
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
mPhoneIsSilent=false;
}
else{
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
mPhoneIsSilent=true;
}
toggleUi();
}
});
}
private void CheckIfPhoneIsSilent() {
int ringerMode = mAudioManager.getRingerMode();
if(ringerMode == AudioManager.RINGER_MODE_SILENT){
mPhoneIsSilent= true;
}
else {
mPhoneIsSilent = false;
}
}
private void toggleUi()
{
ImageView pic = (ImageView)findViewById(R.id.phone_icon);
Drawable newPhoneImage;
if (mPhoneIsSilent){
newPhoneImage = getResources().getDrawable(R.drawable.phone_silent);
}
else {
newPhoneImage = getResources().getDrawable(R.drawable.phone_on);
}
pic.setImageDrawable(newPhoneImage);
}
protected void OnResume() {
super.onResume();
CheckIfPhoneIsSilent();
toggleUi();
}发布于 2014-07-29 20:49:57
也许你可以在你的活动中听音量键按下?而不是试图预测是否会出现卷的弹出。您可以通过在您的活动中重写onKeyDown方法来做到这一点。然后,您可以侦听音量上升或下降的键代码。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean result = true;
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
// Handle Volume Down
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
// Handle Volume Up
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) {
// Handle Volume Mute
} else {
// Perform default behavior
result = super.onKeyDown(keyCode, event);
}
// True means you handled it and it no longer needs to be bubbled up
return result;
}https://stackoverflow.com/questions/25021186
复制相似问题