android 连接蓝牙键盘事件监听

news/2024/11/22 21:04:16/

记一次通过蓝牙键盘触发事件,在对应的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)类型。前者主要用于同步话音传送,后者主要用于分组数据传送。


http://www.ppmy.cn/news/554525.html

相关文章

iPhone手机连接蓝牙鼠标和蓝牙键盘

iPhone手机升级了IOS13之后&#xff0c;无意中发现了一个有趣的功能&#xff1a;“iPhone手机可以连接蓝牙鼠标&#xff01;&#xff01;&#xff01;” 具体方式如下&#xff1a; 首先&#xff0c;要买一个支持蓝牙功能的鼠标&#xff08;我用的罗技M590&#xff09;&#xf…

【无标题】vue中表单绑定v-model

表单绑定v-model 表单控件在实际开发中是非常常见的。特别是对于用户信息的提交&#xff0c;需要大量的表单。 Vue中使用v-model指令来实现表单元素和数据的双向绑定。 案例的解析&#xff1a; 当我们在输入框输入内容时 因为input中的v-model绑定了message&#xff0c;所以会…

android 蓝牙键盘驱动安装失败,Android系统使用蓝牙键盘的问题

类型:源码相关大小:23.6M语言:中文 评分:9.1 标签: 立即下载 最新收到的消息称2.2的系统就可以直接使用 1.最令人期待的功能之一就是在2.2 Froyo中加入了对USB/蓝牙键盘的支持。众所周知,Android系统主要是靠全触控操作来控制,对于一些商务功能(比如快速的输入)就需要硬…

android 蓝牙键盘_如何在您的Android设备上使用蓝牙键盘

android 蓝牙键盘 More and more, people are starting to discover that tablets make decent productivity tools. With devices like the Microsoft Surface and iPad Pro becoming more popular, you may be looking to create something similar with your Android device…

android实现蓝牙键盘,android – 如何与蓝牙键盘通话?

我写了一个连接蓝牙键盘的Android应用程序.它通过BT套接字连接到键盘并获取套接字的输入流. InputStream inStrm socket.getInputStream(); 接下来我尝试读取输入流,但它说没有可用的字节. int nBytesAvail inStrm.available(); // always gives me 0 要么 int dataByte inS…

linux命令行连接蓝牙键盘

在KDE的图形界面连接蓝牙设备非常的方便&#xff0c;图形化点点就行了。 图形化连接 基础 #安装 sudo pacman -S bluez bluez-utils #开机启动 sudo systemctl enable bluetooth.service #立即开启 sudo systemctl start bluetooth.service蓝牙图形化管理工具安装 sudo pa…

【85 backtrader-cs因子测试的一些高级技巧-2】使用cython、c语言和c++加速某些函数的计算

在上一篇文章:【85 backtrader-cs因子测试的一些高级技巧】使用numba加速某些函数的计算中,使用了numba改进某些函数,实现加速,在这一篇文章中,尝试接着上一篇文章的主题,继续尝试用cython,c语言和c++尝试改进decayliear函数的计算速度。 结论: 从图上似乎可以得到下面…

【数据库必备知识】索引和事务

数据库系列文章 1. 零基础带你快速上手SQL语言2. 玩转表及其数据3. 上手表设计 4. 索引和事务 目录 &#x1f4d6;前言 1. 索引 1.1 索引的概念 1.2 索引的作用 1.3 索引的使用场景 1.4 索引的使用 1.5 索引背后的数据结构(B树) 2. 事务 2.1 事务的概念 2.2 数据库使…