Android
 Computer >> コンピューター >  >> プログラミング >> Android

KotlinでAndroid端末の着信モード(サイレント/バイブ/通常)を検出する方法

Kotlinを使えば、Android端末の現在の着信モード(サイレント/バイブレート/通常)を簡単に判定できます。この記事では、AudioManagerringerModeを利用して端末のモード状態を取得し、結果をToastで表示するサンプルアプリの作成手順を、初心者向けにわかりやすく解説します。

ステップ1:新規プロジェクトの作成

Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。

ステップ2:レイアウトファイル(activity_main.xml)の作成

res/layout/activity_main.xml に以下のコードを追加します。

<?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"
    android:padding="16dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Detect Ringer Mode"
        android:textAlignment="center"
        android:textColor="@android:color/holo_red_dark"
        android:textSize="24sp"
        android:textStyle="bold" />

</RelativeLayout>

ステップ3:MainActivity.ktの実装

src/MainActivity.kt に以下のコードを記述します。

import android.content.Context
import android.media.AudioManager
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import java.util.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        // システムのオーディオサービスからAudioManagerを取得
        val am = getSystemService(Context.AUDIO_SERVICE) as AudioManager

        // 現在の着信モードに応じて処理を分岐
        when (Objects.requireNonNull(am).ringerMode) {
            AudioManager.RINGER_MODE_SILENT -> Toast.makeText(
                this@MainActivity,
                "Silent Mode",
                Toast.LENGTH_SHORT
            ).show()

            AudioManager.RINGER_MODE_VIBRATE -> Toast.makeText(
                this@MainActivity,
                "Vibrate Mode",
                Toast.LENGTH_SHORT
            ).show()

            AudioManager.RINGER_MODE_NORMAL -> Toast.makeText(
                this@MainActivity,
                "Normal Mode",
                Toast.LENGTH_SHORT
            ).show()
        }
    }
}

コードのポイント

  • getSystemService(Context.AUDIO_SERVICE):システムのオーディオサービスを取得し、AudioManagerとして扱います。
  • ringerMode:端末の現在の着信モードを表すプロパティです。
  • when文:モードが「RINGER_MODE_SILENT(サイレント)」「RINGER_MODE_VIBRATE(バイブレート)」「RINGER_MODE_NORMAL(通常)」のいずれかに応じて、対応するToastメッセージを表示します。

ステップ4:AndroidManifest.xmlの設定

androidManifest.xml に以下のコードを追加します。なお、このサンプルでは特別なパーミッションは不要です。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.q11">

    <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 KotlinでAndroid端末の着信モード(サイレント/バイブ/通常)を検出する方法 」アイコンをクリックしてください。表示された候補から接続したモバイルデバイスを選択すると、実機の画面にアプリが起動します。

KotlinでAndroid端末の着信モード(サイレント/バイブ/通常)を検出する方法

KotlinでAndroid端末の着信モード(サイレント/バイブ/通常)を検出する方法

KotlinでAndroid端末の着信モード(サイレント/バイブ/通常)を検出する方法

アプリを起動すると、端末の現在の着信モードに応じて、画面下部に次のようなトーストが表示されます。

  • サイレントモードの場合 →「Silent Mode」
  • バイブレートモードの場合 →「Vibrate Mode」
  • 通常モードの場合 →「Normal Mode」

音量ボタンや端末の設定から着信モードを変更してからアプリを再起動すると、表示されるメッセージが切り替わることを確認できます。AudioManagerを活用すれば、マナーモードへの連動など、さまざまな用途に応用できるでしょう。

  1. 【Android】AudioManagerで着信モード(サイレント/バイブ/通常)を検出する方法

    この記事では、AndroidアプリでAudioManagerを利用して、端末の現在の着信モード(サイレント・バイブ・通常)を検出する方法を、実際のサンプルコードとともに解説します。マナーモードの状態に応じて通知やアプリの動作を切り替えたい場合に役立つ定番テクニックです。 検出の仕組み Androidでは、システムサービスであるAudioManagerのgetRingerMode()メソッドを呼び出すことで、現在の着信モードを簡単に取得できます。戻り値は次の3種類です。 RINGER_MODE_SILENT … サイレントモード(着信音なし) RINGER_MODE_VIBRATE … バイブ

  2. 【Android】5秒間のユーザー非アクティブ(無操作)を検出する方法を解説

    はじめに 本記事では、Androidアプリでユーザーが5秒間何も操作しなかったこと(非アクティブ状態)を検出する方法を、サンプルコードとともに解説します。 鍵となるのは、Activityクラスに標準で用意されているonUserInteraction()コールバックです。このメソッドはタップやスワイプなど、ユーザーが画面を操作するたびに呼び出されるため、Handlerと組み合わせることで「最後の操作からの経過時間」を簡単に計測できます。 手順1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要事項を入力して、