1

私のアプリは、「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 に設定しても、アプリには潜在的な金銭的コストが発生します。

アプリがモバイル データを使用しないようにするには、他に何ができますか?

4

1 に答える 1

0

通常、ネットワーク プロバイダーには、AGPS、wifi、セル三角測量、またはそれらの任意の組み合わせなど、あらゆる種類の非 GPS 測位技術が含まれています。一部のデバイスでは、それらは分離されています。他のアプリに保存されている場所を使用するパッシブ プロバイダーを追加することもできます。

とにかく、インターネット/3g を使用したくない場合は、アプリまたはエンド ユーザーがこの機能を無効にする必要があります。

エンドユーザーの場合、この機能はデフォルトでオフになっており、有効にすることを選択すると、それについて警告されます (デフォルトで有効になっている iphone とは対照的に)。

于 2012-09-09T22:37:02.080 に答える