Android 接收蓝牙耳机按键操作

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

你可能感兴趣的:(Android 接收蓝牙耳机按键操作)