Bluetooth Android Learning App for Non-Blocking Communications

I am looking for a bluetooth code sample on Android to make a non-blocking socket connection.

I found several examples, such as BluetoothChat or BluetoothSocket.java, but none of them were non-blocking socket communication.

ps non-blocking automatically means it should be asynchronous? I think it’s not really - it’s not the same thing, I suppose I could do synchronous socket communication with a timeout. This is the example I'm looking for ...

Many thanks

+7
source share
1 answer

It seems like the answer is pretty much you can't

however, with a small number of mannequins, your system may work the way you want.

  BluetoothSocketListener bsl = new BluetoothSocketListener(socket, handler, messageText); Thread messageListener = new Thread(bsl); messageListener.start(); 

message system

  private class MessagePoster implements Runnable { private TextView textView; private String message; public MessagePoster(TextView textView, String message) { this.textView = textView; this.message = message; } public void run() { textView.setText(message); } } 

socket listener

 private class BluetoothSocketListener implements Runnable { private BluetoothSocket socket; private TextView textView; private Handler handler; public BluetoothSocketListener(BluetoothSocket socket, Handler handler, TextView textView) { this.socket = socket; this.textView = textView; this.handler = handler; } public void run() { int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; try { InputStream instream = socket.getInputStream(); int bytesRead = -1; String message = ""; while (true) { message = ""; bytesRead = instream.read(buffer); if (bytesRead != -1) { while ((bytesRead==bufferSize)&&(buffer[bufferSize-1] != 0)) { message = message + new String(buffer, 0, bytesRead); bytesRead = instream.read(buffer); } message = message + new String(buffer, 0, bytesRead - 1); handler.post(new MessagePoster(textView, message)); socket.getInputStream(); } } } catch (IOException e) { Log.d("BLUETOOTH_COMMS", e.getMessage()); } } } 
+11
source

All Articles