Android:当我的应用程序在后台时如何检测自拍杆按钮单击

问题描述 投票:1回答:1

我正在构建一个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();
    }

}

如果要捕捉按钮的点击声,我在某处阅读过需要播放的音乐。该应用不是音频播放器。我不想在应用程序中播放音频。

[我只是想在我的应用程序在后台时捕获自拍杆按钮的点击。

java android kotlin broadcastreceiver
1个回答
0
投票

当然是

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.