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