oobeng 2016-06-13 08:42 采纳率: 0%
浏览 3069
已结题

耳机按键事件中音量加减这两个按键事件的怎么获取?

网上找的demo是在manifest里设置接收下面两个Action,并把优先级设为最高

<action android:name="android.intent.action.MEDIA_BUTTON"/>
<action android:name="android.media.AUDIO_BECOMING_NOISY" /> 

然后重写BroadcastReceiver的onReceive函数,获取Intent.Action_Media_Button的事件:

 public void onReceive(Context context, Intent intent) {
        if(Intent.ACTION_MEDIA_BUTTON.equals(intentAction)){
            KeyEvent keyEvent = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); //获得KeyEvent对象
            int keyCode = keyEvent.getKeyCode();
                        Log.i(TAG,keyCode+"");
                        }
     }

但经过测试只能得到keycode-headsethook这个按键,也就是播放键的按键事件。按播放键可以输出对应的keycode。音量加与音量减的事件都接收不到,触发的还是系统的调整音量。

有没有大神做过这方面的app呢,麻烦给个demo参考一下,或者告知一下这方面的api要怎么找。
官方文档里我去找了一下,Intent.ACTION_MEDIA_BUTTON的说明是Broadcast Action: The "Media Button" was pressed。不清楚是只针对播放键的还是三个按键都包括。
唔,忘了C币一般是悬赏多少了,先放10个吧,能解决的话会追加的,谢谢各位大神。

  • 写回答

4条回答 默认 最新

  • 世外大帝 博客专家认证 2016-06-13 09:30
    关注

    和你找的demo差不多,在接收者里监听按键
    @Override
    public boolean onKeyDown (int keyCode, KeyEvent event) {
    // 获取手机当前音量值
    int i = getCurrentRingValue ();
    switch (keyCode) {
    // 音量减小
    case KeyEvent.KEYCODE_VOLUME_DOWN:
    Toast.makeText (Activity03.this, "当前音量值: " + i, Toast.LENGTH_SHORT).show ();
    return true;
    // 音量增大
    case KeyEvent.KEYCODE_VOLUME_UP:
    Toast.makeText (Activity03.this, "当前音量值: " + i, Toast.LENGTH_SHORT).show ();
    return true;
    }
    return super.onKeyDown (keyCode, event);
    }

    不知道你要的是不是这个?

    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作