Android LocationManager は、位置情報を取得するときに数メガバイトのインターネット データを使用することがありますか? もしそうなら、どのような状況で?LocationManager を使用するアプリがインターネットにアクセスするための明示的な許可を持っていない場合でも発生する可能性はありますか?
「Android OS」で使用されるインターネット データ (Android 4.0.4 を搭載した Samsung Galaxy Note の [設定] -> [データ使用量] 画面で報告) が 1 日あたり 10 メガバイト以上になることがあることに最近気づいたので、この質問をします。実験によると、このデータの使用は、私が作成したアプリを実行し、Location Manager によって提供された GPS 位置データを使用する場合にのみ発生することが示唆されています。このアプリを起動していない「Android OS」は、1日に数キロバイトのデータ通信量しか使用しません。
アプリのマニフェストに含まれる権限は、「android.permission.ACCESS_FINE_LOCATION」と「android.permission.WRITE_EXTERNAL_STORAGE」のみです。インターネットアクセスの許可がありません。
アクティビティの onStart() メソッドには、次のコードが含まれています。
if (!mapview .ignoreGPS ) {
lm.requestLocationUpdates(LocationManager. GPS_PROVIDER , gpsMinTime , gpsMinDistance , this );
}
ignoreGPS フラグがオフに切り替えられると、同様のコードが呼び出されます。
次のコードを含む gotoLastLocation() メソッドもあります。
Location l = lm.getLastKnownLocation(LocationManager. GPS_PROVIDER );
if (l == null ) {
l = lm .getLastKnownLocation(LocationManager. NETWORK_PROVIDER);
}
このメソッドはめったに呼び出されず、ignoreGPS フラグがオフに切り替えられた場合、またはユーザーがメニュー オプションを選択して最後の既知の場所に移動した場合にのみ呼び出されます。
このめったに呼び出されないメソッドを除けば、「NETWORK_PROVIDER」への参照はありません。
GPS_PROVIDER はデフォルトで「アシスト GPS」を使用しますか? もしそうなら、これは数メガバイトのデータを使用できますか? インターネットの許可がなくても?
GPS_PROVIDER が GPS 信号から修正を取得できない場合、LocationManager はデフォルトで携帯電話ネットワークを使用しますか? アプリにネットワーク権限がない場合でも? これは、電話プロバイダーによってインターネット データ アクセスとしてカウントされますか?