Bagaimana saya bisa mengejek lokasi saya di perangkat fisik (Nexus One)? Saya tahu Anda dapat melakukan ini dengan emulator di panel Kontrol Emulator, tetapi ini tidak berfungsi untuk perangkat fisik.
Untuk komputer desktop Anda dapat membuat / menginstal driver yang meniru perangkat GPS / perangkat port serial untuk keperluan melakukan pengujian semacam ini. Mungkin Anda bisa membuat atau menemukan sesuatu yang mirip untuk android.
AaronLS
6
Ada beberapa aplikasi di Market yang dapat meniru lokasi GPS. Misalnya "Location spoofer".
Ada aplikasi di pasar yang disebut "GPS Palsu". Jika Anda mengaktifkan Lokasi Mock pada perangkat Anda, itu menawarkan GUI yang bagus untuk mengatur lokasi Anda. Saya menyadari ini bukan solusi do-it-yourself, tetapi tentu saja solusi yang layak untuk pengujian cepat.
Tim Green
2
ini mungkin tautan - tanggal yang sama, dan konten yang relevan.
DefenestrationDay
4
@TimGreen milik Anda harus menjadi jawaban yang diterima (bukan hanya komentar)! Sejauh ini cara termudah untuk menguji
Bostone
Sebenarnya aplikasi "gps palsu" bukan yang terbaik karena hanya dapat mengatur lokasi dan bergerak secara acak. Versi baru mereka dapat dirutekan tetapi hanya beralih pada poin jalan sehingga lompatan besar di lokasi. Jawaban Janusz memang benar bahwa Anda perlu membuat penyedia mock Anda sendiri. Kami baru-baru ini melakukan itu dan jika ada yang membutuhkannya atau jika pertanyaan ini masih membutuhkan bantuan, saya akan memposting kode.
vkinra
5
Pernyataan "masuk kode Anda dan buat penyedia lokasi tiruan Anda sendiri" harus dijelaskan lebih terinci.
Dims
102
Jika Anda menggunakan telepon ini hanya di lab pengembangan, ada kemungkinan Anda dapat menyolder chip GPS dan memberi makan port serial langsung dengan urutan NMEA dari perangkat lain.
Mengapa pembenci? Jawaban ini adalah inti yang sangat sulit.
Ben Zotto
61
Hardcore awesomely meski tidak berguna / tidak relevan juga.
olivervbk
13
Cukup menyenangkan.
etienne
23
um, saya pikir siapa pun yang jawaban ini relevan, sudah tahu mereka bisa melakukan ini. Saya ragu ketiga orang tersebut mencari solusi stackoverflow.
ToolmakerSteve
10
Jika Anda mengalami kesulitan mencari tahu cara menghasilkan sekuens NMEA yang realistis ke dalam perangkat Anda yang tidak terjual, ada opsi yang luar biasa: menyolder di sana perangkat GPS eksternal yang sebenarnya dan memindahkan seluruh lab pengembangan di jalur yang sebenarnya, di atas tim pelari / pengendara sepeda motor / mobil / pesawat / apa pun tergantung pada kecepatan yang ingin Anda simulasikan. Jangan lupa untuk membuka lubang di atap lab pengembangan agar perangkat dapat menerima sinyal radio dari satelit. Sama-sama. ;-)
Stéphane Gourichon
32
Saya berharap saya punya kabel saya berguna. Saya tahu Anda bisa telnet ke emulator untuk mengubah lokasinya
$ telnet localhost 5554AndroidConsole: type 'help'for a list of commands
OK
geo fix -82.41162928.054553
OK
Saya tidak ingat apakah Anda bisa telnet ke perangkat Anda, tetapi saya pikir Anda bisa. Saya harap ini membantu.
Anda memerlukan adb (jembatan debugging android) untuk ini (CLI).
Anda mendapatkan izin yang ditolak untuk semua yang Anda kirim sebagai perintah ke konsol perangkat Anda. Mungkin dimungkinkan dengan aplikasi terminal tapi saya pikir itu memerlukan akses root
Janusz
Hanya saja kita berada di halaman yang sama: Anda tidak berbicara tentang "adb shell", bukan? Yang saya bicarakan berbeda, ini adalah pengaturan yang memungkinkan Anda untuk mengatur parameter khusus android. Saya tahu, misalnya, Anda dapat mengatur penerusan port (mis. Localhost: 1234 masuk ke ponsel: 1234) tanpa akses root, sehingga Anda dapat mengatur proxy dan terowongan SOCKS melalui kabel tanpa akar.
Tim Green
Anda dapat menggunakan adb forward tcp: 6000 tcp: 23 untuk meneruskan port 6000 pada mesin Anda ke port 23 pada perangkat tetapi saya tidak dapat menghubungkan bahkan jika port ditampilkan terbuka. Menggunakan klien telnet pada perangkat dan menghubungkan ke localhost juga gagal
Janusz
15
Ini berfungsi dengan baik untuk emulator tetapi tidak berfungsi untuk perangkat yang sebenarnya. Jadi itu tidak menjawab pertanyaan OP sama sekali :(
Matthew Gilliard
4
@TimGreen Solusi Anda hanya untuk emulator. Pertanyaannya adalah tentang perangkat nyata.
IgorGanapolsky
29
Anda dapat menggunakan izin Layanan Lokasi untuk mengejek lokasi ...
"android.permission.ACCESS_MOCK_LOCATION"
dan kemudian dalam kode java Anda,
// Set location by setting the latitude, longitude and may be the altitude...String[]MockLoc= str.split(",");Location location =newLocation(mocLocationProvider);Double lat =Double.valueOf(MockLoc[0]);
location.setLatitude(lat);Double longi =Double.valueOf(MockLoc[1]);
location.setLongitude(longi);Double alti =Double.valueOf(MockLoc[2]);
location.setAltitude(alti);
Saya sudah sukses dengan kode berikut. Meskipun itu membuat saya kunci tunggal untuk beberapa alasan (bahkan jika saya sudah mencoba pasangan LatLng berbeda), itu berhasil untuk saya. mLocationManageradalah LocationManageryang terhubung ke LocationListener:
privatevoid getMockLocation(){
mLocationManager.removeTestProvider(LocationManager.GPS_PROVIDER);
mLocationManager.addTestProvider
(LocationManager.GPS_PROVIDER,"requiresNetwork"=="","requiresSatellite"=="","requiresCell"=="","hasMonetaryCost"=="","supportsAltitude"=="","supportsSpeed"=="","supportsBearing"=="",
android.location.Criteria.POWER_LOW,
android.location.Criteria.ACCURACY_FINE
);Location newLocation =newLocation(LocationManager.GPS_PROVIDER);
newLocation.setLatitude (/* TODO: Set Some Lat */);
newLocation.setLongitude(/* TODO: Set Some Lng */);
newLocation.setAccuracy(500);
mLocationManager.setTestProviderEnabled
(LocationManager.GPS_PROVIDER,true);
mLocationManager.setTestProviderStatus
(LocationManager.GPS_PROVIDER,LocationProvider.AVAILABLE,null,System.currentTimeMillis());
mLocationManager.setTestProviderLocation
(LocationManager.GPS_PROVIDER,
newLocation
);}
Posting bagus, lihat jawaban saya di bawah ini untuk tambahan.
icyerasor
Sejauh yang saya ingat, setTestProviderStatusdigunakan di sini untuk memberi tahu / memposting ke / menjadwalkan acara dengan LocationManager bahwa penyedia GPS telah menemukan perbaikan "sekarang" sehingga pemrosesan acara tersebut dapat terjadi.
Dr1Ku
Apa arti dari " mLocationManageradalah LocationManageryang terhubung ke LocationListener"? bagaimana saya bisa melakukan ini? Terima kasih ..
Yehuda
Berikut ini satu artikel yang menjelaskan cara memeriksa perubahan lokasi menggunakan LocationManagerlayanan dan LocationListener: blog.doityourselfandroid.com/2010/12/25/…
Dr1Ku
2
ditambah 1 untuk cara Anda merepresentasikan true (s) dan false (s) dalam metode addTestProvider
A.Alqadomi
16
Apa yang diposting Dr1Ku berfungsi. Digunakan kode hari ini tetapi perlu menambahkan lebih banyak lok. Jadi, inilah beberapa peningkatan:
Opsional: Alih-alih menggunakan String LocationManager.GPS_PROVIDER, Anda mungkin ingin menentukan PROVIDER_NAME constat Anda sendiri dan menggunakannya. Saat mendaftar untuk pembaruan lokasi, pilih penyedia melalui kriteria alih-alih langsung menentukannya sebagai string.
Pertama: Alih-alih memanggil removeTestProvider, periksa terlebih dahulu apakah ada penyedia yang akan dihapus (untuk menghindari IllegalArgumentException):
Saran keren tentang mendefinisikan Penyedia Anda sendiri, hal dengan menggunakan GPS_PROVIDER adalah bahwa Anda (tampaknya) tidak dapat menyingkirkan penyedia tiruan (lebih tepatnya, Anda tidak dapat beralih ke GPS normal) hingga reboot. Pos yang luar biasa juga, saya akan memeriksa referensi!
Dr1Ku
@ Dr1KU Apakah masih Anda tidak dapat kembali ke GPS normal? Apakah itu ditentukan di suatu tempat?
Kaz Dragon
@KazDragon Itulah yang terjadi saat itu. Dari apa yang saya ingat, setelah menyalakannya Mock Provider, GPS normal tidak akan berfungsi, saya tidak bisa memperbaiki (saya sedang menguji langsung pada perangkat). Ini mungkin tidak terjadi karena banyak yang telah terjadi di Android sejak itu.
Dr1Ku
@ Dr1Ku Ah, well, saya melakukan sesuatu yang sangat mirip sekarang dan menerima hasil yang serupa dengan yang Anda gambarkan. Saya berharap untuk mengetahui apakah ini adalah pembatasan yang dibangun ke platform atau bahwa saya baru saja kehilangan panggilan fungsi di suatu tempat. Saya mungkin harus mengajukan pertanyaan tentang ini.
Kaz Dragon
9
Ada aplikasi yang tersedia di Android Market yang memungkinkan Anda menentukan "Lokasi GPS Mock" untuk perangkat Anda.
Saya mencari https://market.android.com dan menemukan aplikasi bernama "Lokasi Palsu Saya" yang berfungsi untuk saya.
Penyedia Mock GPS yang disebutkan oleh Paul di atas (di http://www.cowlumbus.nl/forum/MockGpsProvider.zip ) adalah contoh lain yang menyertakan kode sumber - walaupun saya tidak dapat menginstal APK yang disediakan (katanya Kegagalan [INSTALL_FAILED_OLDER_SDK] dan mungkin hanya perlu dikompilasi ulang)
Untuk menggunakan lokasi tiruan GPS, Anda harus mengaktifkannya di pengaturan perangkat Anda. Buka Pengaturan -> Aplikasi -> Pengembangan dan centang "Izinkan lokasi palsu"
Anda kemudian dapat menggunakan aplikasi seperti yang dijelaskan di atas untuk mengatur koordinat GPS dan peta Google dan aplikasi lain akan menggunakan lokasi GPS tiruan yang Anda tentukan.
Perhatikan bahwa Anda mungkin harus sementara meningkatkan "minSdkVersion" di file gradle modul Anda menjadi 17 untuk menggunakan metode "setElapsedRealtimeNanos".
Sertakan kode berikut di dalam kelas aktivitas utama:
privateclassMyLocationListenerimplementsLocationListener{@Overridepublicvoid onLocationChanged(Location location){// do whatever you want, scroll the map, etc.}}
Jalankan aplikasi Anda dengan AS. Di Android 6.0 dan di atasnya Anda akan mendapatkan pengecualian keamanan. Sekarang pergi ke Opsi Pengembang di Pengaturan dan pilih "Pilih aplikasi lokasi mock". Pilih aplikasi Anda dari daftar.
Sekarang ketika Anda mengetuk peta, onLocationChanged () akan memecat dengan koordinat keran Anda.
Saya baru saja memikirkan hal ini jadi sekarang saya tidak perlu menginjak-injak lingkungan dengan telepon di tangan.
Solusi yang disebutkan oleh icyerasor dan disediakan oleh Pedro di http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/ bekerja sangat baik untuk saya. Namun, ia tidak menawarkan dukungan untuk memulai, menghentikan, dan memulai kembali penyedia GPS tiruan dengan benar.
Saya telah sedikit mengubah kodenya dan menulis ulang kelas menjadi AsyncTask alih-alih sebuah Thread. Ini memungkinkan kami untuk berkomunikasi dengan Utas UI, sehingga kami dapat memulai ulang penyedia pada titik di mana kami berada ketika kami menghentikannya. Ini sangat berguna ketika orientasi layar berubah.
Anda juga harus mengaktifkan lokasi tiruan di pengaturan pengembang perangkat Anda. Jika itu tidak tersedia, setel "mock location application" ke aplikasi Anda setelah penerapan di atas.
Aplikasi GPS palsu dari google play membantu saya. Pastikan Anda membaca semua petunjuk dalam deskripsi aplikasi. Anda harus menonaktifkan layanan lokasi lain serta memulai aplikasi Anda setelah Anda mengaktifkan "GPS Palsu". Bekerja sangat baik untuk apa yang saya butuhkan.
Berikut ini tautan ke aplikasi di GooglePlay:
GPS Palsu
Saya menulis Aplikasi yang menjalankan WebServer (Seperti REST) di Ponsel Android Anda, sehingga Anda dapat mengatur posisi GPS dari jarak jauh . Situs web ini menyediakan Peta yang dapat Anda klik untuk mengatur posisi baru, atau gunakan tombol "wasd" untuk bergerak ke arah mana pun. Aplikasi ini adalah solusi cepat sehingga hampir tidak ada UI atau Dokumentasi, tetapi implementasinya lurus ke depan dan Anda dapat melihat semuanya dalam (hanya empat) kelas.
Jika perangkat Anda dicolokkan ke komputer Anda dan Anda mencoba mengubah mengirim tali GPS Melalui kontrol Emulator, itu tidak akan berfungsi.
Ini adalah kontrol EMULATOR karena suatu alasan.
Cukup atur untuk memperbarui Anda tentang perubahan GPS.
lm =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll =newLocationListener(){publicvoid onLocationChanged(Location location){// Called when a new location is found by the network location provider.
onGPSLocationChanged(location);}publicvoid onStatusChanged(String provider,int status,Bundle extras){
bigInfo.setText("Changed "+ status);}publicvoid onProviderEnabled(String provider){
bigInfo.setText("Enabled "+ provider);}publicvoid onProviderDisabled(String provider){
bigInfo.setText("Disabled "+ provider);}};
Ketika GPS diperbarui, tulis ulang metode berikut untuk melakukan apa yang Anda inginkan;
Saya ingin tahu apakah Anda memerlukan pengaturan Lokasi Mock yang rumit. Dalam kasus saya begitu saya mendapatkan lokasi perbaikan, saya memanggil fungsi untuk melakukan sesuatu dengan lokasi baru itu. Dalam penghitung waktu, buat lokasi tiruan. Dan panggil fungsi dengan lokasi itu saja. Mengetahui semua itu dalam waktu singkat GPS akan datang dengan lokasi aktual saat ini. Tidak apa-apa. Jika Anda memiliki waktu pembaruan yang ditetapkan cukup lama.
Mungkin ini bukan pendekatan 'programmer', tetapi jika Anda ingin menghemat waktu dan mendapatkan solusi yang berfungsi, cobalah salah satu aplikasi yang didedikasikan untuk lokasi palsu yang tersedia di Google Play:
Apakah Anda mencobanya? Apakah mereka berfungsi seperti yang diminta dalam pertanyaan?
arekolek
Ada preferensi? Atau apakah orang membutuhkan semuanya? : P
arekolek
Spoofer Lokasi GPS Palsu cukup baik, tetapi Lokasi Mock memungkinkan untuk mengatur rute yang merupakan fitur yang bagus.
klimat
0
Manfaatkan simulator lokasi interaktif yang sangat nyaman dan gratis untuk ponsel dan tablet Android (bernama CATLES). Ini mengolok-olok lokasi GPS pada tingkat sistem (bahkan di dalam Google Maps atau aplikasi Facebook) dan bekerja pada perangkat fisik maupun virtual:
android studio akan merekomendasikan bahwa "Lokasi mock hanya boleh diminta dalam file manifes uji atau debug khusus (biasanya src / debug / AndroidManifest.xml)" cukup nonaktifkan inspeksi
Sekarang pastikan Anda telah memeriksa " Izinkan lokasi palsu " di pengaturan pengembang ponsel Anda
Solusi di atas tidak bekerja untuk saya karena saya menguji pada perangkat Android dengan versi Google Play Services terbaru yang menggunakan FusedLocationProviderClient . Setelah mengatur izin lokasi tiruan di manifes aplikasi dan aplikasi sebagai aplikasi lokasi tiruan yang ditentukan dalam pengaturan pengembang (seperti yang disebutkan dalam jawaban sebelumnya), saya kemudian menambahkan kode Kotlin di bawah ini yang berhasil mengejek lokasi.
locationProvider =FusedLocationProviderClient(context)
locationProvider.setMockMode(true)
val loc =Location(providerName)
val mockLocation =Location(providerName)// a string
mockLocation.latitude = latitude // double
mockLocation.longitude = longitude
mockLocation.altitude = loc.altitude
mockLocation.time =System.currentTimeMillis()
mockLocation.accuracy =1f
mockLocation.elapsedRealtimeNanos =SystemClock.elapsedRealtimeNanos()if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.O){
mockLocation.bearingAccuracyDegrees =0.1f
mockLocation.verticalAccuracyMeters =0.1f
mockLocation.speedAccuracyMetersPerSecond =0.01f}// locationManager.setTestProviderLocation(providerName, mockLocation)
locationProvider.setMockLocation(mockLocation)
Jawaban:
Sepertinya satu-satunya cara yang harus dilakukan adalah menggunakan penyedia lokasi tiruan.
Anda harus mengaktifkan lokasi tiruan di panel pengembangan di pengaturan Anda dan menambahkan
ke manifes Anda.
Sekarang Anda dapat masuk dalam kode Anda dan membuat penyedia lokasi tiruan Anda sendiri dan mengatur lokasi penyedia ini.
sumber
Jika Anda menggunakan telepon ini hanya di lab pengembangan, ada kemungkinan Anda dapat menyolder chip GPS dan memberi makan port serial langsung dengan urutan NMEA dari perangkat lain.
sumber
Saya berharap saya punya kabel saya berguna. Saya tahu Anda bisa telnet ke emulator untuk mengubah lokasinya
Saya tidak ingat apakah Anda bisa telnet ke perangkat Anda, tetapi saya pikir Anda bisa. Saya harap ini membantu.
Anda memerlukan adb (jembatan debugging android) untuk ini (CLI).
sumber
Anda dapat menggunakan izin Layanan Lokasi untuk mengejek lokasi ...
"android.permission.ACCESS_MOCK_LOCATION"
dan kemudian dalam kode java Anda,
sumber
Saya sudah sukses dengan kode berikut. Meskipun itu membuat saya kunci tunggal untuk beberapa alasan (bahkan jika saya sudah mencoba pasangan LatLng berbeda), itu berhasil untuk saya.
mLocationManager
adalahLocationManager
yang terhubung keLocationListener
:sumber
setTestProviderStatus
digunakan di sini untuk memberi tahu / memposting ke / menjadwalkan acara dengan LocationManager bahwa penyedia GPS telah menemukan perbaikan "sekarang" sehingga pemrosesan acara tersebut dapat terjadi.mLocationManager
adalahLocationManager
yang terhubung ke LocationListener"? bagaimana saya bisa melakukan ini? Terima kasih ..LocationManager
layanan danLocationListener
: blog.doityourselfandroid.com/2010/12/25/…Apa yang diposting Dr1Ku berfungsi. Digunakan kode hari ini tetapi perlu menambahkan lebih banyak lok. Jadi, inilah beberapa peningkatan:
Opsional: Alih-alih menggunakan String LocationManager.GPS_PROVIDER, Anda mungkin ingin menentukan PROVIDER_NAME constat Anda sendiri dan menggunakannya. Saat mendaftar untuk pembaruan lokasi, pilih penyedia melalui kriteria alih-alih langsung menentukannya sebagai string.
Pertama: Alih-alih memanggil removeTestProvider, periksa terlebih dahulu apakah ada penyedia yang akan dihapus (untuk menghindari IllegalArgumentException):
Kedua: Untuk mempublikasikan lebih dari satu lokasi, Anda harus mengatur waktu untuk lokasi:
Tampaknya juga ada Uji google yang menggunakan MockLocationProviders: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/location/LocationManagerProximityTest.java
Contoh kerja bagus lainnya dapat ditemukan di: http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/
Artikel bagus lainnya adalah: http://ballardhack.wordpress.com/2010/09/23/location-gps-and-automated-testing-on-android/#comment-1358 Anda juga akan menemukan beberapa kode yang benar-benar berfungsi untuk saya di emulator.
sumber
Mock Provider
, GPS normal tidak akan berfungsi, saya tidak bisa memperbaiki (saya sedang menguji langsung pada perangkat). Ini mungkin tidak terjadi karena banyak yang telah terjadi di Android sejak itu.Ada aplikasi yang tersedia di Android Market yang memungkinkan Anda menentukan "Lokasi GPS Mock" untuk perangkat Anda.
Saya mencari https://market.android.com dan menemukan aplikasi bernama "Lokasi Palsu Saya" yang berfungsi untuk saya.
Penyedia Mock GPS yang disebutkan oleh Paul di atas (di http://www.cowlumbus.nl/forum/MockGpsProvider.zip ) adalah contoh lain yang menyertakan kode sumber - walaupun saya tidak dapat menginstal APK yang disediakan (katanya Kegagalan [INSTALL_FAILED_OLDER_SDK] dan mungkin hanya perlu dikompilasi ulang)
Untuk menggunakan lokasi tiruan GPS, Anda harus mengaktifkannya di pengaturan perangkat Anda. Buka Pengaturan -> Aplikasi -> Pengembangan dan centang "Izinkan lokasi palsu"
Anda kemudian dapat menggunakan aplikasi seperti yang dijelaskan di atas untuk mengatur koordinat GPS dan peta Google dan aplikasi lain akan menggunakan lokasi GPS tiruan yang Anda tentukan.
sumber
Ini bekerja untuk saya (Android Studio):
Nonaktifkan pelacakan GPS dan WiFi di ponsel. Pada Android 5.1.1 dan di bawah, pilih "aktifkan lokasi tiruan" di Opsi Pengembang.
Buat salinan manifes Anda di direktori src / debug. Tambahkan yang berikut ke sana (di luar tag "aplikasi"):
menggunakan-izin android: name = "android.permission.ACCESS_MOCK_LOCATION"
Menyiapkan fragmen peta yang disebut "peta". Sertakan kode berikut di onCreate ():
Perhatikan bahwa Anda mungkin harus sementara meningkatkan "minSdkVersion" di file gradle modul Anda menjadi 17 untuk menggunakan metode "setElapsedRealtimeNanos".
Sertakan kode berikut di dalam kelas aktivitas utama:
Jalankan aplikasi Anda dengan AS. Di Android 6.0 dan di atasnya Anda akan mendapatkan pengecualian keamanan. Sekarang pergi ke Opsi Pengembang di Pengaturan dan pilih "Pilih aplikasi lokasi mock". Pilih aplikasi Anda dari daftar.
Sekarang ketika Anda mengetuk peta, onLocationChanged () akan memecat dengan koordinat keran Anda.
Saya baru saja memikirkan hal ini jadi sekarang saya tidak perlu menginjak-injak lingkungan dengan telepon di tangan.
sumber
Saya telah membuat Handler sederhana yang mensimulasikan posisi bergerak dari posisi awal.
Mulai di panggilan balik koneksi Anda:
Kelas Handler:
Semoga bisa membantu ..
sumber
Solusi yang disebutkan oleh icyerasor dan disediakan oleh Pedro di http://pedroassuncao.com/blog/2009/11/12/android-location-provider-mock/ bekerja sangat baik untuk saya. Namun, ia tidak menawarkan dukungan untuk memulai, menghentikan, dan memulai kembali penyedia GPS tiruan dengan benar.
Saya telah sedikit mengubah kodenya dan menulis ulang kelas menjadi AsyncTask alih-alih sebuah Thread. Ini memungkinkan kami untuk berkomunikasi dengan Utas UI, sehingga kami dapat memulai ulang penyedia pada titik di mana kami berada ketika kami menghentikannya. Ini sangat berguna ketika orientasi layar berubah.
Kode, bersama dengan proyek sampel untuk Eclipse, dapat ditemukan di GitHub: https://github.com/paulhoux/Android-MockProviderGPS
Semua kredit harus diberikan kepada Pedro untuk melakukan sebagian besar kerja keras.
sumber
Tambahkan ke manifes Anda
Fungsi lokasi tiruan
Anda juga harus mengaktifkan lokasi tiruan di pengaturan pengembang perangkat Anda. Jika itu tidak tersedia, setel "mock location application" ke aplikasi Anda setelah penerapan di atas.
sumber
Aplikasi GPS palsu dari google play membantu saya. Pastikan Anda membaca semua petunjuk dalam deskripsi aplikasi. Anda harus menonaktifkan layanan lokasi lain serta memulai aplikasi Anda setelah Anda mengaktifkan "GPS Palsu". Bekerja sangat baik untuk apa yang saya butuhkan.
Berikut ini tautan ke aplikasi di GooglePlay: GPS Palsu
sumber
Tutorial Google untuk melakukan ini dapat ditemukan di sini, memberikan contoh kode dan menjelaskan prosesnya.
http://developer.android.com/training/location/location-testing.html#SendMockLocations
sumber
Instal aplikasi GPS Palsu https://play.google.com/store/apps/details?id=com.incorporateapps.fakegps.fre&hl=id
Opsi pengembang -> Pilih aplikasi lokasi tiruan (Berarti, aplikasi lokasi palsu dipilih).
Aplikasi GPS palsu :
Klik dua kali peta untuk menambahkan -> klik tombol putar -> Tampilkan roti panggang "Lokasi palsu dihentikan"
akhirnya periksa dengan aplikasi google map.
sumber
Saya menulis Aplikasi yang menjalankan WebServer (Seperti REST) di Ponsel Android Anda, sehingga Anda dapat mengatur posisi GPS dari jarak jauh . Situs web ini menyediakan Peta yang dapat Anda klik untuk mengatur posisi baru, atau gunakan tombol "wasd" untuk bergerak ke arah mana pun. Aplikasi ini adalah solusi cepat sehingga hampir tidak ada UI atau Dokumentasi, tetapi implementasinya lurus ke depan dan Anda dapat melihat semuanya dalam (hanya empat) kelas.
Repositori proyek: https://github.com/juliusmh/RemoteGeoFix
sumber
Jika perangkat Anda dicolokkan ke komputer Anda dan Anda mencoba mengubah mengirim tali GPS Melalui kontrol Emulator, itu tidak akan berfungsi.
Ini adalah kontrol EMULATOR karena suatu alasan.
Cukup atur untuk memperbarui Anda tentang perubahan GPS.
Ketika GPS diperbarui, tulis ulang metode berikut untuk melakukan apa yang Anda inginkan;
Jangan lupa letakkan ini di manifes
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION
sumber
Saya ingin tahu apakah Anda memerlukan pengaturan Lokasi Mock yang rumit. Dalam kasus saya begitu saya mendapatkan lokasi perbaikan, saya memanggil fungsi untuk melakukan sesuatu dengan lokasi baru itu. Dalam penghitung waktu, buat lokasi tiruan. Dan panggil fungsi dengan lokasi itu saja. Mengetahui semua itu dalam waktu singkat GPS akan datang dengan lokasi aktual saat ini. Tidak apa-apa. Jika Anda memiliki waktu pembaruan yang ditetapkan cukup lama.
sumber
Mungkin ini bukan pendekatan 'programmer', tetapi jika Anda ingin menghemat waktu dan mendapatkan solusi yang berfungsi, cobalah salah satu aplikasi yang didedikasikan untuk lokasi palsu yang tersedia di Google Play:
Spoofer Lokasi GPS Palsu
Lokasi Mock
Lokasi GPS palsu
sumber
Manfaatkan simulator lokasi interaktif yang sangat nyaman dan gratis untuk ponsel dan tablet Android (bernama CATLES). Ini mengolok-olok lokasi GPS pada tingkat sistem (bahkan di dalam Google Maps atau aplikasi Facebook) dan bekerja pada perangkat fisik maupun virtual:
Situs web: http://ubicom.snet.tu-berlin.de/catles/index.html
Video: https://www.youtube.com/watch?v=0WSwH5gK7yg
sumber
Gunakan izin ini dalam file manifes
android studio akan merekomendasikan bahwa "Lokasi mock hanya boleh diminta dalam file manifes uji atau debug khusus (biasanya src / debug / AndroidManifest.xml)" cukup nonaktifkan inspeksi
Sekarang pastikan Anda telah memeriksa " Izinkan lokasi palsu " di pengaturan pengembang ponsel Anda
Gunakan LocationManager
Sekarang atur lokasi di mana pun Anda inginkan
sumber
Solusi di atas tidak bekerja untuk saya karena saya menguji pada perangkat Android dengan versi Google Play Services terbaru yang menggunakan FusedLocationProviderClient . Setelah mengatur izin lokasi tiruan di manifes aplikasi dan aplikasi sebagai aplikasi lokasi tiruan yang ditentukan dalam pengaturan pengembang (seperti yang disebutkan dalam jawaban sebelumnya), saya kemudian menambahkan kode Kotlin di bawah ini yang berhasil mengejek lokasi.
sumber