2012-03-08 10 views
0

私はパッシブプロバイダでこのコードを使用しています。Googleマップとパッシブプロバイダ

Intent intent = new Intent(PASSIVE_ACTION); 
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
mLocationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 0, 0, pi); 

及びIがのAndroidManifest.xmlに放送受信機を定義

<receiver 
    android:name="passiveLocationReceiver" 
    android:enabled="true" > 
     <intent-filter> 
      <action android:name="com.passive_location_update" /> 
     </intent-filter> 
</receiver> 

passiveLocationReceiverは

public class passiveLocationReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if (!PASSIVE_ACTION.equals(action)) 
      return; 

     Log.d("chitacan","Passive Provider Event!!!"); 
     } 
    } 

このコードは正常に動作しているときに、他のジオロケーションアプリケーション(Facebookの、フォースクエア..など) しかし、 "Google Map"アプリケーションでは、そうではありません。(d.android.comは、他のアプリケーションrのときに更新可能な "PASSIVE_PROVIDER"について説明しています。場所をequests。)

私は、「Googleマップ」アプリで自分の位置を見ることができますが、私は受動的なプロバイダからすべてのイベントを取得することはできませんにもかかわらず。(私はpassiveLocationReceiverのログメッセージを見ることができません。)

まあLocationManagerの状態をコマンドラインでダンプしようとしました。

$adb shell dumpsys location 

しかし、LocationManagerの状態は何も変更されませんでした。 "Google Map"アプリケーション のように見えますが、LocationManagerは使用していません。

"Googleマップ"アプリケーションが自分の位置を更新すると、パッシブイベントを取得する方法はありますか? または私は何か間違っているのですか?

答えて

0

requestLocationUpdateはロケーション値の変更または「更新」のみを受信します。 Google Mapsは、GPSロケーションプロバイダが提供するロケーション値の変更をブロードキャストします。

エミュレータからテストする場合は、モックの場所に新しい値を入力してみてください。それ以外の場合は、歩きながらテストします。

しかし、Wi-Fi(ネットワーク)の場所の変更は、他の同様のアプリからのものと同じように、Googleマップからブロードキャストされていないことに気付きました。

GPSが有効になっていないか、現在の状態から場所が変更されていない可能性があります。したがって、このリスナーの場所に「更新」はありません。 (GoogleマップがWi-Fiロケーションの変更をブロードキャストしていない理由が誰か分かっているのだろうかと疑問に思っていたので、このトピックを見つけました)

2

Googleマップやその他のマップサービスは、Google Playサービス彼らは単にGPSやネットワークプロバイダだけに依存するのではなく、「融合した」ものを使用します。このため、従来のPASSIVE_PROVIDERは "fused"メソッドでロケーション更新をキャッチできません。

PRIORITY_NO_POWERのLocationClientとLocationRequestで新しいAPIを使用する方がよいでしょう。次のコードを確認してください

+0

...しかし、あなたの位置がGPSまたはネットワークまたは融合位置のWiFiから来ているかどうかはわかりません。 –

関連する問題