android - 服务中的关键倾听者

标签 android service background volume keylistener

我是 android 的新手,我广泛搜索了这个。任何帮助将非常感激:) 我需要一个执行以下操作的应用程序:

作为监听音量键(UP/Down)的服务在后台运行的应用程序。在这个事件中,一个 Activity 将显示在前台。

[我可以通过 Activity 执行此操作,但是该 Activity 必须在前台,并且只有在我按下音量按钮后我才会 toast 。]

请帮助!!!

最佳答案

您可以创建一个监听 android.intent.action.MEDIA_BUTTON 的 BroadcastReceiver 并注册一个 intent 过滤器来监听它:

<receiver android:name=".RemoteControlReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
    </intent-filter>
</receiver>

然后在您的接收器中处理更改:

public class RemoteControlReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
            KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
            if (KeyEvent.KEYCODE_VOLUME_DOWN == event.getKeyCode()) {
                // Handle key press.
            }
        }
    }
}

请看https://developer.android.com/training/managing-audio/volume-playback.html了解更多信息(此代码取自那里)

编辑:固定 KeyEvent 键代码常量

关于android - 服务中的关键倾听者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19345705/

相关文章:

android - 如何停止服务本身?

c# - 我可以从共享接口(interface)继承我的 WCF DataContract 吗?

android - 服务未初始化,返回 NullPointerException

jquery.css 背景图片不附加

android - Voice Listen API 在后台使用更多电量

android - 如何在android中更改EditText提示颜色

android - 我无法在 fragment 中使用 kotlin 定义 supportFragmentManager

android - 从包中获取字符串 android 返回 null

android - 估计 iBeacon : Monitoring in background (Android)

java - AsyncTask 必须是抽象的