Клеточная триангуляция на BlackBerry - PullRequest
1 голос
/ 02 мая 2010

Есть идеи, как сделать триангуляцию для телефонов Blackberry и J2ME? Я знаю, как получить идентификатор ячейки, но я не смог провести триангуляцию.

1 Ответ

2 голосов
/ 03 мая 2010

Если вы можете отправить HTTP-сообщение на произвольный сайт, вы можете использовать Google geolocation api .

Просто отправьте данные в следующем формате JSON в https://www.google.com/loc/json.

См. Ссылку выше, как добавить дополнительную информацию в свой JSON с Wi-Fi и т. Д., Чтобы значительно повысить точность результата. И обратите особое внимание на мобильный код страны, получив его неочевидно .

{
  "version": "1.1.0",
  "cell_towers": [
    {
      "cell_id": "42",
      "location_area_code": 415,
      "mobile_country_code": 310,
      "mobile_network_code.": 410,
      "age": 0,
      "signal_strength": -60,
      "timing_advance": 5555
    },
    {
      "cell_id": "88",
      "location_area_code": 415,
      "mobile_country_code": 310,
      "mobile_network_code": 580,
      "age": 0,
      "signal_strength": -70,
      "timing_advance": 7777
    }
  ]
}

Это вернет вам оценку Google широты / долготы вашего местоположения, а также точность и, при желании, геокодированный адрес. Вы можете проверить это быстро, например с расширением Chrome под названием REST Console.

Однако, похоже, Blackberry API предоставляет информацию только о текущей подключенной ячейке, но не о других видимых, но незарегистрированных ячейках. В этой ситуации нельзя делать триангуляцию, так как вам (неудивительно) нужны три точки для триангуляции! Однако менее точная радиальная оценка местоположения все еще возможна.

Вы все еще можете использовать Google API для этого, предоставив только одну вышку, или вы можете использовать Ericsson API , если хотите. Возможно, вы захотите проверить с обоими и сравнить точность. API Ericcson - это API-интерфейс JSON, аналогичный API Google, но он ожидает только одну ячейку в качестве входных данных. Учебное пособие доступно , но сводится к запросу JSON, например:

StringBuffer url = new StringBuffer();
url.append("http://cellid.labs.ericsson.net/json/lookup");
url.append("?cellid=").append(cell.getCellId());
url.append("&mnc=").append(cell.getMnc());
url.append("&mcc=").append(cell.getMcc());
url.append("&lac=").append(cell.getLac());
url.append("&key=").append(API_KEY);
try {
  byte[] data = getHttp(url.toString());
  if(data!=null) {
    JSONObject o = new JSONObject(new String(data));
    JSONObject pos = o.getJSONObject("position");
    this.longitude = pos.getDouble("longitude");
    this.latitude = pos.getDouble("latitude");
    this.accuracy = pos.getDouble("accuracy");
    this.cellName = pos.optString("name");
  }
} catch (IOException e) {
  e.printStackTrace();
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...