作者mozzan (mozzan)
看板AndroidDev
标题[问题] 蓝牙建立连线卡关了
时间Sat Jun 8 12:16:43 2013
大家好,我现在在写蓝牙APP
最後是要做到可以互传资料
但目前卡在连线阶段= =++,非BlutoothChat范例
平台是两只Android 手机,假设A是Client,B是Server(但都是同一支APP)
目前APP 可以与android 内建的蓝牙功能连线
(不过有时B会认为A发出的连线是蓝牙耳机,这是另一个问题== 我是用SPP)
现在要做两只手机都进到APP当中,然後连线
而现在Client端始终无法Find Server装置
看起来就像是(在Android内建蓝牙程式中没有点"向其他装置显示"那样)
不晓得是不是我server 端的部分写错
请各位大大帮我看一下,感激不尽
Connect 的部分:
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "in onReceive, action = " + action);
if (BluetoothDevice.ACTION_FOUND.equals(intent.getAction())) {
// 取得蓝芽装置这个物件
BluetoothDevice device =
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// 判断那个装置是不是你要连结的装置,根据蓝芽装置名称判断
try {
// 一进来一定要停止搜寻
BT.cancelDiscovery();
// 连结到该装置
mBluetoothSocket =
(BluetoothSocket)device.createRfcommSocketToServiceRecord (MY_UUID);
Method m = device.getClass().getMethod
("createRfcommSocket", new Class[] {int.class}); // add
mBluetoothSocket = (BluetoothSocket) m.invoke
(device, 1); //add
mBluetoothSocket.connect();
.......
在来是Server 监听连线的部分
OnClickListener serverButtonHandler = new OnClickListener() {
@Override
public void onClick(View v) {
try {
mBluetoothServerSocket =
BT.listenUsingRfcommWithServiceRecord("BluetoothTest", MY_UUID);
} catch (Exception e) {
Log.d(TAG, "listen() failed" + e);
}
Thread listenThread = new Thread(new Runnable() {
public void run() {
try {
mBluetoothSocket = mBluetoothServerSocket.accept();
} catch (Exception e) {
Log.d(TAG, "accept failed" + e);
}
}
});
listenThread.start();
}
};
UUID : "fa87c0d0-afac-11de-8a39-0800200c9a66"
先谢谢了!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.168.92.186
1F:→ mozzan:耍笨了,没加Action_request_discoverable intent 06/08 15:08
2F:→ mozzan:只剩辨识为蓝牙耳机这个问题了,感谢 06/08 15:08