控制音量的大小



最近在项目中遇到了,一个控制播放音量的大小,首先就想到就是调节系统媒体的音量,
这样就能实现功能了,但是由于需求的更改,同时播放两种音乐,只控制其中一个音量的变化.
通过查看资料发现MediaPlayer类中有个setVolume(curVolume, curVolume)方法能够控制所播放
音乐的声音,使用这个方法时候需要注意的是,在初始化MediaPlayer后要调用mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
一定要用setDataSource方法才能用setVolume设置
start之前还需要执行prepare函数,prepare完成后才能执行start播放

代码如下:

private void mPlayer() {
		//这里由于播放资源文件中的音乐文件所以需要转化	
		AssetFileDescriptor afd = context.getResources().openRawResourceFd(rid);
		curVolume = (float) value / 10;
		mediaPlayer = new MediaPlayer();
		mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
		try {
			mediaPlayer.setDataSource(afd.getFileDescriptor(),
					afd.getStartOffset(), afd.getLength());

			afd.close();
			mediaPlayer.prepare();
		} catch (Exception e) {
			e.printStackTrace();
		}
		mediaPlayer.setVolume(curVolume, curVolume);
		mediaPlayer.start();
		mediaPlayer.setOnCompletionListener(this);
	}

调节系统媒体音量代码如下:

private void mPlayer() {
		audioMgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);  
        // 获取最大音乐音量  
        maxVolume = audioMgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);  
		mediaPlayer = new MediaPlayer(); 
		mediaPlayer.reset();  		
		//path播放音乐的路径
		mediaPlayer.setDataSource(path);
		// 准备声音  
        mediaPlayer.prepare();  
        // 播放  
        mediaPlayer.start();  
		//调整音量 curVolume为音量值
		audioMgr.setStreamVolume(AudioManager.STREAM_MUSIC, curVolume,  
              AudioManager.FLAG_PLAY_SOUND);  

	}

adjustStreamVolume (AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI); 
第一个streamType是需要调整音量的类型,这里设的是媒体音量,可以是:  
1.STREAM_ALARM 警报  
2.STREAM_MUSIC 音乐回放即媒体音量  
3.STREAM_NOTIFICATION 窗口顶部状态栏Notification,  
4.STREAM_RING 铃声  
5.STREAM_SYSTEM 系统  
6.STREAM_VOICE_CALL 通话    
第二个direction,是调整的方向,增加或减少
第三个flags是一些附加参数,只介绍两个常用的  
1.FLAG_PLAY_SOUND 调整音量时播放声音  
2.FLAG_SHOW_UI 调整时显示音量条,就是按音量键出现的那个 

添加权限:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值