【发布时间】:2012-08-17 18:24:35
【问题描述】:
我的设备使用 OBEX 对象推送配置文件 (OPP) 通过蓝牙发送数据。
使用 adb logcat 我看到我的 android 设备收到了一个连接(但中止了这个连接?)
08-22 11:14:37.939: I/BtOppRfcommListener(22586): Accepted connectoin from 00:07:CF:5F:52:A0
08-22 11:14:37.939: I/BtOpp Service(22586): Start Obex Server
08-22 11:14:38.109: D/Obex ServerSession(22586): java.io.IOException: Software caused connection abort
08-22 11:14:38.109: D/PowerManagerService(180): @PowerManagement: 'BtOppObexServer' releaseWakeLock when screen locked
08-22 11:14:39.219: D/BluetoothEventLoop(180): Device property changed: 00:07:CF:5F:52:A0 property: Connected value: false
当我安装蓝牙文件传输(市场上的免费应用程序)时,我就可以接收文件了。 但我不想安装其他应用程序。
【问题讨论】:
-
您能否发布有问题的代码,以便有关 SO 的 android 专家可以查看该问题?
-
@domsom 我已经尝试过类似的代码但没有成功。 IMO 的问题似乎是本机蓝牙仍在接受传入的 OPP 数据并且自定义代码没有被触发。因此,该解决方案不仅涉及侦听传入连接,还涉及向本机蓝牙“注册”,以便调用自定义 OPP 处理程序。
-
@DavidO'Meara 我同意:如果监听蓝牙套接字/通道绑定到系统服务,你不能重新注册到你自己的代码(它只能绑定一次,你无法从您的无根应用程序中终止系统服务)。据我所知(但实际上没有搜索过),您也无法使用系统服务注册“传入的 OBEX 传输”事件。这就是为什么链接中的人想出了适用于他的特定场景(即知道远程设备)的解决方法。