2016-07-18 19 views
2

アプリケーションが開いている間に音楽ファイルを再生するアプリケーションがありますが、電源ボタンを押しても何らかの理由でサウンドが再生され続けます。電源ボタンを無効にしてプッシュするとメディアプレーヤーを停止する方法はありますか?アンドロイド - "電源ボタン"を押した後にコードを実行する方法

MediaPlayer mp; 

protected void onCreate(Bundle savedInstanceState) { 
... 
... 
mp = MediaPlayer.create(this, mAudio[0]); 
mp.start(); 
... 
... 
} 

電源ボタンを押したときにmp.stop()に電話します。

+1

をオーバーライドする必要があります音?奉仕活動中、活動中? ) –

+0

コードを追加しました: – merstik

答えて

1

onKeyDownを上書きし、それがKEYCODE_POWERかどうかを確認してください。

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) { 
     // Stop the media player here 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

長いプレスでのみ動作します:( – merstik

+0

@merstik申し訳ありませんが、このようなオプションはないようですが、KEYCODE_WAKEUPは動作しませんデバイスがすでに起きている場合は、一度試してみてください。 –

0

このメソッドを追加します。

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) { 
     // stop the media from playing 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

キーが押されている場合は、この方法が有効化されています。どのキーが押されているかチェックし、それに対して反応します。

0

まず、音を一時停止または停止したいときは、まず理解する必要があります。実行したい場合は、を終了/非表示にしてアプリケーションを無効にして、onKeyDownを上書きすることは役に立ちません。私はこのケースでより良いアプローチはなると思う:

protected void onCreate(Bundle onSaveInstanceState) { 
    super.onCreate(onSaveInstanceState); 
    mp = MediaPlayer.create(this, mAudio[0]); 
} 

protected void onStart() { 
    super.onStart(); 
    mp.start(); 
} 

protected void onStop() { 
    super.onStop(); 
    mp.stop(); 
} 

しかし、あなたは電源ボタンが押された場合にのみ、あなたのサウンドを停止したい場合は、[はい、あなたはあなたがプレイする方法を指定してもらえonKeyDown

関連する問題