我正在尝试接收物理按钮事件,例如手机侧面的音量按钮点击.我需要在服务中执行此操作,因为如果用户随时单击"音量调高/调低"按钮,我希望收到该消息.我在网上看了很多,但我不能让它工作,不知道什么是错的.这是我的代码:
在清单中:
<receiver android:name=".clsMediaButtonReceiver" >
<intent-filter android:priority="1000" >
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
在服务OnStart()中:
AudioManager manager = (AudioManager) getSystemService(AUDIO_SERVICE);
manager.registerMediaButtonEventReceiver(new ComponentName(getPackageName(), clsMediaButtonReceiver.class.getName()));
Run Code Online (Sandbox Code Playgroud)
一个broascastreceiver:
public class clsMediaButtonReceiver extends BroadcastReceiver
{
@Override public void onReceive(Context context, Intent intent)
{ //This is never shown
Toast toast1 = Toast.makeText(Context, intent.getAction(), Toast.LENGTH_SHORT);
toast1.show();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
我添加<action android:name="android.media.VOLUME_CHANGED_ACTION" />到我的意图过滤器,现在我得到了音量键事件.我还没弄明白如何在我的应用程序中正确分发它们...希望它有所帮助!
我和你有同样的问题,想知道你是否解决了。与我的代码的区别在于我\xc2\xb4ve在另一个类中的broadcastReceiver类。像这样的东西:
\n\npublic class MyClass extends Activity \n{\n /// Code\n\n public class MediaButtonReceiver extends BroadcastReceiver\n {\n @Override\n public void onReceive(Context context, Intent intent)\n {\n /// Code\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n和清单:
\n\n<receiver android:name="net.mypackage.MyClass.MediaButtonReceiver">\n <intent-filter android:priority="1000" >\n <action android:name="android.intent.action.MEDIA_BUTTON" /> \n </intent-filter>\n</receiver>\nRun Code Online (Sandbox Code Playgroud)\n\n感谢您的帮助
\n| 归档时间: |
|
| 查看次数: |
8905 次 |
| 最近记录: |