2011-02-04 8 views
3

LocationManagerクラスのインスタンスを取得しようとしています(GPS関連の情報を取得しています)。ここに私のクラスはAndroidロケーションマネージャのコンパイルエラー

public class LocationManagerHelper { 

    static Location location = null; 

    public static Location getLocation() { 
     LocationManager manager = (LocationManager) Context.getSystemService(Context.LOCATION_SERVICE); 

     if(manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      Location location = manager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     } else { 
      System.out.println("Provider is disabled"); 
     } 
     return location; 
    } 
} 

おかげだ私はそうするように単純なクラスを書いて使用しているが、それは私にエラーを与えて

Cannot make a static reference to the non-static method getSystemService(String) from the type Context 

を終わります。

答えて

10

エラーメッセージは、クラスのインスタンスを必要とするコールを行うためにクラス()を使用していることを意味します。

getLocationにContextインスタンスを渡し、そのContextインスタンスを使用してgetSystemServiceを呼び出す必要があります。

public static Location getLocation (Context context) { 
    LocationManager manager = 
     (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
    //.... 

あなたはActivityからLocationManagerHelperを使用している場合は、あなたがコンテキストとして活動を渡すことができます。

LocationManagerHelper.getLocation(this); // "this" being an Activity instance 
+0

だから、それをこの作業を確認するために、私は、アクティブGPSとWi両方に自分の携帯電話が必要なのか-Fi。今まで働かなかった。 – Switch

+0

@MMRUser:あなたが示したコードでは、GPSが有効であれば十分です。それでも問題が解決しない場合は、新しい質問をして、コードを実行する際に何が起きているかどうかを記述してください。 –

関連する問題