Android蓝牙打印服务,Android 模拟蓝牙打印机

本文介绍了如何在Android中模拟蓝牙打印机服务,通过framework代码注入虚拟蓝牙设备,并利用ServerSocket进行蓝牙连接。详细步骤包括在BluetoothSocket.java中创建本地Socket,AdapterProperties.java中注入假设备,以及实现ServerSocket服务端监听和客户端的连接与打印功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1: 思路

百度百科的介绍

所谓蓝牙打印机,就是指在主机端用一单片机来仿真打印机进行工作,截取从主机并口传出的数据及控制信号,并通过蓝牙无线连接传送到打印机端。在打印机侧的单片机则根据所收到的蓝牙数据来仿真主机对打印机进行控制操作,从而实现打印机与主机的蓝牙无线连接.

具体逻辑

由于蓝牙的协议栈比较复杂, 以及蓝牙的状态机相关的代码也比较多, 所以实现的方式可以通过framework代码注入一个假的蓝牙打印机设备, 然后用户可以连接这个打印机。

蓝牙打印机是通过Socket连接的, 所以可以在打开蓝牙的时候, 开启一个ServerSocket, 连接蓝牙打印机的时候, 真实就是连接这个ServerSocket。

注意事项

碰到一个巨坑的BUG, 口碑外卖, 蓝牙打印连接成功, 但是UI没有更新。

最后通过反编译的方式, 发现口碑的UI更新是通过监听蓝牙连接变化的广播实现的。

最后在虚拟蓝牙连接和断开的时候加上相应的广播就可以了。

public static final String ACTION_ACL_CONNECTED =

"android.bluetooth.device.action.ACL_CONNECTED";

public static final String ACTION_ACL_DISCONNECT_REQUESTED =

"android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED";

2: 实现

1: framework修改

Bluetooth

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值