Helo.android - 블루투스 : 입력 스트림에서 프로그램이 멈 춥니 다
블루투스를 통해 데이터를 이전하는 애플리케이션을 개발 중입니다 (비행 기록 장치 사용). 필자가 많은 데이터 데이터 (3000 - 40000 줄의 텍스트, 파일 크기에 따라 다름)를 수신 할 때 필자의 애플리케이션은 데이터 수신을 멈추는 것처럼 보입니다. InputStream.read (buffer)를 사용하여 데이터를 수신합니다. 예를 들면 : 나는 비행 기록 장치에 명령을 보내고, 파일을 (줄 단위로) 보내기 시작하고, 내 전화기에는 120 줄을 수신 한 다음 응용 프로그램이 멈 춥니 다.
Intresting은 내 HTC Desire에서 앱이 가끔 붙어서 Samsung Galaxy S 휴대 전화에 응용 프로그램이 매 50 회 이상 수신하려고 시도 할 때마다 멈 춥니 다.
코드는 BluetoothChat 예를 기반으로합니다. 이것은 내가 BluetoothSocket을 듣고 있어요 코드의 일부입니다
byte[] buffer = new byte[1024];
int bytes =0;
while(true)
{
bytes = mmInStream.read(buffer);
readMessage = new String(buffer, 0, bytes);
Log.e("read", readMessage);
String read2 = readMessage;
//searching for the end of line to count the lines(the star means the start of the checksum)
int currentHits = read2.replaceAll("[^*]","").length();
nmbrOfTransferedFligts += currentHits;
.
.
.
//parsing and saving the recieved data
내가 스레드에, 그는 안드로이드 서비스에서 구현, 동안 (사실) 루프에서이 작업을 실행하고 있다고한다. 응용 프로그램이 "bytes = mmInStream.read (buffer);"에서 멈춘 것처럼 보입니다. 이 작업을 BufferedReader로 시도했지만 성공하지 못했습니다.
감사합니다.
답변 해 주셔서 감사합니다. 나는 귀하의 조언을 시도했습니다. 'bytes = mmInStream.read (buffer);'행은 예외를 발생시키지 않습니다. 그러나 내 장치는 계속 내 전화 (100 %)로 데이터를 전송합니다. BluetoothSocket이 올바르게 작동하지 않는 것으로 보입니까? 감사합니다. – Primoz990
예, BluetoothSocket이 올바르게 작동하지 않는 것 같습니다. HTC와 삼성 기기에서 모두 문제가 발생 했으므로 공급 업체 특정 버그가 아닙니다. 아마도 Android 문제 목록을보고이 문제를 설명 할 수있는 문제가 있는지 확인하십시오. 내가 생각할 수있는 유일한 다른 방법은 시스템에서 logcat 출력을 보는 것입니다. 내 전화기 BlueZ (리눅스/안드로이드 블루투스 스택)는 많은 디버그 문을 logcat에 저장합니다. – Tom