Есть несколько вопросов по этой проблеме, но я не мог найти какой-либо метод без проблем. Я реализовал версию проекта с помощью GPS-провайдера, и теперь я хочу реализовать версию, которая может найти местоположение пользователя без GPS, используя только сетевого провайдера, такого как Wi-Fi. Я попытался это, но он не работает (я не мог получить «Done» сообщение в любом случае):Как получить постоянное местоположение пользователя без GPS
public class MapsActivity extends FragmentActivity {
double latitude;
double longitude;
LocationManager locationManager;
android.location.LocationListener networkLocationListener;
Location location;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
networkLocationListener = new android.location.LocationListener() {
public void onLocationChanged(Location location) {
latitude = location.getLatitude();
longitude = location.getLongitude();
Log.d("->", "done.");
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkLocationListener);
}
...
Кроме того, это мой файл манифеста:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.doruk.myapplication">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but are recommended.
-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/orange"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name=".ConnectionChangeReceiver"
android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
</application>
</manifest>
Вы можете увидеть проблему ? Что вы посоветуете в этот момент? Есть ли способ лучше?
Информативный ответ, но это не то, что я ищу. Мне нужно найти способ получить местоположение без GPS, так косвенно, без служб определения местоположения. Мне нужно получить местоположение, просто используя Wi-Fi соединение. Если вы проверили Yandex Maps, например, когда вы закрываете свои сервисы определения местоположения, но сохраняете открытый Wi-Fi, он продолжает получать ваше текущее местоположение и отображает его на карте. Рассмотрим два способа получить местоположение: 1. услуги определения местоположения, 2. Wi-Fi. Карты Yandex работают только с 1 или 2 и с 1 и 2, но мое текущее приложение работает с 1 и с наличием как 1, так и 2, должно работать только с 2. –
@DorukhanArslan [ссылка] (http://stackoverflow.com/questions/6694391/android-get-current-location-of-user-without-using-gps-or-internet) вы спрашиваете что-то вроде этого? – Hardy
Как ваш ответ, так и ответы, приведенные в этой ссылке, должны строго использовать службы определения местоположения, которые потребляют батарею чрезмерно. Я тестирую свое приложение с Asus Zenphone, и у этого телефона нет вкладки для GPS. А именно, он запускает GPS, когда открывается опция определения местоположения. Код, который я уже написал, но не помещал здесь, - это завершенная версия методики, которую вы посоветовали. Код, который я поставил на вопрос, тот же, что и в этой ссылке. К несчастью, оба они зависят от наличия служб определения местоположения. Мне нужно получить местоположение тогда и только тогда, когда соединение Wi-Fi работает только просто. –