2012-01-07 2 views

答えて

0

GPSは非同期に別のスレッドを呼び出す必要はありませんが、GPSは位置を取得する際にユーザーインターフェイスをフリーズしません。最適なのは、progressDialogを使用して、positionを取得した後にprogressDialogを閉じることです。

1

研究、

public class LocListener implements LocationListener { 
    private static double lat =0.0; 
    private static double lon = 0.0; 
    private static double alt = 0.0; 
    private static double speed = 0.0; 

    public static double getLat() 
    { 
     return lat; 
    } 

    public static double getLon() 
    { 
     return lon; 
    } 

    public static double getAlt() 
    { 
     return alt; 
    } 

    public static double getSpeed() 
    { 
     return speed; 
    } 

    @Override 
    public void onLocationChanged(Location location) 
    { 
     lat = location.getLatitude(); 
     lon = location.getLongitude(); 
     alt = location.getAltitude(); 
     speed = location.getSpeed(); 
    } 

    @Override 
    public void onProviderDisabled(String provider) {} 
    @Override 
    public void onProviderEnabled(String provider) {} 
    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) {} 
} 

は今のスレッドでGPSを開始するため、このコードを使用します。

new Thread (new Runnable() 
{ 
    public void run() 
    { 
     locationManager = (LocationManager) getSystemService (Context.LOCATION_SERVICE); 
      locationListener = new LocListener(); 
      locationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
    } 
}).start(); 
+0

同じプロシージャを使用しましたが、エラーが発生しました.Looper.prepare()を呼び出さなかったスレッド内でハンドラを作成できません。 – DevAndroid

+0

こんにちはArjun、いくつかのコードの書式を修正しました。正しく表示されます。 –

+0

@DevAndroidあなたの質問にLogcatエラーを投稿してください。 –

0
private void turnGPSOn(){ 
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

    if(!provider.contains("gps")){ //if gps is disabled 
     final Intent poke = new Intent(); 
     poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); 
     poke.addCategory(Intent.CATEGORY_ALTERNATIVE); 
     poke.setData(Uri.parse("3")); 
     sendBroadcast(poke); 
    } 
} 

private void turnGPSOff(){ 
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 

    if(provider.contains("gps")){ //if gps is enabled 
     final Intent poke = new Intent(); 
     poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider"); 
     poke.addCategory(Intent.CATEGORY_ALTERNATIVE); 
     poke.setData(Uri.parse("3")); 
     sendBroadcast(poke); 
    } 
} 
関連する問題