控制音量的大小



最近在项目中遇到了,一个控制播放音量的大小,首先就想到就是调节系统媒体的音量,
这样就能实现功能了,但是由于需求的更改,同时播放两种音乐,只控制其中一个音量的变化.
通过查看资料发现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 调整时显示音量条,就是按音量键出现的那个 

添加权限:

 




你可能感兴趣的:(Android,工作总结)