私のアプリは、「minTime」を 2 秒に設定して位置情報の更新をリクエストします。「モバイルデータ」が(電話の設定で)オンになっており、GPS が有効になっている場合、アプリは 1 時間あたり 5 ~ 10 メガバイトで「モバイルデータ」を使用します。ICSの「データ使用量」画面に「Android OS」別の使用量として記録されます。
これを防ぐために、設定->「位置情報サービス」->「Googleの位置情報サービス」のチェックを外しました。これは Assisted GPS に関するものですか、それともそれ以上のものですか? それが何であれ、私のアプリのインターネット アクセスには何の違いもないようです。
アプリによる GPS の使用がモバイル データ アクセスの原因であることをさらに確認するために、ステータス バーのインターネット データ アクティビティ インジケーターには、GPS インジケーターが存在する場合にのみアクティビティが表示されることがわかりました。
このモバイル データの使用を防ぐ唯一の方法は、「モバイル データ」をオフにすることであり、GPS の精度は、モバイル データのサポートがなくてもほぼ同じようです。ただし、モバイルデータをオフにしなければならないのは明らかに物足りないです。
マニフェストの唯一の権限は「android.permission.ACCESS_FINE_LOCATION」(および「android.permission.WRITE_EXTERNAL_STORAGE」) であるため、アプリにはインターネット データを使用するための明示的な権限がありません。
LocationManager コードは
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setSpeedRequired(false);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(true);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
bestProvider = lm.getBestProvider(criteria, true);
if (bestProvider != null) {
lm.requestLocationUpdates(bestProvider, gpsMinTime, gpsMinDistance, this);
LocationManager.getBestProviderの参照は言う
基準を満たすプロバイダーがない場合、基準は緩和されます... このプロセスでは、金銭的コストに関する要件は削除されないことに注意してください。
ただし、setCostAllowed を false に設定しても、アプリには潜在的な金銭的コストが発生します。
アプリがモバイル データを使用しないようにするには、他に何ができますか?