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; |
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 中添加一个蓝牙的普通权限即可。
- Android(安卓)Ble蓝牙开发内存泄漏
- android.hardware.USB类介绍
- Arduino 制作蓝牙开关
- Android拦截HOME按键
- [Android开发实用技巧] Android模拟器打开实体按键
- input 按键分发
- 【高通SDM660平台 Android(安卓)10.0】(19) --- Camera_focus、C
- android ble蓝牙开发略解
- 蓝牙操作 Bluetooth
随机推荐
-
android中使用startActivityForResult回
-
Android(安卓)数据库更新 onupgrade
-
android之AsyncTask异步加载的简介(一)
-
SwitchButton 开关按钮 的多种实现方式 (
-
Android(安卓)TextView标点符号换行问题(
-
Android(安卓)将应用加入到分享列表 跳转
-
Android概述(自学笔记)
-
android语音即时通讯之录音、播放功能实
-
Android9.0万年历毕业设计H5小应用webvie
-
杂记-Android(安卓)Studio 2.2 新功能