Có thể thực hiện thời gian chờ trong một hàm inputstream.read() từ BluetoothSocket trong Android không?Thực hiện một thời gian chờ trong BluetoothSocket inputstream.read() trong Android
Tôi đã thử sử dụng Thread.sleep() nhưng điều này chỉ tạm dừng hoạt động của tôi.
--- Update ---
Tôi đã có một ý tưởng, làm cho 2 herereads đang ren (t1 & t2), nơi mỗi thread ngắt khác, một trong số họ (t1) làm một giấc ngủ (5000) sau đó gián đoạn các chủ đề khác (t2), từ phía bên kia thread khác (t2) nếu đọc inputstream phát hiện một số ký tự như 0x0D làm gián đoạn thread khác (t1), nhưng đây là câu hỏi của tôi, không ai có thể giúp tôi? bởi vì tôi đã không sử dụng ngắt() của chủ đề, tôi hy vọng ai đó có thể giúp tôi, cảm ơn bạn ...
--- Update ---
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();
}
}
}
Đây là triển khai thực hiện của tôi khi một cái gì đó đi trong một chủ đề khác nhau, vấn đề là thời gian chờ sẽ đạt được nếu tôi không nhận được các ký tự 0x3e từ mmInStream.
Tôi cho rằng trong ví dụ thứ hai, tôi phải sử dụng notifyAll(), nhưng, khi nào tôi phải bắt đầu readThread()?
Cảm ơn bạn, @weeman
Theo như API đi, tôi đã không gặp phải phương thức thực hiện điều đó ... Có lẽ có một số cách phản chiếu để làm điều đó ...!? – TacB0sS
Cả hai Socket Bluetooth và inputstream không có bất kỳ phương pháp để thực hiện một thời gian chờ. Đó là vấn đề của tôi tôi đã thử với Chủ đề và xử lý nhưng không thể được thực hiện được nêu ra ... Cảm ơn câu trả lời của bạn –
Để ngăn chặn không gian trong một chuỗi, bạn có thể sử dụng "Trim()" thay vì "replaceAll (" "," ")" –