2013-10-14 4 views
0

나는 arduino로 데이터를 보내고 전화로 응답을받을 수 있지만 실제로는 같은 활동에서 전화로받은 데이터를 보여줄 필요가 있습니다. 다른 활동, 그래서 나는받은 데이터가 완료되지 않은 경우 문제를 일으킬 수 있다고 생각하는 다른 스레드에서 데이터를 받기 때문에 오류가 발생하고 응용 프로그램이 추가 옵션을 사용하여 수신 된 데이터를 전달하려고 시도하지만 오류가 발생했습니다. 두 번째 활동, 어떤 sugestions 시작?안드로이드 블루투스 커뮤니케이션 2 액티비티

답변

0

확인 전이 일을 정말로 오래 전에했는데 블루투스 샘플에서 변경된 사항을 정확히 기억하지 못하고 이러한 단계를 따르기 만하면 모든 수업에서 문자열을 보내고받을 수 있습니다. bluetoothchat 클래스 -in

:

당신이 안드로이드 SDK 샘플에서 블루투스 채팅 예제를 사용하는 경우, 다음을 수행 * 변화 "개인"BluetoothChatService mChatService를 "공개"로. 다음 활동에 당신이 할에서 문자열을 보내려면이

BluetoothChat.mChatService.write(byteArray); 
는 바이트의 배열을 소리로 당신이 쉽게 일을하게 배열 컨버터를 바이트 AA 문자열이 필요하므로 BYTEARRAY가있다

:

public static byte[] convertStringToByteArray(String s) 
{ 
byte[] byteArray = null; 
if(s!=null) 
{ 
if(s.length()>0) 
{ 
try 
{ 
byteArray = s.getBytes(); 
    } catch (Exception e) 
{ 
e.printStackTrace(); 
} 
} 
} 
return byteArray; 
} 
내가 무슨 짓을했는지

은 내가이 부울 진실하고 내가받을 문자열을 전달할 것이다 클래스를 입력 할 때 입력하고 그래서 예를 들면 특정 클래스를 종료하기위한 부울을 할 수 있습니다 : 보내는, 그리고 수신하는 경우

Bluetoothchat 클래스에서 그것은 "readMessage"공공 정적을

case MESSAGE_READ: 
      byte[] readBuf = (byte[]) msg.obj; 
      // construct a string from the valid bytes in the buffer 
      String readMessage = new String(readBuf, 0, msg.arg1); 
      mConversationArrayAdapter.add(mConnectedDeviceName+": " + readMessage); 

readMessage 당신이받을 문자열 메시지이지만, 대신에 당신이 만드는 것입니다 : 예를 들어 당신이이 코드 라인에서 블루투스 채팅 클래스에 갈 것 같은 내가, 원하는 클래스 변수 ..... 그래서 만약 당신이 내가 예를 들어 1 번 활동에 대한 정적 부울 값을 true로 설정하면 당신은 부울이 사실인지 확인한 다음 readMessage 문자열을 확인하는 update라는 함수를 만들 것이라고 말할 수 있습니다. 예를 들어 텍스트 설정과 같이 원하는대로 설정하십시오.

if(Bluetoothchat.one==true) 
tv.settext(Bluetoothchat.readMessage); 

그런 다음이 부울을 false로 변경해야합니다. 당신이 이런 식으로 뭔가를 할 수 있도록, 당신이 그렇게 응용 프로그램이 충돌하지 않습니다에있는 현재 활동을 종료 :

@Override 
public void onBackPressed() { 

BluetoothChatone.one=false; 
super.onBackPressed(); 

    } 

을하고 당신이 얻을 경우 오류가 그래서 난 내가 당신에게 놓친 것을 볼 수 있습니다 말해.

관련 문제