您的位置:首页 > 其它

手机影音7--视频播放器的基本功能(4)

2016-11-15 02:15 274 查看


1.用AudioManager调声音

1_得到当前音量和最大音量

//关于设置音量
private int currentVolume;//当前音量值
private int currentMaxVolume;//当前最大音量
private AudioManager am;

am = (AudioManager) getSystemService(AUDIO_SERVICE);
currentVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC);
currentMaxVolume = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);


2_拖动的时候改变音量

voice_seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override
public void onStopTrackingTouch(SeekBar seekBar) {
sendDelayedHideControlPlayerMessage();
}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {
removeDelayedHideControlPlayerMessage();
}

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(fromUser){
updateVolume(progress);
}
}
});

/**
* 修改音量范围0~15
* @param progress2
*/
protected void updateVolume(int volume) {
am.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0);
voice_seekBar.setProgress(volume);
currentVolume = volume;
}


3_静音和非静音

case R.id.btn_voice:
isMute = !isMute;
updateVolume(currentVolume);
break;

/**
* 修改音量范围0~15
* @param progress2
*/
protected void updateVolume(int volume) {
if(isMute){
am.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
voice_seekBar.setProgress(0);
}else{
am.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0);
voice_seekBar.setProgress(volume);
}
currentVolume = volume;
}


2.手指在屏幕上下滑动实现声音大小变化  

private  float startY;
/**
* 滑动的区域
*/
private float touchRang;
/**
* 当前的音量
*/
private  int mVol;

@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN://手指按下屏幕
//1.记录相关的值
startY = event.getY();
touchRang =Math.min(screenWidth, screenHeight);//screenHeight
mVol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
handler.removeMessages(HIDE_MEDIACONTROL);
break;
case MotionEvent.ACTION_MOVE://手指在屏幕上移动
//2.来到结束的坐标
float endY = event.getY();
//3.计算偏移量
float distanceY = startY - endY;
//要改变的声音 = (滑动的距离 / 总距离)*最大音量
float delta = (distanceY/touchRang)*maxVolume;
//最终声音 = 原来的声音 + 要改变的声音
float volum  e = Math.min(Math.max(mVol+delta,0),maxVolume);
if(delta != 0){
updatavolumeProgress((int) volume);
}
// startY = event.getY();
break;
case MotionEvent.ACTION_UP://手指离开屏幕
handler.sendEmptyMessageDelayed(HIDE_MEDIACONTROL,5000);
break;
}
return super.onTouchEvent(event);
}


3.监听按手机声音健改变声音大小  

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
currentVolume--;
updatavolumeProgress(currentVolume);
handler.removeMessages(HIDE_MEDIACONTROL);
handler.sendEmptyMessageDelayed(HIDE_MEDIACONTROL, 5000);
return true;
}else if(keyCode ==KeyEvent.KEYCODE_VOLUME_UP){
currentVolume++;
updatavolumeProgress(currentVolume);
handler.removeMessages(HIDE_MEDIACONTROL);
handler.sendEmptyMessageDelayed(HIDE_MEDIACONTROL, 5000);
return true;
}

return super.onKeyDown(keyCode, event);
}


  

  

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: