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
}
}
);