2012-03-09 6 views
3

最も近いセルタワーの場所を探したい。私は、このリンクをしようとしたが、それは私How to find user location using cell tower?アンドロイドでセルタワーの場所を取得する方法

のために働いていない私は、私が何か間違ったことをやっていると思います

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; 
     } 
    } 
} 

を試してみました。このリンクの答えは、他の人 のために働いているので、リンク に示したように、私は私がプロジェクト を作成するために、2,2 GoogleのAPIを使用しています。しかし、私はTHIのコードを試してみてくださいセルタワーの場所

+0

このリンクをチェックアウトhttp://stackoverflow.com/a/3145655/28557、それは現在の場所を取得する方法をうまく説明しました –

+0

[セルタワーの場所を取得する - Android]の可能な複製(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を呼び出して、目的のフィールドを指定する必要があることを参照もののPhoneStateServiceインテントをリッスン
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()); 
    } 
} 

。だった私の場合:

@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

関連する問題