Pertanyaan Bagaimana cara mendapatkan Lokasi dengan Wifi di Android?


Saya Ingin mendapatkan lokasi dengan Wifi dan bekerja di peta Google, dan itu tidak bekerja untuk saya tetapi Gps tidak apa-apa dan tidak masalah.

kode saya:

locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

if (locationManager != null) {
    boolean gpsIsEnabled = locationManager
            .isProviderEnabled(LocationManager.GPS_PROVIDER);
    boolean networkIsEnabled = locationManager
            .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

    if (gpsIsEnabled) {
        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 5000L, 10F,
                (android.location.LocationListener) this);
    } else if (networkIsEnabled) {
        locationManager.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER, 5000L, 10F,
                (android.location.LocationListener) this);
    } else {
        // Show an error dialog that GPS is disabled...
    }
} else {
    // Show some generic error dialog because something must have gone
    // wrong with location manager.
}

AndroidManifest:

<uses-library android:name="com.google.android.maps" />

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyB4C_zHeHYMTWqW4_Wpin-5jLF9S54KDSQ" />
</application>

<permission
android:name="com.karyan.karyanmap.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />

<uses-permission android:name="com.karyan.karyanmap.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission    android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"  />

<uses-feature android:name="android.hardware.wifi" android:required="true"/>
<uses-feature
android:name="android.hardware.camera"
android:required="false" >
</uses-feature>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />

Newtork_Provider adalah null ketika wifi terhubung ke Intenet .. Bagaimana Mengatasi Masalah

Terima kasih..


4
2017-09-16 11:21


asal


Jawaban:


Jika Anda terhubung ke WIFI maka cukup gunakan NETWORK PROVIDER untuk pembaruan lokasi Anda. mereka akan cepat dan cukup akurat juga.

umumnya jika pembaruan lokasi tidak diperlukan begitu sering maka pembaruan lokasi diminta dari kedua GPS dan NETWORK bersama pada saat yang bersamaan. setiap kali Anda mendapatkan pembaruan lokasi dari keakuratan yang diinginkan unregister dari pembaruan lokasi mendengarkan.

Tetapi jika pembaruan lokasi diperlukan sering maka memanggil GPS dapat menjadi PEMBUNUH BATERAI juga jadi hati-hati menggunakan GPS PROVIDER.

Pembaruan GPS tersedia baik di bawah langit terbuka saja. Pembaruan GPS membutuhkan waktu, membutuhkan baterai tetapi Lebih Akurat.

Pembaruan Jaringan lebih cepat, mengkonsumsi lebih sedikit baterai tetapi relatif kurang akurat. Tetapi jika kita berbicara tentang akurasi WIFI, akan mendekati 50 atau 100 yang dapat melayani banyak persyaratan waktu nyata.

Itu semua tergantung pada kebutuhan Anda.


4
2017-09-16 11:28



Katakanlah, bisakah saya mengatur "permintaan Pembaruan Lokasi" untuk GPS_PROVIDER dan NETWORK_PROVIDER (atau PASSIVE_PROVIDER) ke panggilan fungsi yang sama seperti ini:

// SETUP Location Manager
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0, this);

Dalam hal ini, saya hanya mendapatkan data GPS.


3
2017-11-08 04:26