android设备连接蓝牙按键/蓝牙键盘,导致Activity重启问题

android设备在连接蓝牙键盘时,由于系统检测到键盘类型发生了改变,会关闭当前Activity并重新执行oncreate启动Activity,导致界面发生不可预估问题。

只需要在Manifest中的指定Activity加入configChanges属性

android:configChanges="fontScale|keyboard|keyboardHidden|locale|orientation|screenLayout|uiMode|screenSize|navigation"

其中keyboard表示键盘类型发生了改变,比如用户使用了外接键盘。

而在实际测试过程中navigation属性是否添加对界面也存在一定影响,需要一并添加。

加入这两条属性后连接键盘后就不会导致Activiy重启。

 

 

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
要在Android上实现连接蓝牙HID设备,你可以按照以下步骤进行操作: 1. 添加权限和特性:在AndroidManifest.xml文件中,添加以下权限和特性: ```xml <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> ``` 2. 初始化蓝牙适配器:在你的Activity或Fragment中,使用BluetoothAdapter获取默认的蓝牙适配器: ```java BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); ``` 3. 打开蓝牙:检查蓝牙是否已经启用,如果没有启用则请求用户启用蓝牙: ```java if (!bluetoothAdapter.isEnabled()) { Intent enableBluetoothIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBluetoothIntent, REQUEST_ENABLE_BT); } ``` 4. 搜索并配对蓝牙设备:使用BluetoothAdapter的startDiscovery方法来搜索附近的蓝牙设备,并使用BluetoothDevice的createBond方法来配对设备: ```java private BroadcastReceiver bluetoothReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); // 配对设备 if (device.getBondState() != BluetoothDevice.BOND_BONDED) { device.createBond(); } } } }; ... IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); registerReceiver(bluetoothReceiver, filter); bluetoothAdapter.startDiscovery(); ``` 5. 连接HID设备:使用BluetoothSocket与蓝牙设备建立连接,并通过输入输出流与设备进行通信: ```java BluetoothSocket socket = device.createRfcommSocketToServiceRecord(MY_UUID); socket.connect(); InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); // 通过输入输出流与设备进行通信 ``` 请注意,上述代码仅为示例,你需要根据你的具体需求进行适当的修改和错误处理。此外,还需在AndroidManifest.xml文件中声明相关的广播接收器和服务。 希望这些信息对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值