안드로이드 개발 질문/답변
(글 수 45,052)
우선 소스는 아래와 같습니다.
public class CellID extends Activity { GsmCellLocation location; int cellID, lac; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); location = (GsmCellLocation) tm.getCellLocation(); cellID = location.getCid(); lac = location.getLac(); Button btnDisplayMap = (Button) findViewById(R.id.displayMap); btnDisplayMap.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { //---obtain the CellID and LAC of the device--- CellLocation.requestLocationUpdate(); cellID = location.getCid(); lac = location.getLac(); //---for testing only--- //cellID = 5496; //lac = 6037; //---------------------- try { if (!displayMap(cellID, lac)) { TextView t = (TextView) findViewById(R.id.status); t.setText("Location not found!"); } } catch (Exception e) { e.printStackTrace(); } } }); } private boolean displayMap(int cellID, int lac) throws Exception { String urlString = "http://www.google.com/glm/mmap"; //---open a connection to Google Maps API--- URL url = new URL(urlString); URLConnection conn = url.openConnection(); HttpURLConnection httpConn = (HttpURLConnection) conn; httpConn.setRequestMethod("POST"); httpConn.setDoOutput(true); httpConn.setDoInput(true); httpConn.connect(); //---write some custom data to Google Maps API--- OutputStream outputStream = httpConn.getOutputStream(); WriteData(outputStream, cellID, lac); //---get the response--- InputStream inputStream = httpConn.getInputStream(); DataInputStream dataInputStream = new DataInputStream(inputStream); //---interpret the response obtained--- dataInputStream.readShort(); dataInputStream.readByte(); int code = dataInputStream.readInt(); if (code == 0) { double lat = (double) dataInputStream.readInt() / 1000000D; double lng = (double) dataInputStream.readInt() / 1000000D; dataInputStream.readInt(); dataInputStream.readInt(); dataInputStream.readUTF(); //---display Google Maps--- String uriString = "geo:" + lat + "," + lng; Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uriString)); startActivity(intent); return true; } else { return false; } } private void WriteData(OutputStream out, int cellID, int lac) throws IOException { DataOutputStream dataOutputStream = new DataOutputStream(out); dataOutputStream.writeShort(21); dataOutputStream.writeLong(0); dataOutputStream.writeUTF("en"); dataOutputStream.writeUTF("Android"); dataOutputStream.writeUTF("1.0"); dataOutputStream.writeUTF("Web"); dataOutputStream.writeByte(27); dataOutputStream.writeInt(0); dataOutputStream.writeInt(0); dataOutputStream.writeInt(3); dataOutputStream.writeUTF(""); dataOutputStream.writeInt(cellID); dataOutputStream.writeInt(lac); dataOutputStream.writeInt(0); dataOutputStream.writeInt(0); dataOutputStream.writeInt(0); dataOutputStream.writeInt(0); dataOutputStream.flush(); } }
GPS 로 위치를 찾지 못하였을 경우 CELL 방식으로 위치를 찾기위해 위에 소스를 참고 하였습니다.
그런데 원래 CELL 방식으로 위치 값 가져오는 것이 GPS로 가져오는 것 보다 더 어렵나요??
양재역 근처 실외에서 테스트 해봤는데 위치를 거의 가져오지 못 하더라구요.실내에서도 마찬가지구요.
혹시 위에 소스를 그대로 사용한는것이 아니라 수정해야 할 부분이 있는지
아님 CELL 방식으로 위치를 가져오는 다른 참고할 만한 소스나 사이트 알려주시면 정말 감사하겠습니다.
즐거운 추석 되시구요~^^