簡體   English   中英

Android應用程序中的GPS_PROVIDER錯誤

[英]GPS_PROVIDER Error in Android Application

我創建了一個Android應用來檢索位置。 我嘗試使用GPS_PROVIDER,它返回null ..但是當我使用NETWORK_PROVIDER時工作順利..任何人都可以幫我解決這個問題嗎?

這是代碼

位置location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

當我用"GPS_PROVIDER"替換"NETWORK_PROVIDER"時,該位置變為null。

我在清單中添加了以下三個權限

<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"/>

GPS位置為空可能有兩個原因

  1. 可能是你的GPS不活躍。 嘗試從setting menu => Location & Security => Check Use GPS Satellites激活您的GPS setting menu => Location & Security => Check Use GPS Satellites
  2. 可能是您目前在GPS無法正常工作的建築物中。 從大樓出來檢查一下。 這可能發生在大部分時間。

根據文件

如果當前禁用了提供程序,則返回null。

確保您的GPS在設備上處於活動狀態,因此您不會收到空值。

編輯:
還可以嘗試使用GPS_PROVIDER運行requestLocationUpdates() ,也可以使用NETWORK_PROVIDER運行兩次。 LocationManager以最快的方式檢索位置並停止搜索。 由於GPS位置的檢索速度比網絡位置慢,因此如果發現GPS位置因此返回null,則會立即停止。

當我用“GPS_PROVIDER”替換“NETWORK_PROVIDER”時,該位置變為null

要解決此問題,請務必啟用位置服務

在此輸入圖像描述

記住文檔:

如果當前禁用了提供程序,則返回null。

如果禁用GPS,您可以使用兩個提供商,然后檢查網絡提供商:

...
 myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
 if(myLocation == null) {
            myLocation = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
 }

    if(myLocation != null) {
         //Get values for latitude and longitude!
    }
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM