Androidで端末が機内モードかどうかを判定する方法
この記事では、Androidアプリで端末が機内モードになっているかどうかを検出する方法を、実際のコード例とともに解説します。機内モードの状態変化はブロードキャストレシーバーを使って受け取ることができ、通信機能のオン・オフに応じた処理を実装したい場合に役立ちます。
全体の流れ
今回のサンプルでは、以下の手順で機内モードの状態を画面に表示する簡単なアプリを作成します。
- Android Studioで新規プロジェクトを作成する
- レイアウトファイル(activity_main.xml)にTextViewを配置する
- MainActivity.javaでブロードキャストレシーバーを登録し、機内モードの変更を検知する
ステップ1:新規プロジェクトの作成
まず、Android Studioを起動し、メニューから「File → New Project」を選択して新しいプロジェクトを作成します。必要な項目(プロジェクト名、パッケージ名、保存先など)を入力して、空のActivityを選んでおきましょう。
ステップ2:レイアウトファイルの編集
次に、「res/layout/activity_main.xml」に以下のコードを追加します。ここでは、端末の状態を表示するためのTextViewを1つ配置しています。
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:app = "https://schemas.android.com/apk/res-auto"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:gravity = "center"
android:layout_height = "match_parent"
tools:context = ".MainActivity">
<TextView
android:id = "@+id/text"
android:textSize = "30sp"
android:layout_width = "match_parent"
android:layout_height = "match_parent" />
</LinearLayout>上記コードでは、画面いっぱいに広がるTextViewを配置し、ここに機内モードの状態を表示します。文字サイズは30spに設定しており、状態がひと目でわかるようになっています。
ステップ3:MainActivity.javaの実装
続いて、「src/MainActivity.java」に以下のコードを記述します。
package com.example.myapplication;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.BatteryManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import static android.os.BatteryManager.ACTION_CHARGING;
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.text);
}
@Override
protected void onStop() {
super.onStop();
MainActivity.this.unregisterReceiver(mMessageReceiver);
}
@Override
protected void onResume() {
super.onResume();
MainActivity.this.registerReceiver(mMessageReceiver, new IntentFilter("android.intent.action.AIRPLANE_MODE"));
}
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
textView.setText("Device is airplane mode");
}
};
}コードのポイント
- onResume():アクティビティが前面に来たタイミングで、
registerReceiver()を使って「android.intent.action.AIRPLANE_MODE」というシステムブロードキャストを受け取るレシーバーを登録します。 - onStop():アクティビティがバックグラウンドに回った際に、
unregisterReceiver()でレシーバーを解除します。これによりメモリリークを防げます。 - BroadcastReceiver:機内モードが切り替わるとシステムからブロードキャストが送信され、
onReceive()内でTextViewに「Device is airplane mode」というテキストを表示します。
アプリの実行と動作確認
それでは、アプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続していることを前提としています。Android Studioからプロジェクト内の任意のActivityファイルを開き、ツールバーの「Run」アイコンをクリックしてください。接続した実機を選択すると、端末の画面にアプリが起動します。

アプリ起動後、端末の設定やクイック設定パネルから機内モードをオンに切り替えると、ブロードキャストを受信してTextViewに機内モード中であることを示すメッセージが表示されます。
補足:現在の機内モード状態を取得する方法
上記の例は「機内モードが切り替わった瞬間」を検知する方法ですが、現在の状態を直接取得したい場合は、Settings.Global.getInt()を使う方法もあります。
int mode = Settings.Global.getInt(getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0);
boolean isAirplaneModeOn = (mode == 1);戻り値が1なら機内モードが有効、0なら無効です。この値はAPIレベル17以降で利用可能なので、古いOSバージョンをサポートする場合は注意が必要です。
まとめ
Androidでは、AIRPLANE_MODEのブロードキャストをレシーバーで受信することで、機内モードの切り替えを簡単に検出できます。ライフサイクルに合わせてレシーバーの登録・解除を適切に行うことが、安定したアプリ開発のポイントです。通信状態に応じた挙動を実装したい場合は、ぜひこの手法を活用してみてください。
-
Androidの「サイレントモード(DND)」を効果的に活用して集中力を高める方法
スマホ依存から抜け出す第一歩 現代においてスマートフォンは欠かせない存在となりました。しかし、一日のかなりの時間を小さな画面に釘付けにしていることはありませんか。朝起きてから夜寝るまで常にスマホを手放さずにいると、気づかないうちに仕事中の集中力低下、睡眠リズムの乱れ、短期記憶への悪影響など、さまざまな弊害が生じています。自分がスマホに依存していることを受け入れられない人は少なくありません。 そろそろ、スマホに支配されるのではなく、スマホを道具として使いこなすべき時です。Androidが私たちの生活に干渉する度合いは、ユーザー自身がコントロールできます。この記事では、Androidに標準搭載さ
-
紛失したAndroidスマホを探す方法|Google「デバイスを探す」の使い方を徹底解説
Androidスマートフォンをどこかに置き忘れて見つからない——そんな経験はありませんか?オフィスでも、自宅でも、ホテルの部屋でも、スマホが行方不明になると不安になりますよね。しかし、慌てる前に試せる追跡方法はいくつかあります。適切な手順を踏めば、パニックになる前に端末を取り戻せる可能性は十分にあります。 ほとんどのAndroidスマートフォンは、Googleが提供する「Find My Device(デバイスを探す)」を使って、遠隔から位置の特定やロックが可能です。この記事では、Androidスマホやタブレットで「デバイスを探す」を利用する方法、紛失時に端末を見つける手順、そしてどうしても見つ