Android 模拟 GPS 提供程序程序、Android、GPS

2023-09-07 04:22:26 作者:仅剩旳温纯

我的代码片段是:

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);

我收到了错误:

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).

编辑:找到相关内容:这里.基本上,模拟器中发生了一些似乎不稳定的事情.从该线程的评论中,尝试使用 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 );

    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.

 
精彩推荐
图片推荐