2016-12-10 4 views
0

Я хочу сделать приложение, которое найдет уровень принимаемого сигнала и соседнюю ячейку. Я успешно получаю Cellid, mnc, mcc, lac и уровень сигнала каждой соседней сотовой башни. Но я хочу рассчитать расстояние каждой башни ячейки и направление от текущего мобильного телефона с помощью cellid, lac, mnc, mcc.I не хочу использовать интернет-соединение для этого. Можно ли вычислить ?? Пожалуйста, предложите мне, как это возможно.Возможно ли получить расстояние и направление соседней ячейки от текущей мобильной станции CellId, LAC, MCC и MNC Android?

ответ

0

Без подключения к Интернету это будет сложно (невозможно?). Однако, если вы можете использовать интернет-соединение, вы можете найти идентификатор соседней соты (который, как вы уже упоминали, вы уже получили), с Mozilla Location Service и получить широту/долготу.

Есть много ответов на 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 - один из примеров того, как это сделать, но он может не работать таким образом для всех типов технологий.

+0

Спасибо за ваш ответ. –

Смежные вопросы