問題描述
我開發(fā)了一個使用 GPS 查找用戶位置的應用程序.
I have developed an application to find the user's location using GPS.
這里沒有錯誤.它使用 Wifi 正確找到位置,但在 GPS 模式下它不返回任何值.我在清單中添加了所需的權限,并且 GPS 已打開.
In this there is no error. It finds the location using Wifi correctly, but in GPS mode it doesn't return any values. I added the needed permission in the manifest and GPS is on.
誰能告訴我如何使用 Gps 獲取位置?
Can someone please tell me how to get the location using Gps?
我在這里包含了我的代碼:
I have included my code here:
package c.g.a.loation;
public class UseGps extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
mlocListener);
}
/* Class My Location Listener */
public class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
Geocoder gp = new Geocoder(getBaseContext());
try {
ArrayList<Address> address = (ArrayList<Address>) gp
.getFromLocation(loc.getLatitude(), loc.getLongitude(),
1);
if (address != null && address.size() > 0) {
Toast.makeText(getBaseContext(), address.get(0).toString(),
Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}
@Override
public void onProviderEnabled(String arg0) {}
}
public void onProviderEnabled(String provider) {
// Toast.makeText(
// getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
推薦答案
我有兩個想法...
您的代碼未檢查以確保 GPS 提供程序已啟用.我看到注釋掉的代碼在啟用任何提供程序時發(fā)送 Toast,但您可能需要檢查是否在 onCreate() 中啟用了 GPS 提供程序.
Your code is not checking to make sure the GPS provider is enabled. I see commented out code send a Toast when ANY provider is enabled, but you might want to check that the GPS provider is enabled in onCreate().
您需要等待多長時間才能獲得 GPS 位置?GPS_PROVIDER 有時可能需要一段時間才能獲得 GPS 定位.我已經在兩分鐘前看到了 TTFF(修復拳頭的時間)值.更糟糕的是,我發(fā)現不同版本的 Android 以及不同的設備在 TTFF 上存在巨大差異.
How long are you waiting to get the GPS location? The GPS_PROVIDER can sometimes take a while to get a GPS fix. I have seen TTFF (time to fist fix) values of over two minutes before. To make matters worse, I have seen drastic TTFF differences in different versions of Android as well as different devices.
我建議您也嘗試從其他應用獲取 GPS 定位,看看需要多長時間.我通常會啟動谷歌地圖或 GPS 狀態(tài)(從市場上免費),以了解他們需要多長時間才能獲得 GPS 修復.如果您嘗試使用 Google 地圖,請確保它正在獲取 GPS 定位,而不僅僅是來自 NETWORK_PROVIDER 的位置(屏幕頂部的 GPS 圖標應該停止閃爍).
I would recommend that you also try getting a GPS fix from another app to see how long that takes. I generally launch either Google Maps, or GPS Status (free from the market) to get a feeling for how long they take to get a GPS fix. If you try Google Maps, be sure that it is getting the GPS fix and not only a location from the NETWORK_PROVIDER (the GPS icon at the top of your screen should stop flashing).
這篇關于使用 Wifi 時查找當前位置有效,但使用 GPS 時失敗的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!