android-上書きされた音量ボタンは、戻るボタンに影響を与えていますか?
-
12-11-2019 - |
質問
以下のコードを使用して、オーディオをストリーミングしている場合を除き、音量ボタンの使用を停止しました(そうでなければ、着信音の音量が迷惑に変
「戻る」を押すと、私の携帯電話のデスクトップに移動する必要があります(または、あなたが期待するように私のアプリを終了します)が、何もしていません。メニューを開くと、「戻る」は必要に応じてメニューを閉じますが、アプリを離れることはできません。
「戻る」ボタンが機能していないため、アプリ内で別のアクティビティを開くと、メイン画面に戻ることができません:)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Suppress the use of the volume keys unless we are currently listening to the stream
if(keyCode==KeyEvent.KEYCODE_VOLUME_UP) {
if(StreamService.INT_PLAY_STATE==0){
return true;
}else{
return false;
}
}
if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN) {
if(StreamService.INT_PLAY_STATE==0){
return true;
}else{
return false;
}
}
return false;
なぜこれが起こっているのですか?
解決
テストしていませんが、Super.onkeyDownを呼び出している他のものを含める必要があると思います。
if(keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
code
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
more code
} else {
super.onKeyDown(keyCode, event);
}
.
それ以外の場合は、すべてのキーコードをキャプチャし、ボリュームコードをチェックしてからfalseを返します。
他のヒント
ボリュームキーが常にメディアボリュームを制御するようにするより簡単で堅牢な方法は、この行をアクティビティの中に挿入することです onCreate()
:
setVolumeControlStream(AudioManager.STREAM_MUSIC);
dude、そのアクティビティ上のオーディオコンテキストをメディアボリュームに変更するだけです。
http://developer.android.com/reference/android/media/AudioManager.html
編集:
private AudioManager audio;
.
閉鎖内の内側:
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
.
Override OnkeyDown:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
return true;
default:
return false;
}
}
. public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
//your code
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
//your code
return true;
} else {
super.onKeyDown(keyCode, event);
}
return true;
}
. 所属していません StackOverflow