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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手机影音7--视频播放器的基本功能相关的知识,希望对你有一定的参考价值。

技术分享

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);
}
 

  

  

  

以上是关于手机影音7--视频播放器的基本功能的主要内容,如果未能解决你的问题,请参考以下文章

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

手机影音9--视频播放器的高级功能

手机影音8--视频播放器的高级功能

手机影音第七天 视频的播放下一个视频功能实现,视频进度电量变化的实现

手机影音第十一天,显示视频缓冲,显示卡顿时的网速,播放系统视频时调用播放器的选择

手机影音第十四天,本地音乐列表的展示与播放(利用视频播放的布局)