/首先需要接收一个Notification的参数
private void setAlarmParams(Notification notification) {
//AudioManager provides access to volume and ringer mode control. AudioManager volMgr = (AudioManager)
mAppContext.getSystemService(Context.AUDIO_SERVICE);
switch (volMgr.getRingerMode()) {
//获取系统设置的铃声模式
case AudioManager.RINGER_MODE_SILENT:
//静音模式,值为0,这时候不震动,不响铃
notification.sound = null;
notification.vibrate = null;
break;
case AudioManager.RINGER_MODE_VIBRATE:
//震动模式,值为1,这时候震动,不响铃
notification.sound = null;
notification.defaults |= Notification.DEFAULT_VIBRATE; break; case AudioManager.RINGER_MODE_NORMAL:
//常规模式,值为2,分两种情况:1_响铃但不震动,2_响铃+震动
Uri ringTone = null;
//获取软件的设置
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mAppContext);
if(!sp.contains(SystemUtil.KEY_RING_TONE)){
//如果没有生成配置文件,那么既有铃声又有震动
notification.defaults |= Notification.DEFAULT_VIBRATE; notification.defaults |= Notification.DEFAULT_SOUND;
}else{ String ringFile = sp.getString(SystemUtil.KEY_RING_TONE, null);
if(ringFile==null){
//无值,为空,不播放铃声
ringTone=null;
}else if(!TextUtils.isEmpty(ringFile)){
//有铃声:1,默认2自定义,都返回一个uri
ringTone=Uri.parse(ringFile);
}
notification.sound = ringTone;
boolean vibrate = sp.getBoolean(SystemUtil.KEY_NEW_MAIL_VIBRATE,true);
if(vibrate == false){
//如果软件设置不震动,那么就不震动了
notification.vibrate = null;
}else{
//否则就是需要震动,这时候要看系统是怎么设置的:不震动=0;震动=1;仅在静音模式下震动=2;
if(volMgr.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER) == AudioManager.VIBRATE_SETTING_OFF){
//不震动
notification.vibrate = null;
}else if(volMgr.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER) ==
AudioManager.VIBRATE_SETTING_ONLY_SILENT){
//只在静音时震动
notification.vibrate = null; }else{
//震动
notification.defaults |= Notification.DEFAULT_VIBRATE;
}
}
}
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
//都给开灯
break;
default: break;
}
}
package com.google.activity.voice;
import android.content.Context;
import android.media.AudioManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar;
import com.google.Main;
import com.google.R;
public class IndexActivity extends Main {
/** 日志TAG */
private static final String TAG = ">>>>>>>> IndexActivity.java <<<<<<<";
/** 显示当前的设置 */
private ImageView mImageView;
/** 显示可用于设置声音的按钮 调大、调小、正常、静音、震动 */
private ImageButton mBt_up,mBt_down,mBt_normal,mBt_mute,mBt_vibrate;
/** 设置声音大小的进展条 */
private ProgressBar mProgressBar;
/** 管理音频 */
private AudioManager mAM;
/** 初始前声音的大小 */
private int volume = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.volume);
setUI();
setAction();
}
/** 获取控件 */
private void setUI() {
mImageView = (ImageView) findViewById(R.id.myImage);
mBt_down = (ImageButton) findViewById(R.id.bt_down);
mBt_up = (ImageButton) findViewById(R.id.bt_up);
mBt_mute = (ImageButton) findViewById(R.id.bt_mute);
mBt_normal = (ImageButton)findViewById(R.id.bt_normal);
mBt_vibrate = (ImageButton) findViewById(R.id.bt_vibrate);
mProgressBar = (ProgressBar) findViewById(R.id.mProgress);
}
/** 设置界面事件 */
private void setAction(){
mAM = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
//设置初始的手机铃声音量
volume = mAM.getStreamVolume(AudioManager.STREAM_RING);
mProgressBar.setProgress(volume);
int mode = mAM.getRingerMode();
setMode(mode);
mBt_down.setOnClickListener(listener);
mBt_mute.setOnClickListener(listener);
mBt_normal.setOnClickListener(listener);
mBt_up.setOnClickListener(listener);
mBt_vibrate.setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId())
{ //声音减小
case R.id.bt_down:
mAM.adjustVolume(AudioManager.ADJUST_LOWER,0);
volume = mAM.getStreamVolume(AudioManager.STREAM_RING);
mProgressBar.setProgress(volume);
setMode(mAM.getRingerMode());
break;
//声音调大
case R.id.bt_up:
mAM.adjustVolume(AudioManager.ADJUST_RAISE,0);
volume = mAM.getStreamVolume(AudioManager.STREAM_RING);
mProgressBar.setProgress(volume);
setMode(mAM.getRingerMode());
break;
//静音模式
case R.id.bt_mute:
mAM.setRingerMode(AudioManager.RINGER_MODE_SILENT);
volume = mAM.getStreamMaxVolume(AudioManager.STREAM_RING);
mProgressBar.setProgress(volume);
setMode(mAM.getRingerMode());
break;
//正常模式
case R.id.bt_normal:
mAM.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
volume = mAM.getStreamMaxVolume(AudioManager.STREAM_RING);
mProgressBar.setProgress(volume);
setMode(mAM.getRingerMode());
break;
//振动模式
case R.id.bt_vibrate:
mAM.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
volume = mAM.getStreamMaxVolume(AudioManager.STREAM_RING);
mProgressBar.setProgress(volume);
setMode(mAM.getRingerMode());
break;
default:
break;
}
}
};
/***
* 设置音频模式
* @param mode
*/
private void setMode(int mode){
Log.i(TAG, "current mode= "+ mode);
if(mode == AudioManager.RINGER_MODE_NORMAL)//正常模式
{
mImageView.setImageResource(R.drawable.voice_normal);
}
else if (mode == AudioManager.RINGER_MODE_SILENT)//静音 模式
{
mImageView.setImageResource(R.drawable.voice_mute);
}
else if( mode == AudioManager.RINGER_MODE_VIBRATE)//振动模式
{
mImageView.setImageResource(R.drawable.voice_vibrate);
}
}
}
|