質問

以下のコードを使用して、オーディオをストリーミングしている場合を除き、音量ボタンの使用を停止しました(そうでなければ、着信音の音量が迷惑に変

「戻る」を押すと、私の携帯電話のデスクトップに移動する必要があります(または、あなたが期待するように私のアプリを終了します)が、何もしていません。メニューを開くと、「戻る」は必要に応じてメニューを閉じますが、アプリを離れることはできません。

「戻る」ボタンが機能していないため、アプリ内で別のアクティビティを開くと、メイン画面に戻ることができません:)

@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;

}
.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top