Tôi đang gặp sự cố khi thiết bị của mình ghép nối trong Android. Nếu tôi đi vào các thiết lập và ghép chúng bằng tay tôi có thể nhận được chúng để kết nối bằng cách sử dụng đoạn mã sau:Android Bluetooth không ghép nối với nhau
server
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.connect);
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(discoverableIntent, REQUEST_ENABLE_BT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == REQUEST_ENABLE_BT)
{
if(resultCode == RESULT_CANCELED)
{
new AlertDialog.Builder(this)
.setTitle(R.string.error)
.setMessage(R.string.bluetooth_unavailable)
.setPositiveButton(android.R.string.ok, AndroidUtils.DismissListener)
.create()
.show();
}
else
{
mServerSocket = mAdapter.listenUsingRfcommWithServiceRecord("Moo Productions Bluetooth Server", mUUID);
mState = State.ACCEPTING;
BluetoothSocket socket = mServerSocket.accept();
mServerSocket.close();
connected(socket);
}
}
}
Khách hàng
Set<BluetoothDevice> pairedDevices = mAdapter.getBondedDevices();
BluetoothSocket socket = null;
// Search the list of paired devices for the right one
for(BluetoothDevice device : pairedDevices)
{
try
{
mState = State.SEARCHING;
socket = device.createRfcommSocketToServiceRecord(mUUID);
mState = State.CONNECTING;
socket.connect();
connected(socket);
break;
}
catch (IOException e)
{
socket = null;
continue;
}
}
Nhưng nếu các thiết bị chưa được ghép nối, thiết bị sẽ không được kết nối mà không cần kết nối vào một ổ cắm hợp lệ. Trong trường hợp đó tôi bắt đầu khám phá.
// If that didn't work, discover
if(socket == null)
{
mState = State.SEARCHING;
mReceiver = new SocketReceiver();
mContext.registerReceiver(mReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
mAdapter.startDiscovery();
}
// ... Later ...
private class SocketReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if(BluetoothDevice.ACTION_FOUND.equals(intent.getAction()))
{
try
{
// Get the device and try to open a socket
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(mUUID);
mState = State.CONNECTING;
socket.connect();
// This is our boy, so stop looking
mAdapter.cancelDiscovery();
mContext.unregisterReceiver(mReceiver);
connected(socket);
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
}
Nhưng nó sẽ không bao giờ tìm thấy thiết bị khác. Tôi không bao giờ nhận được một hộp thoại ghép nối và khi tôi bước qua tôi thấy rằng nó phát hiện ra thiết bị chính xác, nhưng nó không kết nối với ngoại lệ này java.io.IOException: Service discovery failed
. Bất kỳ ý tưởng nào về những gì tôi đang bỏ lỡ?
hi CaseyB howz u? Tôi cũng đang mắc kẹt ở đây trong cùng một vấn đề .. có nghĩa là khi tôi kết nối từ một thiết bị với thiết bị khác của nó được kết nối và một lần nữa nếu tôi đang làm từ thứ hai đến con mèo đầu tiên thiết bị hiển thị thông báo "dịch vụ phát hiện thất bại" vậy tại sao nó không kết nối từ thiết bị khác tôi đã thử nó wid pls UUId khác nhau giúp tôi. – shyam
Tôi chưa bao giờ có thể hình dung ra điều này. Tôi chuyển sang một dự án khác. Lấy làm tiếc. – CaseyB