Apakah mungkin untuk mendapatkan lokasi pengguna saat ini tanpa menggunakan GPS atau internet? Maksud saya dengan bantuan penyedia jaringan seluler.
android
geolocation
gps
android-gps
Prabhu M
sumber
sumber
Jawaban:
Apa yang ingin Anda lakukan adalah mendapatkan posisi menggunakan
LocationManager.NETWORK_PROVIDER
alih - alihLocationManager.GPS_PROVIDER
. IniNETWORK_PROVIDER
akan menyelesaikan pada GSM atau wifi, yang pernah tersedia. Tentunya dengan wifi off, GSM akan digunakan. Perlu diingat bahwa menggunakan jaringan seluler pada dasarnya akurat hingga 500 m.http://developer.android.com/guide/topics/location/obtaining-user-location.html memiliki beberapa informasi dan contoh kode yang sangat bagus.
Setelah Anda menyelesaikan sebagian besar kode
OnCreate()
, tambahkan ini:// Acquire a reference to the system Location Manager LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); // Define a listener that responds to location updates LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { // Called when a new location is found by the network location provider. makeUseOfNewLocation(location); } public void onStatusChanged(String provider, int status, Bundle extras) {} public void onProviderEnabled(String provider) {} public void onProviderDisabled(String provider) {} }; // Register the listener with the Location Manager to receive location updates locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Anda juga bisa membuat aktivitas Anda mengimplementasikan
LocationListener
kelas dan kemudian mengimplementasikannyaonLocationChanged()
dalam aktivitas Anda.sumber
Dengan mendapatkan
getLastKnownLocation
Anda tidak benar-benar memulai perbaikan sendiri.Ketahuilah bahwa ini dapat memulai penyedia, tetapi jika pengguna pernah mendapatkan lokasi sebelumnya, saya rasa itu tidak akan terjadi. Dokumen tidak terlalu jelas tentang ini.
Menurut dokumen getLastKnownLocation:
Berikut ini cuplikan singkatnya:
import android.content.Context; import android.location.Location; import android.location.LocationManager; import java.util.List; public class UtilLocation { public static Location getLastKnownLoaction(boolean enabledProvidersOnly, Context context){ LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); Location utilLocation = null; List<String> providers = manager.getProviders(enabledProvidersOnly); for(String provider : providers){ utilLocation = manager.getLastKnownLocation(provider); if(utilLocation != null) return utilLocation; } return null; } }
Anda juga harus menambahkan izin baru ke
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
sumber
PASSIVE_PROVIDER
,NETWORK_PROVIDER
danGPS_PROVIDER
.boolean gps_enabled = false; boolean network_enabled = false; LocationManager lm = (LocationManager) mCtx .getSystemService(Context.LOCATION_SERVICE); gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER); Location net_loc = null, gps_loc = null, finalLoc = null; if (gps_enabled) gps_loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (network_enabled) net_loc = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (gps_loc != null && net_loc != null) { //smaller the number more accurate result will if (gps_loc.getAccuracy() > net_loc.getAccuracy()) finalLoc = net_loc; else finalLoc = gps_loc; // I used this just to get an idea (if both avail, its upto you which you want to take as I've taken location with more accuracy) } else { if (gps_loc != null) { finalLoc = gps_loc; } else if (net_loc != null) { finalLoc = net_loc; } }
sumber
Tidak, saat ini Anda tidak bisa mendapatkan lokasi tanpa menggunakan GPS atau internet.
Teknik lokasi berdasarkan WiFi, Seluler, atau Bluetooth berfungsi dengan bantuan database besar yang terus diperbarui. Perangkat memindai ID pemancar dan kemudian mengirimkannya dalam kueri melalui internet ke layanan seperti Google, Apple, atau Skyhook. Layanan tersebut merespons dengan lokasi berdasarkan survei nirkabel sebelumnya dari lokasi yang diketahui. Tanpa akses internet, Anda harus memiliki salinan lokal dari database tersebut dan selalu memperbaruinya. Untuk penggunaan global, ini sangat tidak praktis.
Secara teoritis, penyedia seluler dapat menyediakan layanan data lokal saja tetapi tidak dapat mengakses internet, dan kemudian menjawab pertanyaan lokasi dari perangkat seluler. Operator seluler tidak melakukan ini; tidak ada yang mau membayar untuk akses data yang dibatasi semacam ini. Jika Anda memiliki layanan data melalui penyedia seluler Anda, maka Anda memiliki akses internet.
Singkatnya, menggunakan LocationManager.NETWORK_PROVIDER atau android.hardware.location.network untuk mendapatkan lokasi membutuhkan penggunaan internet.
Menggunakan posisi terakhir yang diketahui mengharuskan Anda memiliki GPS atau akses internet baru-baru ini. Jika Anda baru saja memiliki internet, kiranya Anda dapat menyesuaikan posisi atau pengaturan Anda untuk mendapatkan internet kembali. Jika perangkat Anda tidak memiliki GPS atau akses internet, fitur posisi terakhir yang diketahui tidak akan membantu Anda.
Tanpa GPS atau internet, Anda dapat:
sumber
Di sini mungkin untuk mendapatkan lokasi Pengguna saat ini Tanpa menggunakan GPS dan Penyedia Jaringan.
1.
Convert cellLocation to real location (Latitude and Longitude), using "http://www.google.com/glm/mmap"
2. Klik Di Sini Untuk Referensi Anda
sumber
Sudahkah Anda melihat Api Geolokasi Google Maps? Google Map Geolocation
Ini adalah RestApi sederhana, Anda hanya perlu POST permintaan, layanan akan mengembalikan lokasi dengan akurasi dalam meter.
sumber
Tampaknya dimungkinkan untuk melacak ponsel pintar tanpa menggunakan GPS.
Sumber:
Utama: "PinMe: Melacak Pengguna Ponsel Cerdas di Seluruh Dunia"
Sekunder: "Cara Melacak Ponsel Tanpa GPS — atau Persetujuan"
Saya belum menemukan tautan ke kode akhir tim. Ketika saya melakukannya, saya akan memposting, jika orang lain belum melakukannya.
sumber
Anda dapat menggunakan TelephonyManager untuk melakukan itu.
sumber