首页 > 代码库 > android 控制手机音量的大小 切换声音的模式

android 控制手机音量的大小 切换声音的模式

(1)程序说明

   在android API的AudioManager中,提供了调节手机音量的办法。

audioMa.adjustVolume(AudioManager.ADJUST_LOWER, 0);
audioMa.adjustVolume(AudioManager.ADJUST_RAISE, 0);
也可以调节手机声音的模式为震动或者静音

audioMa.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

audioMa.setRingerMode(AudioManager.RINGER_MODE_SILENT);

audioMa.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

(2)布局文件

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
  android:id="@+id/layout1"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/white"
  xmlns:android="http://schemas.android.com/apk/res/android"
>
  <TextView
    android:id="@+id/myText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/str_text1"
    android:textSize="16sp"
    android:textColor="@drawable/black"
    android:layout_x="20px"
    android:layout_y="42px"
  >
  </TextView>
  <ImageView
    android:id="@+id/myImage"
    android:layout_width="48px"
    android:layout_height="48px"
    android:layout_x="110px"
    android:layout_y="32px"
  >
  </ImageView>
  <TextView
    android:id="@+id/myText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/str_text2"
    android:textSize="16sp"
    android:textColor="@drawable/black"
    android:layout_x="20px"
    android:layout_y="102px"
  >
  </TextView>
  <ProgressBar
    android:id="@+id/myProgress"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="160dip"
    android:layout_height="wrap_content"
    android:max="7"
    android:progress="5"
    android:layout_x="110px"
    android:layout_y="102px"
  >
  </ProgressBar>
  <ImageButton
    android:id="@+id/downButton"
    android:layout_width="100px"
    android:layout_height="100px"
    android:layout_x="50px"
    android:layout_y="162px"
    android:src=http://www.mamicode.com/"@drawable/down">

(3)代码:

package com.liuzuyi.soundmode;

import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar;

public class MainActivity extends Activity {

	 private ImageView myimage;
	 private ImageButton downbutton;
	 private ImageButton upbutton;
	 private ImageButton normalbutton;
	 private ImageButton mutebutton;
	 private ImageButton vibratebutton;
	 private ProgressBar myprogress;
	 private AudioManager audioMa;
	 private int volume; 
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		audioMa =(AudioManager)getSystemService(Context.AUDIO_SERVICE);
		myimage = (ImageView)findViewById(R.id.myImage);
		myprogress =(ProgressBar)findViewById(R.id.myProgress);
		
		downbutton =(ImageButton)findViewById(R.id.downButton);
		upbutton =(ImageButton)findViewById(R.id.upButton);
		normalbutton=(ImageButton)findViewById(R.id.normalButton);
		mutebutton=(ImageButton)findViewById(R.id.muteButton);
		vibratebutton=(ImageButton)findViewById(R.id.vibrateButton);
		
		volume =audioMa.getStreamVolume(AudioManager.STREAM_RING);
		myprogress.setProgress(volume);
		int mode =audioMa.getRingerMode();
		if(mode == AudioManager.RINGER_MODE_NORMAL ){
			myimage.setImageDrawable(getResources().getDrawable(R.drawable.normal));
			
		}
		else if(mode == AudioManager.RINGER_MODE_SILENT){
			myimage.setImageDrawable(getResources().getDrawable(R.drawable.mute));
		}
		else if(mode == AudioManager.RINGER_MODE_VIBRATE){
			myimage.setImageDrawable(getResources().getDrawable(R.drawable.vibrate));
		}
		downbutton.setOnClickListener( new OnClickListener() {
			public void onClick(View v) {
				audioMa.adjustVolume(AudioManager.ADJUST_LOWER, 0);
				volume = audioMa.getStreamVolume(AudioManager.STREAM_RING);
				myprogress.setProgress(volume);
				int mode =audioMa.getRingerMode();
				if(mode == AudioManager.RINGER_MODE_NORMAL ){
					myimage.setImageDrawable(getResources().getDrawable(R.drawable.normal));
					
				}
				else if(mode == AudioManager.RINGER_MODE_SILENT){
					myimage.setImageDrawable(getResources().getDrawable(R.drawable.mute));
				}
				else if(mode == AudioManager.RINGER_MODE_VIBRATE){
					myimage.setImageDrawable(getResources().getDrawable(R.drawable.vibrate));
				}	
				
			}
		});
		
		upbutton.setOnClickListener( new OnClickListener() {
			public void onClick(View v) {
				audioMa.adjustVolume(AudioManager.ADJUST_RAISE, 0);
				volume = audioMa.getStreamVolume(AudioManager.STREAM_RING);
				myprogress.setProgress(volume);
				int mode =audioMa.getRingerMode();
				if(mode == AudioManager.RINGER_MODE_NORMAL ){
					myimage.setImageDrawable(getResources().getDrawable(R.drawable.normal));
					
				}
				else if(mode == AudioManager.RINGER_MODE_SILENT){
					myimage.setImageDrawable(getResources().getDrawable(R.drawable.mute));
				}
				else if(mode == AudioManager.RINGER_MODE_VIBRATE){
					myimage.setImageDrawable(getResources().getDrawable(R.drawable.vibrate));
				}	
				
			}
		});
		normalbutton.setOnClickListener( new OnClickListener() {
			public void onClick(View v) {
				audioMa.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
			    volume = audioMa.getStreamVolume(AudioManager.STREAM_RING);
			    myprogress.setProgress(volume);
				myimage.setImageDrawable(getResources().getDrawable(R.drawable.normal));
			}
		});
		mutebutton.setOnClickListener( new OnClickListener() {
			public void onClick(View v) {
				audioMa.setRingerMode(AudioManager.RINGER_MODE_SILENT);
			    volume = audioMa.getStreamVolume(AudioManager.STREAM_RING);
			    myprogress.setProgress(volume);
				myimage.setImageDrawable(getResources().getDrawable(R.drawable.mute));
			}
		});
		vibratebutton.setOnClickListener( new OnClickListener() {
			public void onClick(View v) {
				audioMa.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
			    volume = audioMa.getStreamVolume(AudioManager.STREAM_RING);
			    myprogress.setProgress(volume);
				myimage.setImageDrawable(getResources().getDrawable(R.drawable.vibrate));
			}
		});
		
	}
	

}