获取手机信号塔位置 - Android

13

有人知道是否可以获取设备范围内所有基站的信息吗?只需要获取它们的位置或其他相关信息,如何实现呢?


看这里。这几乎是相同的问题。 https://dev59.com/0G435IYBdhLWcg3w1jyV - AlexR
谢谢,我在阅读API时可能忽略了那个。我会尝试一下。 - DRiFTy
一个额外的资源:http://www.anddev.org/poor_mans_gps_-_celltowerid_-_location_area_code_-lookup-t257.html - AlexR
2
我以为他想要基站的实际位置,而不是基于基站确定他的位置... - citizen conn
1个回答

10

以下是获取当前网络状态中的基站ID(CID)和位置区域码(LAC)的方法:

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

获取经纬度信息后,需要进行一些复杂的处理。以下是一个关于塞班系统的帖子,讨论了基站->经纬度转换:http://discussion.forum.nokia.com/forum/showthread.php?s=&threadid=19693


如果我没记错的话,PhoneStateIntentReceiver不是一个可见的类。它的导入是什么?这段代码适用于哪个API级别? - Paul Lammertsma
2
有趣的是,我从一个旧应用程序中挖出了这个代码,但现在它已经不存在了。这似乎是新的替代品:PhoneStateListener - citizen conn
嗨,我想获取基站位置,但是我无法获取该位置。您能告诉我如何获取基站位置吗? - Dipali
1
实际上,新的API显然是CellIdentityGsm:它有getCid()getLac()方法。 - sleske
@sleske:仅为快捷信息。此为API 17(Android 4.2 Jelly Bean)及以上版本。 - poring91

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接