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

【Android】カスタム着信音・アラーム音を再生・設定する方法をサンプルコード付きで解説

このチュートリアルでは、Androidアプリでカスタムの着信音(リングトーン)/アラーム音を再生する方法を、実際のサンプルコードとともに解説します。使用するのは android.media.RingtoneManager クラスで、アプリ内の raw リソースに格納した音声ファイルを端末のデフォルト着信音として設定し、その場で再生できるようにします。

実装の全体像

大まかな流れは次の4ステップです。

  1. Android Studioで新規プロジェクトを作成する
  2. レイアウトXML(activity_main.xml)に再生用のボタンを配置する
  3. MainActivity.java に RingtoneManager を使った再生処理を実装する
  4. AndroidManifest.xml を確認する

あらかじめ、再生したい音声ファイルを res/raw/ringtone.mp3 としてプロジェクト内に配置しておいてください。

Step 1:Android Studioで新規プロジェクトを作成する

Android Studioを起動し、メニューから File ⇒ New Project を選択します。プロジェクト名やパッケージ名など必要な項目を入力して、新しいプロジェクトを作成しましょう。

Step 2:レイアウトファイルにボタンを追加する

res/layout/activity_main.xml に以下のコードを記述します。画面中央に「Play Ringtone」ボタンを1つ配置するだけのシンプルな構成です。

<?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">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:onClick="playRingtone"
        android:text="Play Ringtone" />
</RelativeLayout>

Step 3:MainActivity.java に再生処理を実装する

続いて、src/MainActivity.java に以下のコードを追加します。

package app.com.sample;
import androidx.appcompat.app.AppCompatActivity;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void playRingtone(View view) {
        try {
            Uri path = Uri.parse("android.resource://" + getPackageName() + "/raw/ringtone.mp3");
            RingtoneManager.setActualDefaultRingtoneUri(
                getApplicationContext(), RingtoneManager.TYPE_RINGTONE, path
            );
            Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), path);
            r.play();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

実装のポイントは以下のとおりです。

  • Uri.parse("android.resource://...") によって、raw フォルダ内の ringtone.mp3 を指すURIを生成しています。
  • RingtoneManager.setActualDefaultRingtoneUri() を呼び出すことで、この音声を端末のデフォルト着信音として登録できます。
  • getRingtone() で取得した Ringtone オブジェクトの play() メソッドを実行すると、音声がその場で再生されます。

Step 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スマートフォンをPCに接続しているものとします。Android Studioでプロジェクトのアクティビティファイルを開き、ツールバーの実行(Run)アイコンをクリックしてください。デバイスの選択ダイアログで接続した端末を指定すると、アプリが起動し、下図のような画面が表示されます。

【Android】カスタム着信音・アラーム音を再生・設定する方法をサンプルコード付きで解説

ボタンをタップすると、指定した音声ファイルが再生され、同時に端末のデフォルト着信音として登録されます。うまく動作しない場合は、音声ファイルが res/raw/ 配下に正しく配置されているか、コード内のファイル名と一致しているかを確認してください。

  1. Androidでカスタム通知レイアウトとテキストの色を作成する方法を徹底解説

    このチュートリアルでは、Androidアプリにおいて標準的な通知と、RemoteViewsを使ったカスタム通知レイアウトの両方を作成する方法を、サンプルコード付きでわかりやすく解説します。カスタムレイアウトを活用すれば、通知のデザインやテキストの色などを自由にコントロールできるようになります。 全体の流れ 本記事の手順は以下の通りです。 Android Studioで新規プロジェクトを作成する メイン画面のレイアウト(activity_main.xml)を用意する MainActivity.javaに通知の生成処理を実装する 通知・カスタム通知・通知内容表示用のレイアウトXMLを作成する A

  2. Androidでメッセージの通知音と着信音をカスタマイズする方法【連絡先ごとの設定も解説】

    特定の連絡先からのメッセージにカスタム通知音を、通話にカスタム着信音を設定することは、シンプルながら非常に便利な機能です。どのメッセージや電話に即座に対応すべきか、後回しにできるかを判断するのに役立ちます。例えば、家族からのメッセージや電話にはすぐに応答したいでしょうし、上司からの電話であれば見逃すわけにはいきません。このように、Androidユーザーが特定の連絡先に対してカスタム着信音や通知音を設定できる機能は、実際には大きな恩恵をもたらしてくれるのです。 カスタマイズ性の高さは、Androidスマートフォンを使う大きなメリットの一つです。本記事では、通話とテキストメッセージにカスタム着信音