我们正在编写一个应用程序,其中数字笔与 Android 设备配对,然后笔将文件上传到 Android 设备。我们在不同设备之间存在不一致的行为,并希望有一个一致的解决方案。理想情况下,我们会拦截传入的文件并管理应用程序中的二进制数据。
- 在 Galaxy S (2.2) 和 Galaxy Tablet (2.2) 上,当通过蓝牙接收文件时,它会提示用户接受文件,但在那个阶段它包含一个复选框,以便从那时起自动接受文件。
- 在 HTC Desire (2.2) 上,当从数字笔发送文件时会提示用户,但每次发送文件时用户必须手动接受文件。如果用户不及时接受,则文件丢失。
我们想要的是一致的行为,用户不需要手动接受每个文件。
我们也尝试了几种解决方案,例如
- 监听传入的文件蓝牙连接,
- 实施我们自己的
BroadcastReceiver
, - 并尝试让 Android 设备充当蓝牙服务器,然后手动拦截文件。(类似于BluetoothChat示例应用程序)
...但没有任何运气。我们能够从蓝牙 Intent 触发 Activity,但似乎 OBEX 文件传输发生在 Android 设备工作中的较低级别并且无法被拦截。
我们还存在标准蓝牙/OBEX 实现写入不同位置的问题,具体取决于供应商
/mnt/sdcard/bluetooth
三星/mnt/sdcard/Downloads/bluetooth
为宏达电。
...但这是一个较小的问题,可以通过首选项进行管理。