2012-03-09 3 views
3

가장 가까운 셀 타워 위치를 찾고 싶습니다. 나는이 링크를 시도 안드로이드에서 셀 타워 위치를 얻는 방법

private class ServiceStateHandler extends Handler { 
    public void handleMessage(Message msg) { 
     switch (msg.what) { 
      case MY_NOTIFICATION_ID: 
       ServiceState state = mPhoneStateReceiver.getServiceState(); 
       System.out.println(state.getCid()); 
       System.out.println(state.getLac()); 
       System.out.println(mPhoneStateReceiver.getSignalStrength()); 
       break; 
     } 
    } 
} 

을 시도했지만 내가 뭔가 잘못하고있는 중이 야 생각 날 How to find user location using cell tower?

작동하지 않습니다. 이 링크의 대답은 다른 사람 을 위해 노력하고 있기 때문에 링크 같이 내가 프로젝트 를 만들 2,2 구글 API를 사용하고 있습니다하지만 생 코드를 사용해보십시오 셀 타워 위치

+0

이 링크를 체크 아웃 http://stackoverflow.com/a/3145655/28557, 그것의 멋지게 현재 위치를 얻는 방법을 설명했다 –

+0

[셀 타워 위치 가져 오기 - 안드로이드] (http://stackoverflow.com)/questions/6668271/get-cell-tower-locations-android) –

답변

0

을 얻을 수 아니에요 동일한 코드를했다 - StackOverflow

+0

나는 이것을 시도하고 내 질문에 언급했습니다. phonestatereceiver가 작동하지 않습니다. – Dipali

1

이 의도 기다리지 않습니다하지만 활동에서 onCreate가 전화 서비스에 대한 참조를 가져 와서 표시 할 때 단지 getCellLocation()를 호출하지 내가 가진 코드에이 질문에서

mPhoneStateReceiver = new PhoneStateIntentReceiver(this, new ServiceStateHandler()); 
mPhoneStateReceiver.notifyServiceState(MY_NOTIFICATION_ID); 
mPhoneStateReceiver.notifyPhoneCallState(MY_NOTIFICATION_ID); 
mPhoneStateReceiver.notifySignalStrength(MY_NOTIFICATION_ID); 
mPhoneStateReceiver.registerIntent(); 

private class ServiceStateHandler extends Handler { 
public void handleMessage(Message msg) { 
    switch (msg.what) { 
     case MY_NOTIFICATION_ID: 
      ServiceState state = mPhoneStateReceiver.getServiceState(); 
      System.out.println(state.getCid()); 
      System.out.println(state.getLac()); 
      System.out.println(mPhoneStateReceiver.getSignalStrength()); 
      break; 
    } 
} 
} 

필요한 경우. 나는 또한 우리가 TelephonyManager에 listen를 호출하고 관심있는 분야를 지정해야합니다 것을 볼 수 있지만
m_manager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

GsmCellLocation loc = (GsmCellLocation)m_manager.getCellLocation(); 
if (loc != null) 
{ 
    out.format("Location "); 
    if (loc.getCid() == -1) { 
     out.format("cid: unknown "); 
    } else { 
     out.format("cid: %08x ", loc.getCid()); 
    } 
    if (loc.getLac() == -1) { 
     out.format("lac: unknown\n"); 
    } else { 
     out.format("lac: %08x\n", loc.getLac()); 
    } 
} 

는 PhoneStateService 의도에 대해들을 때. 이었다 내 경우 :

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.d(TAG, "service start"); 
    m_manager.listen(m_listener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_SERVICE_STATE | PhoneStateListener.LISTEN_CALL_STATE); 
    return super.onStartCommand(intent, flags, startId); 
} 

당신은 아마 목록에 LISTEN_CELL_LOCATION를 추가해야합니다.

참고 : ACCEP_COARSE_LOCATION 권한을 앱 매니페스트에 추가 했습니까? PhoneStateListener 설명서에서 언급했듯이 정보에 대한 권한이없는 경우 일부 필드는 비어 있습니다.

+0

셀 타워의 위치 (주소)를 찾고 싶습니다. 나는 mcc mnc 셀 id와 lac을 가지고있다. 어떻게 찾을 수 있는지 알고 있니? – Dipali

관련 문제