音量を設定する


Androidで音量を調整するにはAudioManagerを利用します。
AudioManagerを利用することで以下の音量を調整することができます。

  • 着信音量(STREAM_RING)
  • 通知音量(STREAM_NOTIFICATION)
  • アラーム音量(STREAM_ALARM)
  • 音楽音量(STREAM_MUSIC)
  • システム音量(STREAM_SYSTEM)
  • ボイス音量(STREAM_VOICE_CALL)

今回は上に示した画面のように、シークバーのつまみで
着信音量をコントロールするアプリを作成してみたいと思います。

続きは以下からどうぞ。

まずレイアウトファイルですが以下のようになります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Ring Volume:"
    android:id="@+id/ringVolText"
    android:textSize="32px"
    />
<SeekBar android:id="@+id/ringVolSeekBar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="10"></SeekBar>

</LinearLayout>

現在の設定値を表示するためのTextViewとボリューム調整用のシークバーを用意しています。

次にソースコードです。
まず、AudioManagerオブジェクトを作成します。

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

getSystemServiceでAndroidのAudioManagerを取得します。
オブジェクトを作成したらgetStreamVolumeメソッドを使って音量を取得します。

int ringVolume = am.getStreamVolume(AudioManager.STREAM_RING); //着信音量の取得

着信音量を設定する場合はsetStreamVolumeを使います。

am.setStreamVolume(AudioManager.STREAM_RING, 50, 0); //着信音量を50に設定

シークバーと組み合わせて音量を調整する場合、たとえば以下のような実装にします。
シークバーの使い方については「シークバーを利用する方法」を参考にしてください。

notifyVolSeekBar = (SeekBar)findViewById(R.id.notifyVolSeekBar); //着信音量シークバー
notifyVolText = (TextView)findViewById(R.id.notifyVolLabel); //着信音量TextView
ringVolSeekBar.setOnSeekBarChangeListener(
		new OnSeekBarChangeListener() {
			public void onProgressChanged(SeekBar seekBar,
					int progress, boolean fromUser) {
				// TODO Auto-generated method stub
				ringVolText.setText("Ring Volume:"+progress); //TextViewに設定値を表示
		        	am.setStreamVolume(AudioManager.STREAM_RING, progress, 0); //着信音量設定
			}

			public void onStartTrackingTouch(SeekBar seekBar) {
				// TODO Auto-generated method stub

			}

			public void onStopTrackingTouch(SeekBar seekBar) {
				// TODO Auto-generated method stub

			}
		}
);
2 Comments