안녕하세요 한달동안 고민하다가 결국 질문글을 남기게 되네요.
현재 제가 구현하고자 하는 어플은 안드로이드 기기간 블루투스로 연동하여 한쪽에서 다른한쪽의 카메라를 제어하는
어플리케이션입니다. 현재까지 제가 구현한 것을 간단히 설명드리자면 메인화면은 <원격제어모드> 와 <카메라모드>
버튼이 있습니다. 해당 버튼을 누르면 각각 <원격제어>화면 과 <카메라프리뷰>가 Intent 되고 해당 화면으로 Intent 된후
바로 <원격제어>화면은 블루투스가 켜진 주변 기기를 검색, 선택, 연결 하도록 하였고 <카메라>화면은 300초간 해당기기
가 주변기기를 검색할수 있도록 허용해주어서 두 기기를 연결하도록 하였습니다.
원격제어 방법은 간단합니다. <원격제어>기기에서 <원격촬영> 버튼을 누르면 특정한 데이터 (예를들면 String
message="1";) 을 전송하고, <제어받는기기> 에서 데이터를 전송받으면 바로 카메라가 촬영되도록 하는 방법인데
여기서 문제가 <원격제어기기> 에서 <원격촬영> 버튼을 누르면 NullPointerException 이 발생하면서 프로그램이 강제
종료 됩니다 ㅠ_ㅠ 두기기가 제대로 연결된단 것은 로그캣을 통해 확인할 수 있어서 제가 판단하기에 데이터를 보내는
과정에서 오류가 난 것 으로 보입니다.
오류가 난것 같다고 판단되는 클래스들의 소스코드 일부분과 오류시 발생된 로그캣 정보를 첨부하였습니다.
안드로이드 고수분들 부디 저에게 조언을 해주셔서 제가 한단계 발전할 수 있도록 도와주세요.
/****** 원격제어를 하는 액티비티은 RemoteActivity 클래스 소스 일부분 *******/
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d(TAG,"- HANDLER - ");
}
};
private void sendMessage(String message){
Log.d(TAG,"sendMessage()");
if(message.length() >0 ) {
byte[] send = message.getBytes();
mBluetoothService.write(send);
}
}
public void onClick(View v){
String message="1";
sendMessage(message); // 14.11.09 추가내용
}
/***** 원격제어 받는 액티비티인 CameraActivity 클래스 소스 일부분 ******/
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
Log.d(TAG," - HANDLER -: ");
mCamera.takePicture(null,null,mPicture);
}
};
/*******BluetoothChatService 클래스를 참고하여 만든 BluetoothService 클래스 소스 일부분 *******/
public void write(byte[] out) { // Create temporary object
ConnectedThread r;
synchronized (this) {
if (mState != STATE_CONNECTED)
return;
r = mConnectedThread;
}
r.write(out);
}
