2011-01-02 7 views
2

現在、アンドロイドアプリケーションでGPSを使用しています。アンドロイドドキュメントでは、私は次の行アンドロイドアプリケーションでGPSを使用する

LocationProvider locationProvider = LocationManager.NETWORK_PROVIDER; 

// Or, use GPS location data: 

// LocationProvider locationProvider = LocationManager.GPS_PROVIDER; 

locationManager.requestLocationUpdates(locationProvider, 0, 0, locationListener); 

を見たが、LocationProviderは、我々はまた、 最初の行は、オブジェクトlocationProviderに文字列を返す、LocationProviderをインスタンス化してくるどのように抽象クラスです。 ドキュメントが間違っているか、これは

答えて

1

がLocationManagerをインスタンス化するために他のいくつかの説明が必要かどうか、誰もが私の疑問をクリアすることができ、2つの選択肢があります:

  1. は、すべての抽象メソッドをLocationProviderを拡張して実装したクラスを作成します
  2. 取得LocationManager.getProviderを使用するインスタンス(LocationManagerを拡張するクラスのインスタンスを返す)

#2の場合: あなたはf最初にContext.getSystemService(Context.LOCATION_SERVICE)を使用してLocationManagerのインスタンスを取得する必要があります。

次に、LocationManager.getProviderを使用してLocationProviderインスタンスを取得します。

 
final LocationManager locationManager = context.getSystemService(Context.LOCATION_SERVICE); 
final LocationProvider locationProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER); 
+1

私はあなたが与えたものを得ることができますが、私たちはどのように抽象クラスを継承することができるLocationProviderをインスタンス化できますか? –

-1
private static LocationListener mGpsListener = new LocationListener() { 
    public void onLocationChanged(Location arg0) { 
     /// important stuff goes here 
    } 
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) { } 
    public void onProviderEnabled(String arg0) { } 
    public void onProviderDisabled(String arg0) { } 
}; 

private static LocationListener mNetworkListener = new LocationListener() { 
    public void onLocationChanged(Location arg0) { 
     /// important stuff goes here 
    } 
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) { } 
    public void onProviderEnabled(String arg0) { } 
    public void onProviderDisabled(String arg0) { } 
}; 

とどこかの事を初期化:誰もがあなたが求めているものを答えていないようにみえて、誰もが私が邪魔になる場所を取得する方法についての答えを投げているように見えるので

lm = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mGpsListener); 
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mNetworkListener); 
+0

誰でも質問を正しく見ることができますか?私たちは抽象クラスをインスタンス化できるかどうかを尋ねていますか? –

+1

http://developer.android.com/reference/android/location/LocationManager.htmlのドキュメントを参照して、使用するプロバイダを示す文字列定数を指定します。プロバイダオブジェクト(あなたではなくAPIによってインスタンス化されます)を取得するには、 'LocationManager.getProvider(String name);'を使用します。ただ、マニュアルを読んでください。 – mvds

4

を。

ドキュメントを見たときと同じ質問がありました。次の行:

LocationProvider locationProvider = LocationManager.NETWORK_PROVIDER;

は、おそらくあることを意図していた :

LocationProvider locationProvider = locationManager.getProvider(LocationManager.NETWORK_PROVIDER);

LocationProviderは抽象クラスなので、これはので、あなたが保証され、あなたがlocationProviderをsublcasesクラスのインスタンスを受け取ったことを意味LocationProviderドキュメントで定義されたメソッドを呼び出すことができます。

これは、コピーを避けるためにプロッターで書かれたものではなく、おそらくコピーではないものでした。&ペーストプログラミング。

関連する問題