我正在构建一个Android应用,该应用可以检测到连接到移动音频插孔的自拍杆按钮单击。
如果应用程序在前台,而不在后台,则我能够捕获按钮单击。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
Toast.makeText(CustomPadActivity.this, "BUTTON clicked", Toast.LENGTH_SHORT).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
我尝试将广播接收器与操作android.intent.action.MEDIA_BUTTON
一起使用,但它根本没有捕获按钮的单击。
Manifest:
<receiver android:name=".MyReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
还有我的Receiver class:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "BUTTON clicked", Toast.LENGTH_SHORT).show();
}
}
如果要捕捉按钮的点击声,我在某处阅读过需要播放的音乐。该应用不是音频播放器。我不想在应用程序中播放音频。
[我只是想在我的应用程序在后台时捕获自拍杆按钮的点击。
当然是
onKeyEvent仅可以是活动中的回调
服务只是不接收KeyEvent回调。
将意图添加到Activtiy中的AndroidManifest
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
并将其添加到您的活动中,否则它将不会显示在锁定屏幕上。
@Override
public void onAttachedToWindow() {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}