Мне удалось, чтобы Бонд (и я думаю, подключил) мой планшет и мой смартфон через Bluetooth.
Я использовал это для помощи.
Мое текущее состояние таково, что mSocket.connect();
не выдает никаких исключений, и мой код перемещается в поток Connected.
Но я не хочу сейчас передавать данные, я просто хочу соединение,
поэтому я установил run ()
из ConnectedThread
в while(true){;}
.
Моя проблема в том, что Brodcastreceiver из BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED
не перемещается в STATE_CONNECTED
, когда мое приложение не падает.
Может быть, потому, что я использую неправильный UUID?
Нужен ли UUID моего телефона?
Когда я пытаюсь подключиться к BluetoothDongle, нужен ли специальный UUID от Dongle?
Кстати: я не прошивал никаких программ на своем телефоне, я просто прошил приложение на своем планшете.
Код ConnectedThread, доступен только тогда, когда устройство # connect (); без исключения
private class ConnectedThread extends Thread{
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket) {
this.mmSocket= socket;
InputStream tmpIn =null;
OutputStream tmpOut =null;
mProgressDialog.dismiss();
try {
tmpIn =this.mmSocket.getInputStream();
tmpOut= this.mmSocket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
mmInStream =tmpIn;
mmOutStream =tmpOut;
}
public void run() {
byte[] buffer = new byte[1024];
int bytes;
while (true)
{
;
}
}
public void write(byte[] bytes) {
String text = new String(bytes, Charset.defaultCharset());
Log.d(TAG, "write: Writing to outputstream: " + text);
try {
mmOutStream.write(bytes);
} catch (IOException e) {
Log.e(TAG, "write: Error writing to output stream. " + e.getMessage() );
}
}
public void cancel(){
try {
mmSocket.close();
} catch (IOException e) { }
}
}
Я проверил mSocket.isConnected (); он вернул false.