После многих исследований я наконец получил ответ. Да, можно использовать Google Maps Geolocation API на Android TV, но с некоторыми ограничениями. Согласно документация, предоставленная API геолокации Google Maps. Это в основном два способа достижения этой цели.
1) Использование вышки сотовой связи.
2) Использование точек доступа WiFi.
Теперь, для 1-го способа курса это невозможно, потому что Android TV не имеет функции звонков или SIM-карты, поэтому он не может подключиться к Cell Tower, поэтому он не работает.
Что касается второго способа, это довольно интересно. Я исследовал эту вещь и, наконец, успешно реализовал ее. Еще одна вещь, которую я заметил, и также указано в документации, что при использовании IP-адреса он даст самый высокий коэффициент точности, чем точки доступа Cell Tower и WIFI. Итак, я рассматриваю как точки доступа WIFI, так и "thinkIp": "true" для максимальной точности.
После стольких исследований моя актуальная задача - реализовать эту штуку, и мне довольно легко реализовать это, потому что я знаю, как получить точки доступа WIFI, поэтому я использовал следующий способ получения точек доступа WIFI.
List<ScanResult> results;
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
results = wifiManager.getScanResults();
String message = "No results found.Please Check your wireless is on";
if (results != null)
{
final int size = results.size();
if (size == 0)
message = "No access points in range";
else
{
ScanResult bestSignal = results.get(0);
int count = 1;
for (ScanResult result : results)
{
if (WifiManager.compareSignalLevel(bestSignal.level, result.level) < 0)
{
bestSignal = result;
}
}
}
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
После получения списка точек доступа WIFI создайте JSONObject, который передает вызов API "https://www.googleapis.com/geolocation/v1/geolocate?key=your_key
". Я использовал Volley для вызова этого API. Для создания JSONObject, который содержит точки доступа WIFI, вот способ, который Меня использовали.
JSONObject parent;
try {
parent = new JSONObject();
parent.put("considerIp", false);
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject;
for (int i = 0; i < results.size(); i++) {
jsonObject = new JSONObject();
jsonObject.put("macAddress", results.get(i).BSSID);
jsonObject.put("signalStrength", results.get(i).level);
jsonObject.put("signalToNoiseRatio", 0);
jsonArray.put(jsonObject);
System.out.println("jsonObject: " + jsonObject.toString(4));
}
parent.put("wifiAccessPoints", jsonArray);
Log.d("output", parent.toString());
System.out.println("parenttttt: " + parent.toString(4));
txt_request.setText(parent.toString(4));
} catch (JSONException e) {
e.printStackTrace();
}
Из приведенного выше кода я использовал "parent.put (" thinkIp ", false)" причина использования false заключалась только в том, чтобы просто проверить, получил ли я точный результат с помощью точек доступа WIFI или нет. Вы можете сделать это истинным и увидеть результат то, что вы получите.
После успешного ответа вы получили результат, в котором указаны широта и долгота с коэффициентом точности, который показывает, насколько точным был результат. Вы получили ответ примерно так.
{
"location":
{
"lat": your latitude,
"lng": your longitude
},
"accuracy": How accurate the result was [like 1523, 1400.25 etc.]
}
Это способ реализовать API геолокации Google Maps в Android TV, вот и все.
person
Andy Developer
schedule
19.06.2017