¿Es posible implementar un tiempo de espera en una función de inputstream.read() desde un BluetoothSocket en Android?Implementar un tiempo de espera en BluetoothSocket inputstream.read() en Android
He intentado utilizar Thread.sleep() pero esto solo detiene mi actividad.
--- Actualización ---
tuve una idea, hacer 2 herereads código hilo (t1 & t2), donde cada hilo de interrupción otro, uno de ellos (t1) hacen un sueño (5000) y luego interrumpir el otro hilo (t2), del otro lado el otro hilo (t2) si en lectura el inputstream detecta algún carácter como 0x0D interrumpe el otro hilo (t1), pero aquí está mi pregunta, ¿alguien puede ayudarme? porque no usamos el método de interrupción() de hilos, espero que alguien me puede ayudar, gracias ...
--- Actualización ---
public void run(){
while(true){
try {
char r;
String respuesta = "";
while (true) {
r = (char) mmInStream.read();
respuesta += r;
if (r == 0x3e) {
break;
}
}
respuesta = respuesta.replaceAll(" ", "");
Log.d("respuesta", respuesta);
rHandler.obtainMessage(MESSAGE_READ, -1, -1, respuesta).sendToTarget();
} catch (IOException readException) {
Log.e("ServicioGeneral", "Error de lectura", readException);
this.interrupt();
connectionLost();
// posibly break();
}
}
}
Ésta es mi aplicación cuando viene algo en un subproceso diferente, el problema es que se alcanzará el tiempo de espera si no obtengo el carácter 0x3e de mmInStream.
Supongo que en el segundo ejemplo debo usar un notifyAll(), pero, ¿cuándo tengo que iniciar readThread()?
Gracias, @weeman
Por lo que respecta a la API, no encontré un método que lo haga ... ¿¡Quizás haya alguna manera reflexiva de hacerlo ...!? – TacB0sS
Tanto el zócalo Bluetooth como el flujo de entrada no tienen ningún método para implementar un tiempo de espera excedido. Ese es mi problema, lo he intentado con Threads y manipuladores, pero no pude implementarlo todavía ... Gracias por su respuesta –
Para suprimir espacios en una cadena, puede usar "Trim()" en lugar de "replaceAll (" "," ")" –