この質問がここでよく聞かれることは知っていますが、ICS がリリースされて以来、プログラムで gps を有効にする方法はあるのでしょうか?
gps を有効にして、デバイスの位置を電子メールに送信しようとしています。SMS メッセージを受信すると、アプリが起動します。
プログラムでGPSを有効にする方法はありますか?
それはプライバシーの欠陥になるので、私はそうしないことを望みます。AFAIK、マルウェアがプログラムでGPSを有効にすることを可能にしたすべての既知の穴は現在閉じられています。
GPSを有効にして、デバイスの場所をメールで送信しようとしています
ユーザーは、GPSを有効にするかどうかを制御します。
マークが言ったように、ユーザーがオフにしたいものをオンにすることは、確かにあまり良いことではないので、そうしないことを願っています;-)
もちろん、ユーザーにそうするように頼むことができます(おそらくすでに見つけているでしょうが、参考までに、ここではメモリからそうするための簡単な方法があります)
LocationManager L = (LocationManager) getSystemService(LOCATION_SERVICE);
if (!L.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
Intent I = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(I);
}
ユーザーに GPS を有効にするよう依頼するには、このリンクを確認してください
以下は、既知の最新の GPS 位置を精度の降順で取得しようとする関数の内部です。ユーザーが GPS を有効にしていない場合、有効にすることはできません。最善の方法は、最後に確認された場所を取得するか、GPS を有効にするよう促すことです。ユーザーが別のアプリで GPS を使用して新しい座標を取得するか、ワイヤレス ネットワークに接続するたびに、最後に認識された場所が変更されます。このデータを 5 ~ 10 分ごとにポーリングして送信するバックグラウンド サービスを作成できると思います。ただし、このアプリケーションの方向性には同意しません。笑。科学について!
LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE); String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);
if(loc){
return loc;
}
lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_COARSE);
provider = lm.getBestProvider(crit, true);
loc = lm.getLastKnownLocation(provider);
if(loc){
return loc;
}
lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
crit = new Criteria();
crit.setAccuracy(Criteria.NO_REQUIREMENT);
provider = lm.getBestProvider(crit, true);
loc = lm.getLastKnownLocation(provider);
return null;
ユーザーに許可を求める必要があります。
Intent gpsOptionsIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(gpsOptionsIntent);