记一次通过蓝牙键盘触发事件,在对应的Activity复写onKeyUp每次按键或长按保证只触发一次

    @Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_TAB:  // 右上角“左右切换”按钮...break;case KeyEvent.KEYCODE_NUMPAD_1: // 用户点击 1...break;case KeyEvent.KEYCODE_NUMPAD_2: // 用户点击 2...break;case KeyEvent.KEYCODE_NUMPAD_3: // 用户点击 3...break;case KeyEvent.KEYCODE_NUMPAD_4: // 用户点击 4...break;case KeyEvent.KEYCODE_NUMPAD_5: // 用户点击 5...break;case KeyEvent.KEYCODE_NUMPAD_6: // 用户点击 6...break;case KeyEvent.KEYCODE_NUMPAD_7: // 用户点击 7...break;case KeyEvent.KEYCODE_NUMPAD_8: // 用户点击 8...break;case KeyEvent.KEYCODE_NUMPAD_9: // 点 9...break;case KeyEvent.KEYCODE_NUMPAD_ADD: // 点“+”...break;case KeyEvent.KEYCODE_NUMPAD_SUBTRACT: // 点“-”...break;case KeyEvent.KEYCODE_NUMPAD_ENTER: // 点“⏎”...break;case KeyEvent.KEYCODE_9:  // 点“[”...break;case KeyEvent.KEYCODE_0:   // 点“]”...break;default:break;}return true;}

注意:不同型号手机事件的keyCode可能不同,例如“=”有可能是KEYCODE_EQUALS或者KEYCODE_NUMPAD_EQUALS

接收系统广播对蓝牙开关以及蓝牙键盘的连接状态进行监听,Activity中动态注册广播

 private BluetoothMonitorReceiver bleListenerReceiver = null;private void registerBluetoothMonitorReceiver(){bleListenerReceiver = new BluetoothMonitorReceiver();IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);registerReceiver(bleListenerReceiver, intentFilter);}

在onDestroy()中解除注册

   @Overridepublic void onDestroy() {super.onDestroy();unregisterReceiver(bleListenerReceiver);}

蓝牙状态监听的广播类

public class BluetoothMonitorReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);if (action != null) {switch (action) {case BluetoothAdapter.ACTION_STATE_CHANGED:int blueState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0);switch (blueState) {case BluetoothAdapter.STATE_ON:Toast.makeText(context, "蓝牙已打开", Toast.LENGTH_SHORT).show();break;case BluetoothAdapter.STATE_OFF:Toast.makeText(context, "蓝牙已关闭", Toast.LENGTH_SHORT).show();break;}break;case BluetoothDevice.ACTION_ACL_CONNECTED:Toast.makeText(context, "蓝牙设备:" + device.getName() + "已连接", Toast.LENGTH_SHORT).show();break;case BluetoothDevice.ACTION_ACL_DISCONNECTED:Toast.makeText(context, "蓝牙设备:" + device.getName() + "已断开", Toast.LENGTH_SHORT).show();break;}}}
}

权限(如果需要在程序中开启或关闭蓝牙还需要admin权限)

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

BLE:一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范后的BLE(Bluetooh Low Energy)蓝牙称为低功耗蓝牙。蓝牙低能耗技术是短距离、低成本、可互操作性的无线技术,它利用许多智能手段最大限度地降低功耗。

ACL:蓝牙基带技术支持两种连接类型:同步定向连接(SCO)类型和异步无连接(ACL)类型。前者主要用于同步话音传送,后者主要用于分组数据传送。

android 连接蓝牙键盘事件监听相关推荐

  1. Android学习按键事件监听与Command模式

    Android学习按键事件监听与Command模式 - Dufresne - 博客园 Android学习按键事件监听与Command模式 一 Command模式 意图: 将一个请求封装为一个对象,从而 ...

  2. Android——按钮的事件监听

    关于Button按钮的四种事件监听方法总结 首先我们在activity_main.xml里面先定义一个Button空间 <RelativeLayout xmlns:android="h ...

  3. Android截屏事件监听

    1. 前言 Android系统没有直接对截屏事件监听的接口,也没有广播,只能自己动手来丰衣足食,一般有三种方法. 利用FileObserver监听某个目录中资源变化情况 利用ContentObserv ...

  4. android按钮怎么事件监听,android 通过监听edittext实现button的点击事件

    如果你没有接第三方的输入设备,那么点击按钮只需找到你的button然后:button.performClick(); 就可以了 那么如果你用到第三方输入法,有些时候监听就没有这么好使了: 以下场景为: ...

  5. android 监听拍照,Android 拍照 截图 事件监听实现

    需求是获得用户截图,或者拍照的主动存图行为. 但是 android 官方没有提供回调广播之类的实现监听,所以需要用另一种方式达到需求,这里实现的就是通过监听media文件夹实现目的. 所需权限: an ...

  6. android 鼠标滚轮事件监听

    /** * Implement this method to handle generic motion events. * 实现该方法来处理一般的MotionEvent: * 一般的motion e ...

  7. android动态监听事件,Android-常见的事件监听

    在Android的开发中,我们会遇到各种各样的事件监听.下面给大家分享一下,希望对Android感兴趣的小伙伴有帮助. Android常见的事件监听 单击事件onClickListener 长按事件o ...

  8. ℃江让您从精通到入门:OnClick事件监听的几种方式

    笔译笔,不如人之比,见一见,不与人为鉴.苍天下, 弃细雨,混泪难断谁更惆:苍穹再,散绸绫,铺洒漫染何出犹. 今天笔者来说下Android中OnClick事件监听的几种书写方式. 匿名内部类的方式 pa ...

  9. Android DownloadManager下载完成事件监听(系列4)

     Android DownloadManager下载完成事件监听(系列4) 我在之前写了写一些关于Android DownloadManager 的文章: (系列1)<Android大数据. ...

最新文章

  1. pythonのgevent同步异步区别
  2. date oracle 表中_从 MySQL 迁移数据到 Oracle 中的全过程
  3. 【CV项目实战】纯新手如何从零开始完成一个工业级图像分割任务的整个流程?...
  4. php curl hostname,php – 如何解决cURL错误(7):无法连接到主机?
  5. python echo命令_如何用Python调用外部命令
  6. apache开源项目 -- tajo
  7. 51nod1432 独木舟
  8. 路由重发布之RIP和OSPF
  9. Android Animation时间插入器Interpolator
  10. linux 中ifconfig命令 结果解释
  11. java中输入输出总结
  12. 多个apple苹果设备(iphone,mac,pad,icloud)之间同步数据
  13. 用VS Code写 Python / Groovy / Kotlin
  14. React入门第一天(绑定事件,动态渲染,修改样式、传参)
  15. Android Jetpack组件之App Startup,源码+原理+手写框架
  16. Semantic UI 之 按钮 button
  17. 蚂蚁金服java二面_蚂蚁金服Java开发二面
  18. 解决nginx error!The page is temporarily unavailable.
  19. 阿里云虚拟主机和服务器的区别
  20. Kettle-时间维度的生成

热门文章

  1. C语言常见的内存错误
  2. 服务器一直在运行却没有人玩的游戏,有哪些服务器一直没关,但是却已经很少有人玩的网络游戏?...
  3. CNN卷积神经网络的学习
  4. 菜鸟裹裹给快递员发福利:万元信用贷 500万激励金红包
  5. 笑容清新甜美 嗓音轻快动人 冉冉成新一代校园初恋
  6. 38岁李光洁二婚小10岁娇妻晒近照,长相甜美颜值高
  7. java根据IP获取当前区域天气信息
  8. [计算几何]-去除重叠的闭合区域(C++)
  9. iOS开发之高斯模糊图片虚化/背景填充效果
  10. 一款html拼图游戏详解