[英]How to get Location with Wifi in Android?
我希望通過Wifi獲取位置並在谷歌地圖中工作,這對我不起作用,但Gps沒問題,也沒問題。
我的代碼:
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" />
當wifi連接到Intenet時,Newtork_Provider為null。如何解決問題
謝謝..
比方說,我可以為GPS_PROVIDER和NETWORK_PROVIDER(或PASSIVE_PROVIDER)設置“請求位置更新”到相同的函數調用,如下所示:
// 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);
在這種情況下,我只獲得GPS數據。
如果您已連接到WIFI,則只需使用NETWORK PROVIDER進行位置更新。 它們會很快,也足夠准確。
通常,如果不經常需要位置更新,則同時從GPS和NETWORK一起詢問位置更新。 每當您獲得所需精度的位置更新時,請從偵聽位置更新中取消注冊。
但如果經常需要更新位置,那么調用GPS也可能是殺手電池,所以要小心使用GPS PROVIDER。
GPS更新僅在開闊天空下可用。 GPS更新需要時間,需要電池但更准確。
網絡更新速度更快,耗電量更少但准確度相對較低。 但是,如果我們談論WIFI准確度,它將接近50或100,可以滿足許多實時要求。
這一切都取決於您的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.