Android 接收蓝牙耳机按键操作

本文介绍如何在Android应用中通过注册接收器监听蓝牙设备的连接状态变化及按键事件,实现对蓝牙断开的响应,并通过Intent处理媒体播放控制键。文章详细解释了在AndroidManifest.xml中添加蓝牙权限的必要性,以及如何利用IntentFilter注册接收器来捕捉特定类型的系统消息。

http://blog.chinaunix.net/uid-27875-id-3287837.html

 
3 import android.bluetooth.BluetoothAdapter;
4 import android.content.BroadcastReceiver;
5 import android.content.Context;
6 import android.content.Intent;
7 import android.view.KeyEvent;
8  
9 public class MediaButtonReceiver extends BroadcastReceiver
10 {
11     @Override
12     public void onReceive(Context context, Intent intent)
13     {
14         if(intent.getAction().equals(BluetoothDevice.ACTION_ACL_DISCONNECTED))
15             ;  //此处填写蓝牙断开或连接时执行的动作
16         else
17         {//若上面的代码出现问题,则将其屏蔽即可,下列代码没有问题
18             abortBroadcast();  //不知其功能,但不执行或位置不正确会导致下列代码失效
19  
20             KeyEvent key = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
21             if (key.getAction() == KeyEvent.ACTION_UP)
22             {
23                 int keycode = key.getKeyCode();
24                 if (keycode == KeyEvent.KEYCODE_MEDIA_NEXT)
25                 {
26                     ;  //下一首按键
27                 }
28                 else if (keycode == KeyEvent.KEYCODE_MEDIA_PREVIOUS)
29                 {
30                     ;  //上一首按键
31                 }
32                 else if (keycode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)
33                 {
34                     ;  //播放/暂停按键
35                 }
36                 //还可以添加更多按键操作,可以参阅 KeyEvent 类
37             }
38         }
39     }
40 }

单独这样一个监听的类还是无法工作的,必须在程序开头有这样的定义:

1 MediaButtonReceiver mBtnReceiver = new MediaButtonReceiver();
2  
3 IntentFilter ittFilterButton = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); //控制键
4 registerReceiver(mBtnReceiver, ittFilterButton);
5  
6 IntentFilter ittFilterBluetooth = newIntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED);  //蓝牙断开
7 registerReceiver(mBtnReceiver, ittFilterBluetooth);

这段代码的意思是为你的程序向系统注册一个接收系统消息的监听器,使你的程序能够接收系统消息。
当然,仅仅这么做还不够,你会发现,现在按键已经能够正确处理了,但是蓝牙断开似乎无法经过你的语句。
没错,因为我们还没有添加蓝牙的权限。
那么,在 AndroidManifest.xml 中添加一个蓝牙的普通权限即可。

1 <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值