Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过cellId、LAC、MCC和MNC Android从当前移动台获取邻居手机塔的距离和方向?_Java_Android_Gsm_Wireless_Rssi - Fatal编程技术网

Java 通过cellId、LAC、MCC和MNC Android从当前移动台获取邻居手机塔的距离和方向?

Java 通过cellId、LAC、MCC和MNC Android从当前移动台获取邻居手机塔的距离和方向?,java,android,gsm,wireless,rssi,Java,Android,Gsm,Wireless,Rssi,我想做一个应用程序,找到接收到的信号强度和相邻的基站。我成功地获得了cellid、mnc、mcc、lac和每个相邻基站的信号强度。但我想用cellid、lac、mnc、mcc来计算每个基站的距离和方向。我不想用网络连接来做这件事。 可以计算吗?? 如果可能,请提出建议。如果没有internet连接,这将很困难(不可能?)。但是,如果您能够使用internet连接,则可以使用查找邻居小区id(您提到的已经获得)并获得纬度/经度 关于获取手机的当前位置,有很多答案。下面是一个很好的例子: 现在,一旦

我想做一个应用程序,找到接收到的信号强度和相邻的基站。我成功地获得了cellid、mnc、mcc、lac和每个相邻基站的信号强度。但我想用cellid、lac、mnc、mcc来计算每个基站的距离和方向。我不想用网络连接来做这件事。 可以计算吗??
如果可能,请提出建议。

如果没有internet连接,这将很困难(不可能?)。但是,如果您能够使用internet连接,则可以使用查找邻居小区id(您提到的已经获得)并获得纬度/经度

关于获取手机的当前位置,有很多答案。下面是一个很好的例子:

现在,一旦您拥有移动lat/long和相邻小区lat/long,使用余弦定律来查找相邻小区和移动台之间的距离:

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;
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();
关于标题,使用以下公式:

θ = 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 φ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;
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();
(距离/航向公式由本公司提供)


从邻居小区中找到信号强度是另一回事。根据技术(LTE/WCDMA/GSM),这可能是可能的,也可能是不可能的。这是如何做到这一点的一个例子,但它可能不适用于所有技术类型。

如果没有互联网连接,这将很困难(不可能?)。但是,如果您能够使用internet连接,则可以使用查找邻居小区id(您提到的已经获得)并获得纬度/经度

关于获取手机的当前位置,有很多答案。下面是一个很好的例子:

现在,一旦您拥有移动lat/long和相邻小区lat/long,使用余弦定律来查找相邻小区和移动台之间的距离:

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;
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();
关于标题,使用以下公式:

θ = 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 φ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;
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();
(距离/航向公式由本公司提供)


从邻居小区中找到信号强度是另一回事。根据技术(LTE/WCDMA/GSM),这可能是可能的,也可能是不可能的。这是如何做到这一点的一个例子,但它可能不适用于所有技术类型。

谢谢你的回答。谢谢你的回答。