2013-05-01 48 views
0

我創建了一個應用程序顯示位置與網絡提供商或GPS提供商用戶選擇 通過複選框。當用戶選擇不啓用GPS工作fine.But當用戶選擇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提供商。 謝謝。

+1

您應該發佈顯示崩潰/異常的LogCat代碼片段。 – Ridcully 2013-05-01 17:11:01

+0

我用LogCat更新它 – 2013-05-01 17:59:53

回答

0

您是否已將適當的權限添加到清單文件中?

我認爲,你需要以下的GPS /位置代碼之一:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
+0

Permisions是OK。我有兩個。我的問題是最好的供應商選擇。 – 2013-05-01 17:11:36

+0

請把logcat。 – Siddharth 2013-05-01 17:18:47

+0

我用LogCat更新它。 – 2013-05-01 17:58:05

0

你可能這樣做的UI線程你應該做的一些研究在後臺線程上執行此操作。在UI線程上執行這種類型的工作對於應用程序來說非常耗時。

相關問題