android播放铃声

/首先需要接收一个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);   
        }   
           
           
    }   
       
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值