2013-06-13 13 views
5

my-location layerを有効にするGoogleマップ上のユーザーの位置を表示したいのですが、この機能を使用するには "ACCESS_FINE_LOCATION" GPS。 GoogleMapがGPSから位置を取得しようとしないようにすることはできますか?Google Maps API Android v2 - my-locationレイヤーを有効にした場合、「ACCESS_FINE_LOCATION」のアクセス許可が必要です

私は、できるだけ早く私はマップを表示しようとして、マニフェストファイルに次のエラーでアプリがクラッシュを許可「ACCESS_FINE_LOCATION」を削除した場合:

E/AndroidRuntime(28578): FATAL EXCEPTION: main 
E/AndroidRuntime(28578): java.lang.SecurityException: Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations. 
E/AndroidRuntime(28578): at android.os.Parcel.readException(Parcel.java:1425) 
E/AndroidRuntime(28578): at android.os.Parcel.readException(Parcel.java:1379) 
E/AndroidRuntime(28578): at bbj.a(SourceFile:424) 
E/AndroidRuntime(28578): at bbn.a(SourceFile:232) 
E/AndroidRuntime(28578): at maps.al.b.j(Unknown Source) 
E/AndroidRuntime(28578): at uh.h(SourceFile:642) 
E/AndroidRuntime(28578): at un.a(SourceFile:399) 
E/AndroidRuntime(28578): at uj.a(SourceFile:158) 
E/AndroidRuntime(28578): at ui.handleMessage(SourceFile:111) 
E/AndroidRuntime(28578): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(28578): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(28578): at android.app.ActivityThread.main(ActivityThread.java:5041) 
E/AndroidRuntime(28578): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(28578): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(28578): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
E/AndroidRuntime(28578): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
E/AndroidRuntime(28578): at dalvik.system.NativeStart.main(Native Method) 

答えて

4

をあなたは供給しLocationSourceパターンを使用することができますどこから来てもよいあなた自身の場所。 LocationSourceは、場所データを提供できるオブジェクトに実装するインターフェイスです。 GoogleMapsetLocationSource()と登録してください。 とdeactivate()のメソッドをLocationSourceに実装して、場所を開始して終了するタイミングを知らせるために呼び出されます。場所の修理を受けると、付属のOnLocationChangedListeneronLocationChanged()と電話します。

This sample projectは、LocationSourceの使用を示している。

+0

すぐにお返事ありがとうございます! – Donkey

+0

GoogleApiClientを使用して地域を処理することをおすすめします。ここで私は賞金を受け取って公開質問を持っています:http://stackoverflow.com/questions/28108326/android-google-maps-location-with-low-battery-usage –

3

LocationSourceのデフォルトの実装は、必ずしも正確な位置を返すためにGPSを使用する必要はありません。

If I remove the permission "ACCESS_FINE_LOCATION" in the Manifest file, as soon as I try to display the map, the app crashes

デフォルトの実装ではLocationRequest.PRIORITY_HIGH_ACCURACYLocationClientを使用しているためです。

は、今のあなたはCommonsWareの答えを以下のより多くの何もしないことができますが、GoogleMap.setMyLocationEnabledを行っているときにのみACCESS_COARSE_LOCATION許可を要求する場合、デフォルトの実装が失敗しないように、私はまた、gmaps-api-issuesの機能要求を作成することをお勧めしますが、これらに切り替わりLocationRequest.PRIORITY_BALANCED_POWER_ACCURACY

+0

これらの精度のためにありがとう! – Donkey

+1

開かれた問題:http://code.google.com/p/gmaps-api-issues/issues/detail?id=6421 – ercan

+0

Googleでは、GoogleApiClientを使用して地域を処理することをおすすめします。ここで私は賞金を受け取って公開質問をしています:http://stackoverflow.com/questions/28108326/android-google-maps-location-with-low-battery-usage –

関連する問題