Я пытаюсь получить данные от соединения Bluetooth после получения ACTION_ACL_CONNECTED на BroadcastReceiver. Этот пример кода не работает:
private final BroadcastReceiver discoveryFinishReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
BluetoothSocket socket = null;
String data = "/0";
byte[] bytes = data.getBytes();
try {
BluetoothServerSocket bluesocketserver = bluetoothAdapter.listenUsingRfcommWithServiceRecord("", MY_UUID);
socket = bluesocketserver.accept(3000);
if(socket.isConnected())
socket.getInputStream().read(bytes);
} catch (IOException e) {
Log.d("Test", e.getMessage());
e.printStackTrace();
}
}
}
};
Я постоянно получаю сообщение об ошибке "java .io.IOException: Попробуйте снова" на socket = bluesocketserver.accept (3000). Кроме того, я использую UCID RFCOM по умолчанию "00001101-0000-1000-8000-00805F9B34FB"
Возможно ли просто создать BluetoothServerSocker в состоянии ACTION_ACL_CONNECTED? Я пытаюсь получить данные с принтера externak, подключенного через Bluetooth.