- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我面临与上一个(未回答的)问题相同的问题,我在犹豫是否要对其进行编辑,因为我想添加更多信息。所以这是相关的问题:Android bluetooth connection fails (Error: no bt sock found, scn 1) .
尝试建立蓝牙连接时发生错误。 I 并不总是出现(为什么?),但它非常频繁。我正在使用 Eclipse Indigo 为 Android 2.3 编写此应用程序。
这是我在出现错误之前进行连接时得到的日志(似乎在错误发生之前连接成功):
03-29 15:14:52.205: D/BLZ20_ASOCKWRP(22027): asocket_connect
03-29 15:14:52.205: I/BLZ20_WRAPPER(22027): blz20_wrp_connect: s 53
03-29 15:14:52.205: D/BLZ20_WRAPPER(22027): blz20_wrp_connect: fd (-1:53), bta -1, rc 0, wflags 0x0, cflags 0x0, port 0
03-29 15:14:52.205: I/BLZ20_WRAPPER(22027): __connect_prot_rfcomm: connecting to... 0440201b0800, rc chan 1
03-29 15:14:52.205: I/BLZ20_WRAPPER(22027): __connect_prot_rfcomm: non blocking mode
03-29 15:14:52.205: I/BTL_IFC(22027): send_ctrl_msg: [BTL_IFC CTRL] send BTLIF_BTS_RFC_CON_REQ (BTS) 23 pbytes (hdl 52)
03-29 15:14:52.205: D/BLZ20_WRAPPER(22027): blz20_wrp_connect: success
03-29 15:14:52.205: I/BLZ20_WRAPPER(22027): blz20_wrp_poll: nfds 2, timeout -1 ms
03-29 15:14:52.205: D/BLZ20_WRAPPER(22027): blz20_wrp_poll: pending connect fd (-1:53), bta -1, rc 1, wflags 0x0, cflags 0x1, port 0
03-29 15:14:52.205: D/BLZ20_WRAPPER(22027): btlif_wait_response: id(s) |BTLIF_BTS_RFC_CON_RSP|BTLIF_BTS_RFC_DISC_IND|
03-29 15:14:52.920: I/BTL_IFC(22027): btl_ifc_ctrl_rx: [BTL_IFC CTRL] recv BTLIF_BTS_RFC_CON_RSP (BTS) 22 pbytes (hdl 52)
03-29 15:14:52.920: I/BLZ20_WRAPPER(22027): btlif_ctrl_callback: btlif_ctrl_callback : msg id BTLIF_BTS_RFC_CON_RSP
03-29 15:14:52.920: E/BLZ20_WRAPPER(22027): ##### ERROR : btlif_process_con_rsp: no bt sock found, scn 1#####
这是我在连接失败时得到的日志(但没有错误)
03-29 15:20:37.100: D/BLZ20_ASOCKWRP(22027): asocket_abort [44,45,46]
03-29 15:20:37.100: I/BLZ20_WRAPPER(22027): blz20_wrp_shutdown: s 44, how 2
03-29 15:20:37.100: D/BLZ20_WRAPPER(22027): blz20_wrp_shutdown: fd (-1:44), bta -1, rc 0, wflags 0x0, cflags 0x0, port 0
03-29 15:20:37.100: I/BLZ20_WRAPPER(22027): blz20_wrp_shutdown: shutdown socket
03-29 15:20:37.100: D/BLZ20_WRAPPER(22027): blz20_wrp_write: wrote 1 bytes out of 1 on fd 46
03-29 15:20:37.100: D/BLZ20_ASOCKWRP(22027): asocket_destroy
03-29 15:20:37.100: D/BLZ20_ASOCKWRP(22027): asocket_abort [44,45,46]
03-29 15:20:37.100: I/BLZ20_WRAPPER(22027): blz20_wrp_shutdown: s 44, how 2
03-29 15:20:37.100: D/BLZ20_WRAPPER(22027): blz20_wrp_shutdown: fd (-1:44), bta -1, rc 0, wflags 0x0, cflags 0x0, port 0
03-29 15:20:37.100: I/BLZ20_WRAPPER(22027): blz20_wrp_shutdown: shutdown socket
03-29 15:20:37.100: D/BLZ20_WRAPPER(22027): blz20_wrp_write: wrote 1 bytes out of 1 on fd 46
03-29 15:20:37.100: I/BLZ20_WRAPPER(22027): blz20_wrp_close: s 46
03-29 15:20:37.100: D/BLZ20_WRAPPER(22027): blz20_wrp_close: std close (46)
03-29 15:20:37.100: I/BLZ20_WRAPPER(22027): blz20_wrp_close: s 45
03-29 15:20:37.100: D/BLZ20_WRAPPER(22027): blz20_wrp_close: std close (45)
03-29 15:20:37.100: I/BLZ20_WRAPPER(22027): blz20_wrp_close: s 44
03-29 15:20:37.100: D/BLZ20_WRAPPER(22027): blz20_wrp_close: fd (-1:44), bta -1, rc 0, wflags 0x0, cflags 0x0, port 0
03-29 15:20:37.100: I/BLZ20_WRAPPER(22027): __close_prot_rfcomm: fd 44
03-29 15:20:37.100: I/BTL_IFC(22027): send_ctrl_msg: [BTL_IFC CTRL] send BTLIF_BTS_RFC_CLOSE (BTS) 8 pbytes (hdl 52)
03-29 15:20:37.100: D/BTL_IFC_WRP(22027): wrp_close_s_only: wrp_close_s_only [44] (44:-1) []
03-29 15:20:37.100: D/BTL_IFC_WRP(22027): wrp_close_s_only: data socket closed
03-29 15:20:37.100: D/BTL_IFC_WRP(22027): wsactive_del: delete wsock 44 from active list [ad439320]
03-29 15:20:37.100: D/BTL_IFC_WRP(22027): wrp_close_s_only: wsock fully closed, return to pool
03-29 15:20:37.100: D/BLZ20_WRAPPER(22027): btsk_dump_list: fd (-1:53), bta -1, rc 1, wflags 0x900, cflags 0x0, port 0
03-29 15:20:37.100: D/BLZ20_WRAPPER(22027): btsk_free: success
在调试的过程中,我发现用于建立连接的ConnectThread
在错误的情况下一直在运行,这意味着它进入了一个死循环。因此,如果另一个 Thread
试图取消并完成此 ConnectThread
,应用程序将崩溃。
请在此处查看此 ConnectThread
的源代码,它是 Service
的内部类(与 BluetoothChat 示例非常相似):
/**
* This thread runs while attempting to make an outgoing connection
* with a device. It runs straight through; the connection either
* succeeds or fails.
*/
private class ConnectThread extends Thread
{
private final BluetoothSocket mmSocket;
private final BluetoothDevice mmDevice;
public ConnectThread(BluetoothDevice device)
{
mmDevice = device;
// Use a temporary object that is later assigned to mmSocket,
// because mmSocket is final
BluetoothSocket tmp = null;
// Get a BluetoothSocket to connect with the given BluetoothDevice
try
{
// SerialPortServiceClass_UUID is the app's UUID string, also
// used by the server code
tmp = device.createRfcommSocketToServiceRecord(SerialPortServiceClass_UUID);
} catch (IOException e)
{
if (D) Log.e(TAG, "create RFCOMM failed", e);
// here I do something to notify the UI that the connection has failed
// Reset the ConnectThread because the connection has failed
synchronized (DataReceiverService.this)
{
mConnectThread = null;
}
}
mmSocket = tmp;
}
public void run()
{
if (D) Log.i(TAG, "BEGIN mConnectThread");
setName("ConnectThread");
// Cancel discovery because it will slow down the connection
mBtAdapter.cancelDiscovery();
try
{
// Connect the device through the socket. This will block
// until it succeeds or throws an exception
mmSocket.connect();
} catch (IOException connectException)
{
// Unable to connect, close the socket and get out
try {
mmSocket.close();
} catch (IOException closeException)
{
if (D) Log.e(TAG, "unable to close() socket during connection failure", closeException);
}
// here I do something to notify the UI that the connection has fqiled
return;
}
// Reset the ConnectThread because we're done
synchronized (DataReceiverService.this)
{
mConnectThread = null;
}
// Do work to manage the connection (in the ConnectedThread)
connected(mmSocket, mmDevice);
}
/** Will cancel an in-progress connection, and close the socket */
public void cancel()
{
try {
mmSocket.close();
} catch (IOException e)
{
if (D) Log.e(TAG, "close() of connect socket failed", e);
}
}
}
最佳答案
检查这个http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html
蓝牙设备
代表一个远程蓝牙设备。使用它通过 BluetoothSocket 请求与远程设备的连接或查询有关设备的信息,例如设备的名称、地址、类别和绑定(bind)状态。
关于Android 蓝牙连接错误(未找到 bt sock,scn 1)-无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9922328/
我正在 iOS 上开发一个视频播放器项目。 它使用 AVFoundation提取 CVPixelBuffer从视频文件中提取,然后将该缓冲区作为纹理发送到 OpenGL。 概念验证代码的灵感来自 Ap
我有一个应用程序可选地需要 BT - 所以我把 在 list 中。 问题是这会过滤掉所有没有 BT 的 Android 设备。 但我需要让它成为可选的!因此,它们应该仍然兼容,以便用户可以从 Go
如果蓝牙配对请求不被接受或取消,我必须为它设置一个超时时间!! It's mentioned that i have to use the timeout defined by Bluetooth s
忘记密码是一件再常见不过的事情了。遇到这样的情况大家也不必太着急和惊慌,我们来具体给大家分析一下。一般情况下宝塔面板忘记用户名和密码的情况不外乎这两种情况: 1、面板刚安装好,不小心关掉了ssh工
宝塔面板如何设置自定义 404 页面?大家知道,默认的 404 页面对搜索引擎不友好,那怎么通过宝塔面板修改默认的 404 页面,使之变成我们自定义的 404 页面呢。 1、进入宝塔面板,找到对应
为android设备的蓝牙名称定义最大长度的目的是什么? I have an android device and I could name the BT with a name of unlimit
我对java很陌生,我有一个任务来实现心跳机制来监控BT芯片的活跃度。 BT芯片每5秒通过uart接口(interface)不断发送一条空消息(只有消息ID,没有内容),必须由java模块读取。如果未
我正在开发一个需要 BT 连接的 Android 应用程序。阅读 Android 开发者页面后,给定的方法(例如 isEnabled())不起作用。错误是无法解析符号isEnabled。导入的库是an
我是 Android 新手。我想开发一个带有操作栏溢出菜单的页面。我的模拟器显示正确。但我在手机中看不到它。 Android 版本为 4.1.2 的手机请帮帮我.... Android list
我已经使用 Apache cordova 为 Android 编写了一个启动器应用程序。它适用于类似信息亭的应用程序,基本上运行良好。 不幸的是有一个问题:在某些情况下,Android 会强制终止我的
目标:我正在尝试将我的 Android 手机连接到附近已配对的蓝牙设备。 问题:我是BT技术的新手。我正在将我的 Android 手机与使用经典蓝牙 API (SPP) 的 BT 设备配对,因为 BT
这只是 Xcode 的一个小错误,还是只有我必须运行一个项目两次才能模拟位置? 最佳答案 在 xcode 中使用位置进行测试的最佳选择是添加 .gpx as belove: 并设置该文件的名称,例如
只要我知道如果 BT 设备符合 MFI,iOS 设备就可以与 BT 设备通信。但我的一些 friend 说苹果在推出BLE设备后不再支持BT设备。我的理解是,如果 BT 设备符合 MFI 标准,iOS
我在从Github托管的bt.matching.find工具箱中实现SIT函数时遇到问题。按照here描述的步骤下载工具箱后,我尝试复制此blog描述的代码。 library(SIT.dates) l
/var/日志/消息: segfault at 0 ip 00007fcd16e5853a sp 00007ffd98e37e58 error 4 in libc-2.24.so[7fcd16dc90
例如:iPhone 上的 Pebble 应用程序允许我浏览已发现的 BT 设备列表,然后配对并连接到 watch 。我知道如何显示 BT 外围设备列表,但我确信无法通过代码进行配对和连接。 所需行为的
在过去一周左右的时间里,我一直在努力反对这个问题。我已经阅读了以下资源: StackOverflow:在没有 Gamekit 的情况下通过蓝牙享受 Bonjour? (3844189) StackOv
我想知道 Tizen 是否支持 BT,如果支持,它是否使用开源 bluez 协议(protocol)? 另外我想知道在 Tizen 中使用蓝牙时从哪里开始挖掘。 提前致谢! 最佳答案 tizen 中的
最近发现很多用户反馈的一些问题与磁盘挂载有关, 1、安装完面板后发现磁盘容量与实际购买容量不符 2、重启服务器后面板无法访问,网站、数据库文件丢失 以上都是因为未挂载磁盘,或挂载操作不当引
我想通过 FFmpeg 为平板电脑和手机编码视频,设置“-bt”选项是否重要?如果我只是跳过此选项,这会影响设备上的视频播放吗? ‘-bt tolerance’ Set video bitrate t
我是一名优秀的程序员,十分优秀!