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

【Android開発】アクティビティから着信音を設定・選択する方法を解説

本記事では、Androidアプリのアクティビティ(Activity)から着信音(リングトーン)を設定・選択する方法を、サンプルコードとともにステップ形式で解説します。

このチュートリアルでは、RingtoneManagerクラスとACTION_RINGTONE_PICKERインテントを使用して、システム標準の着信音選択ダイアログを表示し、ユーザーが選択した着信音のURIを取得する流れを紹介します。

ステップ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"
   tools:context=".MainActivity">
   <Button
      android:id="@+id/btnSelRingtone"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:text="Select Ringtone"/>
   <TextView
      android:id="@+id/tvRingtone"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:textStyle="bold|italic"
      android:layout_below="@id/btnSelRingtone"
      android:text="Ringtone Path"/>
</RelativeLayout>

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

続いて、src/MainActivity.javaに以下のコードを追加します。ボタンがタップされると、RingtoneManager.ACTION_RINGTONE_PICKERを使って着信音選択画面を起動し、結果として選択された着信音のURIパスを画面に表示します。

import android.annotation.SuppressLint;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
   Button btn;
   TextView txtView;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      btn = findViewById(R.id.btnSelRingtone);
      txtView = findViewById(R.id.tvRingtone);
      btn.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
            // 着信音を選択するためのIntent
            final Uri currentTone=
               RingtoneManager.getActualDefaultRingtoneUri(MainActivity.this,
               RingtoneManager.TYPE_ALARM);
            Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currentTone);
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
            intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
            startActivityForResult(intent, 999);
         }
      });
   }
   @SuppressLint("SetTextI18n")
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      if(requestCode == 999 && resultCode == RESULT_OK){
         Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
         txtView.setText("From :" + uri.getPath());
      }
   }
}

ステップ4:AndroidManifest.xml への権限追加

最後に、androidManifest.xmlに以下のコードを追加します。システム設定を変更するために必要なWRITE_SETTINGS権限を宣言しています。

<?xml version="1.0" encoding="utf-8"?>
<manifest
   xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:tools="https://schemas.android.com/tools"
   package="app.com.sample">
   <uses-permission
      android:name="android.permission.WRITE_SETTINGS"
      tools:ignore="ProtectedPermissions" />
   <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開発】アクティビティから着信音を設定・選択する方法を解説

【Android開発】アクティビティから着信音を設定・選択する方法を解説

ボタンをタップすると着信音選択ダイアログが開き、選択した着信音のパスがテキストビューに表示されます。EXTRA_RINGTONE_TYPEの値をTYPE_ALARMTYPE_NOTIFICATIONに変更すれば、アラーム音や通知音の選択にも応用できますので、ぜひ試してみてください。

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

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

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

    すべての連絡先に同じ標準の通知音を使っていて、少し物足りなく感じていませんか?送信者に応じてメッセージの優先順位をつけられず、困った経験はありませんか?このガイドでは、連絡先ごとにメッセージ通知音をカスタマイズする方法を詳しく解説します。例えば、友達からのメッセージには「チャイム音」、上司からのメッセージには「アラート音」というように使い分ければ、スマホを見なくても誰からの連絡かを判別でき、返信の優先順位を自分で決められるようになります。運転中や会議中でも、誰に先に返信すべきかを判断できるのは大きなメリットです。仕事でもプライベートでも、通知音の使い分けは非常に便利です。本記事では、Andro