Czy jest możliwe wprowadzenie limitu czasu w funkcji inputstream.read() z BluetoothSocket w systemie Android?Wprowadzić limit czasu w BluetoothSocket inputstream.read() w Androidzie
Próbowałem używać Thread.sleep(), ale to tylko wstrzymuje moją aktywność.
--- Aktualizacja ---
miałem pomysł, zrobić 2 herereads kod gwint (t1 & T2), gdzie każdy wątek przerwania innego, jeden z nich (t1) Czy sen (5000), a następnie przerwać drugi wątek (t2), z drugiej strony drugi wątek (t2), jeśli wczytywany strumień wejściowy wykrywa jakiś znak, ponieważ 0x0D przerywa drugi wątek (t1), ale oto jest moje pytanie, czy ktoś może mi pomóc? bo nie używać przerwań() metoda wątków, mam nadzieję, że ktoś może mi pomóc, dziękuję ...
--- Aktualizacja ---
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();
}
}
}
To moja implementacja gdy coś przychodzi w innym wątku, problem polega na tym, że limit czasu zostanie osiągnięty, jeśli nie otrzymam znaku 0x3e z de mmInStream.
Przypuszczam, że w drugim przykładzie muszę użyć funkcji notifyAll(), ale kiedy muszę uruchomić readThread()?
Dziękuję @weeman
Jeśli chodzi o API idzie, nie napotka metodę, która robi ... Być może istnieje jakiś refleksyjny sposób to zrobić ...!? – TacB0sS
Zarówno gniazdo Bluetooth, jak i wejście nie mają żadnej metody implementacji limitu czasu. To jest mój problem próbowałem z wątków i obsługi, ale nie można jeszcze uzyskać zaimplementowane ... Dzięki za odpowiedź –
Do tłumienia spacji w ciągu można użyć "Trim()" zamiast "replaceAll (" "," ")" –