我正在构建一个 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
的广播接收器,但它根本没有捕获按钮点击。
list :
<receiver android:name=".MyReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
还有我的接收器类:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "BUTTON clicked", Toast.LENGTH_SHORT).show();
}
}
我在某处读到,如果我想捕获按钮点击,我需要播放一段音乐。该应用程序不是音频播放器。我不想在应用中播放音频。
我只是想在我的应用程序在后台时捕获自拍杆按钮的点击。
最佳答案
这是当然的
onKeyEvent only can be callbacks in the activity
服务根本不接收 KeyEvent 回调。
在 Activtiy 中向 AndroidManifest 添加 Intent
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
并将其添加到您的 Activity 中,否则它将不会显示在您的锁定屏幕上。
@Override
public void onAttachedToWindow() {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}
关于java - Android:当我的应用程序处于后台时,如何检测自拍杆按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60557437/