안드로이드 개발 질문/답변
(글 수 45,052)
제가 블루투스 채팅으로 위치값을 문자메세지로 전송할려고 하는데요.
문자메세지에 위치값이 뜨게 하는데서 막여서 이렇게 도움을 청합니다.
소스 올릴게요,,, 한번만 봐주세요 고수님들!!ㅜ.ㅜ
public void GetLocations() {
String jusoText;
StringBuffer juso = new StringBuffer();
latPoint = myLocation.getLatitude();
lngPoint = myLocation.getLongitude();
speed = (float) (myLocation.getSpeed() * 3.6);
try {
String jusoText;
StringBuffer juso = new StringBuffer();
latPoint = myLocation.getLatitude();
lngPoint = myLocation.getLongitude();
speed = (float) (myLocation.getSpeed() * 3.6);
try {
//위도랑 경도를 이용해서 현재 위치의 주소를 가져옵니다.
List<Address> addresses;
addresses = geoCoder.getFromLocation(latPoint, lngPoint, 1);
for (Address addr : addresses) {
int index = addr.getMaxAddressLineIndex();
for (int i = 0; i <= index; i++) {
juso.append(addr.getAddressLine(i));
juso.append(" ");
}
juso.append("\n");
}
}catch (IOException e) {
e.printStackTrace();
}
//가져온 위치정보를 jusoText라는 변수에 담습니다.
jusoText = String.valueOf(juso);
-------------------------------------------------------------------------------
List<Address> addresses;
addresses = geoCoder.getFromLocation(latPoint, lngPoint, 1);
for (Address addr : addresses) {
int index = addr.getMaxAddressLineIndex();
for (int i = 0; i <= index; i++) {
juso.append(addr.getAddressLine(i));
juso.append(" ");
}
juso.append("\n");
}
}catch (IOException e) {
e.printStackTrace();
}
//가져온 위치정보를 jusoText라는 변수에 담습니다.
jusoText = String.valueOf(juso);
-------------------------------------------------------------------------------
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_STATE_CHANGE:
if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
switch (msg.arg1) {
case BluetoothChatService.STATE_CONNECTED:
mTitle.setText(R.string.title_connected_to);
mTitle.append(mConnectedDeviceName);
mConversationArrayAdapter.clear();
break;
case BluetoothChatService.STATE_CONNECTING:
mTitle.setText(R.string.title_connecting);
break;
case BluetoothChatService.STATE_LISTEN:
case BluetoothChatService.STATE_NONE:
mTitle.setText(R.string.title_not_connected);
break;
}
break;
case MESSAGE_WRITE:
byte[] writeBuf = (byte[]) msg.obj;
// construct a string from the buffer
String writeMessage = new String(writeBuf);
mConversationArrayAdapter.add("Me: " + writeMessage);
break;
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);
if(readMessage.equals("a")) {
switch (msg.what) {
case MESSAGE_STATE_CHANGE:
if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
switch (msg.arg1) {
case BluetoothChatService.STATE_CONNECTED:
mTitle.setText(R.string.title_connected_to);
mTitle.append(mConnectedDeviceName);
mConversationArrayAdapter.clear();
break;
case BluetoothChatService.STATE_CONNECTING:
mTitle.setText(R.string.title_connecting);
break;
case BluetoothChatService.STATE_LISTEN:
case BluetoothChatService.STATE_NONE:
mTitle.setText(R.string.title_not_connected);
break;
}
break;
case MESSAGE_WRITE:
byte[] writeBuf = (byte[]) msg.obj;
// construct a string from the buffer
String writeMessage = new String(writeBuf);
mConversationArrayAdapter.add("Me: " + writeMessage);
break;
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);
if(readMessage.equals("a")) {
//a라는 이벤트 발생
mConversationArrayAdapter.add("사고발생");
mConversationArrayAdapter.add("사고발생");
String jusoText = GetLocations() ; //<------------ 이부분이 위치주소가 선언한 함수를 호출하는건데 여기서 오류가 납니다.
smsManager.sendTextMessage("01047394039", null, jusoText + "위치에서 당신에게 sos를 신청합니다. 신속한확인.", null, null); //smsManager를 이용해서 지정된 번호로 jusoText값과 합하여 sos메시지 전송
Toast.makeText(getApplicationContext(), "사고발생! 문자전송 완료", Toast.LENGTH_SHORT).show();
}
break;
case MESSAGE_DEVICE_NAME:
// save the connected device's name
mConnectedDeviceName = msg.getData().getString(DEVICE_NAME);
Toast.makeText(getApplicationContext(), "Connected to "
+ mConnectedDeviceName, Toast.LENGTH_SHORT).show();
break;
case MESSAGE_TOAST:
Toast.makeText(getApplicationContext(), msg.getData().getString(TOAST),
Toast.LENGTH_SHORT).show();
break;
}
}
};
}
break;
case MESSAGE_DEVICE_NAME:
// save the connected device's name
mConnectedDeviceName = msg.getData().getString(DEVICE_NAME);
Toast.makeText(getApplicationContext(), "Connected to "
+ mConnectedDeviceName, Toast.LENGTH_SHORT).show();
break;
case MESSAGE_TOAST:
Toast.makeText(getApplicationContext(), msg.getData().getString(TOAST),
Toast.LENGTH_SHORT).show();
break;
}
}
};
보라색글씨 부분이 gps 위치를 가져오는 부분이고
파란색글씨 부분이 a라는 이벤트가 발생했을시 문자메세지가 전송하는 부분입니다.
두대의 핸드폰으로 블루투스채팅을 이용해 통신을 할때 송신자쪽에서 a라는 이벤트를 전송했을시 지정된 번호로 문자메세지가 전송되는데 그 문자메세지 내용이 위치주소값은 안뜨고 "위치에서 당신에게 sos를 신청합,,,,,,, 이렇게만 뜹니다.
이것때문에 멘붕 여러번 오네요.ㅜ.ㅜ 고수님들 젭알 아시부분 조금씩만 알려주세요.ㅜ.ㅜ




디버깅해보시구요 정확히 GetLocation 안에 어디서 에러나는지 확인해보세요 DDMS를 보시면 정확히 몇번째줄 에서 에러낫는지 알려줍니다. 문제는 퍼미션문제 아니면 어떤객체가 NULL값인걸로 보이는데요.