Android的模拟GPS提供商提供商、Android、GPS

2023-09-07 15:32:36 作者:滚离莪远点

我的code段是:

mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if(mLocationManager.getProvider(LocationManager.GPS_PROVIDER) != null) {
    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 = new Location(LocationManager.GPS_PROVIDER);

mLocationManager.setTestProviderEnabled(
        LocationManager.GPS_PROVIDER, true);

// mLocationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER,
// location);

location.setLatitude(FinalLatitudeIntArray[0]);
location.setLongitude(FinalLongitudeIntArray[0]);
mLocationManager.setTestProviderLocation(
        LocationManager.GPS_PROVIDER, location);

我收到了错误:

I'm getting the error:

java.lang.IllegalArgumentException: Provider "gps" unknown
at android.os.Parcel.readException(Parcel.java:1326)
at android.os.Parcel.readException(Parcel.java:1276)
at android.location.ILocationManager$Stub$Proxy.removeTestProviderEnabled(ILocationManager.java:1097)
at android.location.LocationManager.removeTestProviderEnabled(LocationManager.java:1130)

请帮我整理出这个错误。 加上。 此前该应用程序运行良好,但是当我重新启动系统,应用程序启动示值误差。

Please help me sorting out this error. To add. Earlier the application was running fine, but when I rebooted the system, the application started showing error.

推荐答案

从Android文档上的位置经理:

From the Android docs on the location manager:

removeTestProvider() throws 
IllegalArgumentException    if no provider with the given name exists

所以,如果你正在测试的仿真器,支持GPS的设置可能已复位重新启动(请尝试检查权限和DDMS,使之再次)。如果在设备上,你必须有禁用GPS(转到设置和启用GPS )。

So, if you're testing on the emulator, the settings for GPS might have been reset by the reboot (try checking your permissions and DDMS to enable it again). If on the device, you must have disabled GPS (go to Settings and enable GPS).

修改:A HREF = 此处。基本上,有一些事情,似乎飘忽不定的模拟器。从该线程的意见,请尝试使用 Criteria.ACCURACY_FINE 而不是 LocationManager.GPS_PROVIDER ,如:

EDIT: Found something relevant: here. Basically there's something going on that seems erratic in the emulator. From the comments on that thread, try using Criteria.ACCURACY_FINE instead of LocationManager.GPS_PROVIDER, like:

LocationManager locationManager =(LocationManager)context.getSystemService(Context.LOCATION_SERVICE);

LocationManager locationManager = (LocationManager)context.getSystemService( Context.LOCATION_SERVICE );

    Criteria criteria = new Criteria();
    criteria.setAccuracy( Criteria.ACCURACY_FINE );
    String provider = locationManager.getBestProvider( criteria, true );

    if ( provider == null ) {
        Log.e( TAG, "No location provider found!" );
        return;
    }

穿过该线程以获取更多信息。

Go through that thread for further information.