2013年5月1日水曜日

Androidアプリ開発 GPS機能ON/OFF

スマホを紛失したとき、
 ・マナーモードをオフ
 ・GPSオフ
 ・データ通信オフ
にしてたので、電話をかけても聞こえず(当然^^;;
docomoのケータイお探しサービスも役に立たなかったので、
 ・マナーモードをオンにして音量最大に
 ・GPSをオン
 ・データ通信オン
にするアプリを作ろう!と調査開始。

通常のアプリではパーミッション(WRITE_SECURE_SETTINGS)の設定が許されてなく、
GPSオンのAPIは標準で提供されていない。
(データ通信オン・オフも非標準ですが....)

IntentをBroadCastして実現する方法を見つけた。

(抜粋)
private void turnGPSOn(){
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

    if(!provider.contains("gps")){ //if gps is disabled
        final Intent poke = new Intent();
        poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
        poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
        poke.setData(Uri.parse("3"));
        sendBroadcast(poke);
    }
}

しかし、この方法は、Android2.3以降より使えなくなったらしい。
N03-E(Android 4.0.4)ではまったく無反応(T T)
しか~し、Nexus7ではGPSがONになった。
Android 4.2.2から復活したのだ!?
よ~わからん。

0 件のコメント:

コメントを投稿