0

チェックボックスを介してネットワークプロバイダーまたはGPSプロバイダーのユーザー選択で位置を表示するためのアプリケーションを作成しました。ユーザーがGPSを有効にしないことを選択した場合、正常に動作します。オープンエリアの仕事...そして問題のない仕事と家の中で。どうなりますか?このエラーを回避するにはどうすればよいですか?別のコード アプリケーションでコードを変更する必要がありますか?(ユーザーではありません)これは私のコードです....

  // Get the location manager
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// Define the criteria how to select the locatioin provider -> use
// default
if(gps_en==true){ //In previous activity with checkbox user choice preferences

    provider = LocationManager.GPS_PROVIDER;
    Location location = locationManager.getLastKnownLocation(provider);

    // Initialize the location fields
    if (location != null) {

        System.out.println("Provider " + provider + " has been selected.");

      onLocationChanged(location);

    } else {
      latituteField.setText("Location not available");
      longitudeField.setText("Location not available");
    }
}
else{
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);

// Initialize the location fields
if (location != null) {

    System.out.println("Provider " + provider + " has been selected.");

  onLocationChanged(location);

} else {
  latituteField.setText("Location not available");
  longitudeField.setText("Location not available");
  }

}


java.lang.NullPointerException
loc.LocTracker.onSensorChanged(LocTracker.java:769)
android.hardware.SensorManager$ListenerDelegate$1.handleMessage(SensorManager.java:580)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:4482)
java.lang.reflect.Method.invokeNative(Native Method)         
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
dalvik.system.NativeStart.main(Native Method)

私のコードのこの点について、より良い方法を提案できますか? 権限は問題ありません。最初に精度基準を備えたアプリの自動選択の最良のプロバイダーである GPS またはネットワークが必要です。ネットワーク プロバイダーから始めます。ユーザーがオープン エリア アプリを使用している場合、GPS プロバイダーの精度の方が優れている場合は、GPS プロバイダーを使用します。ありがとう。

4

2 に答える 2

0

おそらくUIスレッドでこれを行っているので、バックグラウンドスレッドでこれを行うことについて調査する必要があります。UI スレッドでこの種の作業を行うと、アプリにとって非常に時間がかかります。

于 2013-05-01T17:50:20.877 に答える