当标准设置为高精度时,应用程序崩溃

时间:2015-11-18 03:36:13

标签: android google-maps location

我正在努力获得最高的定位精度,我所学到的是来自GPS提供商。我只需要获得一次位置,所以我不关心对电池寿命的影响。在我的功能代码中,位置似乎在完全不准确(1 + km)到非常准确(10m内)之间交替。在我的应用程序的测试中,我在手机上启用/禁用位置,打开/关闭wifi,打开/关闭数据。这只是为了试验,看看每个如何影响一般的准确性和应用程序。

以下代码是来自位置活动的onCreate方法:

last_event

但是当我添加@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map_layout); mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map_fragment)) .getMap(); mMap.setMyLocationEnabled(true); locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); //criteria.setAccuracy(Criteria.ACCURACY_HIGH); provider = locationManager.getBestProvider(criteria, true); mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); // Create the LocationRequest object mLocationRequest = LocationRequest.create() .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY) .setInterval(2 * 1000) // 10 seconds, in milliseconds .setFastestInterval(1 * 1000); // 1 second, in milliseconds } 行时,我的应用程序崩溃了。

发生了什么事?

编辑:这是logcat错误:

criteria.setAccuracy(Criteria.ACCURACY_HIGH);

我对android很新,不太确定相关部分是什么。

2 个答案:

答案 0 :(得分:7)

这一行是真正的错误:

E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.locationget/com.locationget.MapActivity}:java.lang.IllegalArgumentException: accuracy=3

这是我在搜索后发现的:

  

android Criteria有两组独立的精度常数。   ACCURACY_FINE和ACCURACY_COARSE用于一般位置,而   可以使用ACCURACY_LOW,ACCURACY_MEDIUM和ACCURACY_HIGH“   水平,高度,速度或轴承精度。“

因此,在您的情况下,请勿使用ACCURACY_HIGH,否则您将收到错误消息。请改用ACCURACY_COARSEACCURACY_FINE

答案 1 :(得分:4)

使用criteria.setAccuracy(Criteria.ACCURACY_FINE); 而不是criteria.setAccuracy(Criteria.ACCURACY_HIGH);

Criteria