【发布时间】:2015-02-26 09:10:31
【问题描述】:
在 Android 上使用 Delphi XE7,我通过蓝牙经典 SPP 设备连接。
我有一个JBluetoothSocket
var
Sock: JBluetoothSocket;
uid: JUUID; // UUID for SPP traffic
targetMAC: string; // remote MAC address of the selected
remoteDevice: JBluetoothDevice;
Adapter: JBluetoothAdapter; // Local BLUETOOTH adapter
begin
Adapter := TJBluetoothAdapter.JavaClass.getDefaultAdapter;
targetMAC := ....;
remoteDevice := Adapter.getRemoteDevice(stringtojstring(targetMAC));
uid := TJUUID.JavaClass.fromString(stringtojstring('00001101-0000-1000-8000-00805F9B34FB'));
Sock := remoteDevice.createInsecureRfcommSocketToServiceRecord(uid);
end;
一旦蓝牙设备重新启动,JBluetoothSocket 流将无法再读取,因为套接字失败。所以我想在连接失败后立即重新连接。
我尝试了以下方法,但它不起作用:
if Sock.isConnected then
begin
TryReconnect;
end;
我们还发现,电话 CAT B15 始终返回 Sock.isConnected = False,即使已连接,因为此功能似乎没有在他们的 BT 堆栈中实现...
我听说我可能需要收看广播ACL_DISCONNECTED,但我没有找到解决方案如何在 Firemonkey 中完成。
【问题讨论】:
标签: android delphi bluetooth delphi-xe7