音量を設定する


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

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

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

続きは以下からどうぞ。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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オブジェクトを作成します。

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

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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