アプリがバックグラウンドかフォアグラウンドかに関係なく、音量ボタンを長押ししたときに特定のことを行う機能をユーザーに提供したいアプリケーションに取り組んでいます。
また、電話の画面がオフのときにこの機能を実装したいのですが、スタックオーバーフローの投稿では、それはできないと言われています。
音量ボタンの押下検出にブロードキャストリスナーを使用android.media.VOLUME_CHANGED_ACTION
しましたが、アプリがバックグラウンドであっても問題なく動作しますが、これらのボタンの長押しを検出したいということです。
このコードをブロードキャストに含めて、上または下のボタンが長時間押されたことを検出できるようにするにはどうすればよいですか。
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
// Do something here...
// Needed to track long presses
Log.e("Main activity", "KEYCODE_VOLUME_UP");
return true;
}
return super.onKeyDown(keyCode, event);
}
これは私の放送受信機です
intentfliter = new IntentFilter("android.media.VOLUME_CHANGED_ACTION");
mReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.e("Main activity", "Volume button press");
}
};
getApplicationContext().registerReceiver(mReceiver, intentfliter);
manager.registerMediaButtonEventReceiver(getCallingActivity());
}