이 의도 기다리지 않습니다하지만 활동에서 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 설명서에서 언급했듯이 정보에 대한 권한이없는 경우 일부 필드는 비어 있습니다.
이 링크를 체크 아웃 http://stackoverflow.com/a/3145655/28557, 그것의 멋지게 현재 위치를 얻는 방법을 설명했다 –
[셀 타워 위치 가져 오기 - 안드로이드] (http://stackoverflow.com)/questions/6668271/get-cell-tower-locations-android) –