- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想制作一个应用程序来查找接收信号强度和邻近的手机信号塔。我成功获取了每个相邻蜂窝塔的 cellid、mnc、mcc、lac 和信号强度。但我想使用 cellid、lac、mnc、mcc 计算每个蜂窝塔的距离以及与当前移动设备的方向。我不想使用互联网连接来做到这一点。可以计算吗??如果可能的话请建议如何。
最佳答案
如果没有互联网连接,这将很困难(不可能?)。但是,如果您能够使用互联网连接,则可以使用 Mozilla Location Service 查找邻居小区 ID(您提到您已经获得)。并获取纬度/经度。
关于获取手机当前位置,SO 有很多答案。这是一个很好的例子:Get current latitude and longitude android
现在,一旦您有了移动设备的纬度/经度和相邻小区的纬度/经度,就可以使用余弦定律来查找相邻小区和移动设备之间的距离:
d = acos( sin φ1 ⋅ sin φ2 + cos φ1 ⋅ cos φ2 ⋅ cos Δλ ) ⋅ R
可以这样实现,例如:
var φ1 = lat1.toRadians(), φ2 = lat2.toRadians(), Δλ = (lon2-lon1).toRadians(), R = 6371e3; // gives d in metres
var d = Math.acos( Math.sin(φ1)*Math.sin(φ2) + Math.cos(φ1)*Math.cos(φ2) * Math.cos(Δλ) ) * R;
对于标题,请使用以下公式:
θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ )
where φ1,λ1 is the start point, φ2,λ2 the end point (Δλ is the difference in longitude)
可以这样实现,例如:
var y = Math.sin(λ2-λ1) * Math.cos(φ2);
var x = Math.cos(φ1)*Math.sin(φ2) -
Math.sin(φ1)*Math.cos(φ2)*Math.cos(λ2-λ1);
var brng = Math.atan2(y, x).toDegrees();
(距离/航向公式由 website 提供)
查找相邻小区的信号强度是另一回事。根据技术(LTE/WCDMA/GSM),这可能可行,也可能不可能。 Here这是如何做到这一点的一个示例,但它可能不适用于所有技术类型。
关于java - 通过 cellId、LAC、MCC 和 MNC Android 获取当前移动站与相邻基站的距离和方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41073879/
前不久,哔哩哔哩(一般常称为 B 站)发布了一篇文章《2021.07.13 我们是这样崩的》,详细回顾了他们在 2021.07.13 晚上全站崩溃约 3 小时的至暗时刻,以及万分紧张的故障定位与恢复过
想象一下这种情况,周围有一些智能手机和计算机,它们的 WiFi 适配器(无线适配器)打开,但没有必要连接到网络。 有没有办法通过 Linux 机器查看 MAC 地址? 任何见解表示赞赏。 最佳答案 断
我无法创建新的 Window Station 来运行我的应用程序 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { wprintf(L"
在 Conda 环境中安装包后,我想对该包中的代码进行一些更改。 在哪里可以找到包含已安装包的 site-packages 目录? 我有 Anaconda Python 2.7 base 发行版,但找
今天去改了matplotlib的配置。搜索 matplotlibrc 发现我有两个: 查看site-packages 文件夹,我发现很多包的名称中都有波浪号: ~klearn 是 sklearn ,但
我是一名优秀的程序员,十分优秀!