ウェブアプリケーション,インジェクション,コマンドインジェクション

Androidアプリ開発 電話機能偏

Airplaneモード(飛行機モード)に切り替える

Switching to AirPlane Mode

Androidデバイスのすべてのワイヤレス接続を
切りたいとしたならば、デバイス上のAirplaneモードを
利用できる様にプログラムを組むことができます。
Airplaneモードを使える様にするためには、
ContentResolverオブジェクトにある
Setting.Systemクラスからのputint()メソットと
AIRPLANE_MODE_ON定数と共に使い、
Airplainモードがオンなら1、オフなら0に
示している値をどちらかにします。
開発者はIntentオブジェクトの追加をstateを加えることで
組込み、そしてtrue(Airplaneモードオン)か
false(Airplaneモードオフ)のどちらかを値にセットします。
最後にIntentオブジェクトを使ってbroadcastを送信します。

package net.learn2develop.airplanemode;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.privider.Setting;

public class MainActivity extends Activity{

  @Override
  public void onCreate(Bundle savedInstanceState){
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
  }

  private void SetAirplaneMode(boolean enabled){
   //---toggle Airplane mode---
   Settings.System.putInt(
    getContentResolver(),
    Settings.System.AIRPLANE_MODE_ON, enabled ? 1 : 0);
    Intent i = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
    i.putExtra("state", enabled);
    sendBroadcast(i);
  }

}

開発するアプリケーションで
Airplainモードをオンにできるようにするには、
AndroidManifest.xmlファイルにWRITE_SETTINGSパーミッションを
加える必要があります。

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

デバイスがAirplainモードかどうかをチェックするためには、
以下のようなコード部を使うことができます。

public boolean isAirplaneModeOn(){
  return Settings.System.getInt(
      getContentResolver(),
      Settings.System.AIRPLANE_MODE_ON, 0) != 0;
}

もし、Airplainモードの変化をモニタする必要があるならば
以下の様にBroadcastReceiverクラスを作ることができます。

package net.learn2develop.airplanemode;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class AirplaneModeReceiver extends BroadcastReceiver{
  @Override
  public void onReceive(Context context, Intent intent){
   Toast.makeText(context, "Service state changed",
      Toast.LENGTH_LONG).show();
   }
  }

電話やWi-Fiがオンかオフになっていればいつでも
onReceive()メソッドは停止します。
AndroidManifest.xmlファイルにあるBroadcastReceiverクラスを
SERVICE_STATEアクションとともに登録する必要もあるでしょう。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="net.learn2develop.airplanemode"
  android:versionCode="1"
  android:versionName="1.0" >

  <uses-sdk
   android:minSdkVersion="8"
   android:targetSdkVersion="15" />

  <uses-permission android:name="android.permisssion.WRITE_SETTINGS" />

  <application
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@style/AppTheme" >
   <activity
    android:name=".MainActivity"
    android:label="@string/title_activity_main" >
    <intent-filter>
     <action android:name="android.intent.action.MAIN" />

     <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
   </activity>

   <receiver
    android:name=".AirplaneModeReceiver"
    android:enabled="true" >
    <intent-filter>
     <action android:name="android.intent.action.SERVICE_STATE" />
    </intent-filter>
   </receiver>
  </application>
</manifest>

SERVICE_STATEアクションはAirplaneモードの変化を
モニタできるようにしてくれます。
(AirplaneモードだけでなくWi-Fiの変化も含みます。)
SERVICE_STATEの変化もデバイスの電源が切れれば停止し、
デバイスの電源が入れば実行します。

ホーム
便利堂ロゴ
inserted by FC2 system