Android'de bir BluetoothSocket'den bir inputstream.read() işlevinde zaman aşımı uygulamak mümkün mü?Android'de BluetoothSocket inputstream.read() öğesinde bir zaman aşımı gerçekleştirin
Thread.sleep() kullanmayı denedim, ancak bu yalnızca etkinliğimi duraklatıyor.
--- Güncelleme --- Ben bir fikir geldi
, diğer, bunlardan biri (t1) kesme her iş parçacığı bir uyku (5000) do 2 iplik kod herereads (t1 & t2) sonra kesme yapmak diğer iplikten (t2), diğer taraftan (t2), eğer girişte bir başka karakter (t2) okunursa, bir başka karakteri 0x0D olarak algılar ve diğer ipi (t1) keser, ama burada benim sorum, kimsenin bana yardım edemez mi? i parçacığı kesme() yöntemini kullanın çünkü ben
--- Güncelleme --- Bu benim uygulaması
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();
}
}
}
bir şey gelince ... teşekkür ederim, birisi bana yardımcı olabilir umut Farklı bir iş parçacığında, sorun, de mmInStream gelen 0x3e karakteri almazsanız zaman aşımı ulaşılacak olmasıdır.
İkinci örnekte notifyAll() kullanmalıyım, ancak readThread() işlevini ne zaman başlatmalıyım?
API devam ettiği sürece, bunu yapan bir yöntemle karşılaşmadım ... Belki de bunu yapmak için bazı yansıtıcı yollar vardır ...!? – TacB0sS
Hem Bluetooth Socket hem de inputstream'in zaman aşımı uygulamak için herhangi bir yöntemi yoktur. Bu benim sorunum Threads ve işleyicileri ile denedim ama henüz uygulanamadı ... Yanıtınız için teşekkürler –
Bir dizede boşlukları bastırmak için "replaceAll (" "," yerine "Trim()" kullanabilirsiniz ")" –