私はパッシブプロバイダでこのコードを使用しています。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マップ"アプリケーションが自分の位置を更新すると、パッシブイベントを取得する方法はありますか? または私は何か間違っているのですか?
...しかし、あなたの位置がGPSまたはネットワークまたは融合位置のWiFiから来ているかどうかはわかりません。 –