Androidで機内モードのオン/オフ状態を検出する方法
はじめに
この記事では、Androidアプリで機内モード(Airplane Mode)がオンになっているかオフになっているかを検出する方法を解説します。機内モードの状態は、Settings.Global.AIRPLANE_MODE_ON の設定値を読み取ることで簡単に判定できます。
なお、Android 4.2以降ではこの設定値は Settings.System から Settings.Global へ移行しているため、現在の開発では Settings.Global を使用するのが正しい方法です。
手順1:新規プロジェクトを作成する
Android Studioで新しいプロジェクトを作成します。[File] → [New Project] を選択し、必要な情報を入力してプロジェクトを作成してください。
手順2:レイアウトファイル(activity_main.xml)の編集
res/layout/activity_main.xml に以下のコードを追加します。画面中央にTextViewを配置し、ここに機内モードの状態を表示します。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center" /> </RelativeLayout>
手順3:MainActivity.java の実装
src/MainActivity.java に以下のコードを追加します。Settings.Global.AIRPLANE_MODE_ON の値が0以外であれば機内モードが有効、0であれば無効と判定できます。
package app.com.sample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.provider.Settings;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
checkAirplaneMode();
}
private void checkAirplaneMode() {
if (isAirplaneModeOn(getApplicationContext())) {
textView.setText("Airplane Mode is Enabled");
} else {
textView.setText("Airplane Mode is Disabled");
}
}
private static boolean isAirplaneModeOn(Context context) {
return Settings.System.getInt(context.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
}
}ポイント: getInt() メソッドの第3引数にはデフォルト値「0」を指定しています。これにより、設定値が存在しない場合でもアプリがクラッシュすることなく安全に処理されます。
手順4:AndroidManifest.xml の確認
androidManifest.xml に以下のコードを追加します。機内モードの読み取りには特別なパーミッションは不要です。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
アプリを実行して動作を確認する
それではアプリを実行してみましょう。実際のAndroid端末をパソコンに接続していることを前提としています。Android Studioからアプリを実行するには、プロジェクトのアクティビティファイルを開き、ツールバーのRunアイコンをクリックします。表示された選択肢から接続中のモバイル端末を選択すると、端末上に結果画面が表示されます。

まとめ
このように、Settings.Global.AIRPLANE_MODE_ON の値を読み取るだけで、Android端末の機内モードが有効かどうかを簡単に判定できます。機内モードの変更をリアルタイムで監視したい場合は、ACTION_AIRPLANE_MODE_CHANGED ブロードキャストレシーバーを組み合わせることで、より高度な制御も可能になります。
-
Windows 11/10で機内モードをオン/オフする方法とトラブル対処法
Windows 11/10の機内モードとは何か、そのオン/オフの切り替え方や個別ネットワークの有効化方法をご存じですか?また、機内モードのスイッチが動かない、グレーアウトして操作できないといったトラブルが発生した場合はどうすればよいのでしょうか。この記事では、これらすべてについて詳しく解説します。 機内モードを使用すると、Surface BookやDell XPSなどWindows OSが搭載されたデバイスとの間でやり取りされるすべての無線信号をオフにできます。機内モードが有効になっている間は、インターネット、WLAN(Wi-Fi)、Bluetoothなどの外部ネットワークに接続できなくなりま
-
Androidでセーフモードを解除する方法|再起動しても直らないときの対処法6選
Androidスマートフォンの動作が不安定になる原因の多くは、不具合のあるサードパーティ製アプリやウィジェットにあります。アプリが頻繁にクラッシュしたり、インターネット接続やGoogle Playストアなど基本機能に支障をきたすこともあるでしょう。こうしたトラブルの切り分けに役立つのが「セーフモード」です。セーフモードではプリインストールされたシステムアプリのみが起動するため、問題の原因となっているアプリを特定しやすくなります。 ただし、セーフモードはあくまで一時的なトラブルシューティング手段であり、通常どおりスマートフォンを使うにはセーフモードを解除する必要があります。この記事では、Andr