本文假设读者拥有基本的 Android 编程知识。
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; |
9 | public class MediaButtonReceiver extends BroadcastReceiver |
12 | public void onReceive(Context context, Intent intent) |
14 | if(intent.getAction().equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) |
17 | {//若上面的代码出现问题,则将其屏蔽即可,下列代码没有问题 |
18 | abortBroadcast(); //不知其功能,但不执行或位置不正确会导致下列代码失效 |
20 | KeyEvent key = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); |
21 | if (key.getAction() == KeyEvent.ACTION_UP) |
23 | int keycode = key.getKeyCode(); |
24 | if (keycode == KeyEvent.KEYCODE_MEDIA_NEXT) |
28 | else if (keycode == KeyEvent.KEYCODE_MEDIA_PREVIOUS) |
32 | else if (keycode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE) |
36 | //还可以添加更多按键操作,可以参阅 KeyEvent 类 |
单独这样一个监听的类还是无法工作的,必须在程序开头有这样的定义:
1 | MediaButtonReceiver mBtnReceiver = new MediaButtonReceiver(); |
3 | IntentFilter ittFilterButton = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); //控制键 |
4 | registerReceiver(mBtnReceiver, ittFilterButton); |
6 | IntentFilter ittFilterBluetooth = newIntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED); //蓝牙断开 |
7 | registerReceiver(mBtnReceiver, ittFilterBluetooth); |
这段代码的意思是为你的程序向系统注册一个接收系统消息的监听器,使你的程序能够接收系统消息。
当然,仅仅这么做还不够,你会发现,现在按键已经能够正确处理了,但是蓝牙断开似乎无法经过你的语句。
没错,因为我们还没有添加蓝牙的权限。
那么,在 AndroidManifest.xml 中添加一个蓝牙的普通权限即可。
阅读(7230) | 评论(5) | 转发(0) |