обновление местоположения через 3g
Я разрабатываю приложение для android, которое будет получать данные каждые 30 секунд и отправлять их на сервер, поэтому мобильный интернет необходим.
В настоящее время я использую GPS, но я также хочу использовать провайдера сети (Wi-Fi и вышки сотовой связи).
Но мой вопрос в том, как android получает информацию о местоположении через Wi-Fi? Если местоположение можно получить из Wi-Fi, то можно ли его получить из самого мобильного интернета?
Если нет, то почему? Если да, то покажите мне некоторые фрагменты кода, чтобы получить обновление местоположения из мобильного интернета, а также что может быть приблизительно точность? Мне нужна точность, чтобы быть в пределах 100 метров.
Я последовал за ними и получил это сомнение http://developer.android.com/guide/topics/location/strategies.html может ли приложение android извлекать информацию о местоположении из подключенной точки доступа Wi-Fi AP?
1 ответ:
Для получения местоположения из NETWORK_PROVIDER можно использовать следующее:
LocationListener locationListenerNetwork = new LocationListener() { public void onLocationChanged(Location location) { timer1.cancel(); locationResult.gotLocation(location); lm.removeUpdates(this); lm.removeUpdates(locationListenerGps); } public void onProviderDisabled(String provider) {} public void onProviderEnabled(String provider) {} public void onStatusChanged(String provider, int status, Bundle extras) {} }; LocationManager lm; if(lm==null) lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
Это, однако, основной пример, поэтому, чтобы различать wi-fi и 3g-сеть, сначала взгляните здесь и прежде, чем код выше:
Один из определенных способов получить то, что вы хотите, заключается в следующем:ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); State mobile = conMan.getNetworkInfo(0).getState(); State wifi = conMan.getNetworkInfo(1).getState();
После этого вы различаете их по:
if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) { //mobile } else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) { //wifi }
Проверьте, подключен ли мобильный или wifi, Если wifi - то используйте
Я надеюсь, что вся эта информация будет полезна для вас.PASSIVE_PROVIDER
, если мобильный-используйтеNETWORK_PROVIDER
.