/*********************************************************************************************************** * 文件名: * 描述:音乐播放工具类直接实例化调用 * 时间:2018/4/23 17:40 * 版权: ***********************************************************************************************************/ public class MusicPlayer { private static Context context; private static MediaPlayer mPlayer; private static MusicPlayer musicPlayer; public MusicPlayer(Context context){ this.context=context; } public synchronized static MusicPlayer getInstance(Context context){ if(musicPlayer==null){ musicPlayer=new MusicPlayer(context); } if(mPlayer==null){ mPlayer=new MediaPlayer(); } return musicPlayer; } //播放 public void playMusic(String url) { mPlayer.setVolume(1f,1f); mPlayer.reset(); try { mPlayer.setDataSource(context, Uri.parse(url)); //异步准备 mPlayer.prepareAsync(); mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mediaPlayer) { mPlayer.start(); Toast.makeText(context,"播放中",Toast.LENGTH_SHORT).show(); } }); } catch (Exception e) { e.printStackTrace(); } //播放完成 mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { mPlayer.stop(); mPlayer.release(); mPlayer = null; } }); //播放错误 mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mediaPlayer, int what, int extra) { return false; } }); } //停止 public void stopMusic(){ mPlayer.stop(); mPlayer.release(); mPlayer = null; }
}
/*********************************************************************************************************** * 文件名: * 描述:视频播放(循环播放)工具类 * 时间:2018/4/23 17:41 * 版权: ***********************************************************************************************************/ public class VideoPlayer { private static VideoPlayer vedioPlayer; private static Context context; private GestureDetector gestureDetector; private static int k; private static int i=0; private ArrayList<String> videolist=new ArrayList<>(); public VideoPlayer(Context context ){ this.context=context; } public synchronized static VideoPlayer getInstance(Context context ){ if(vedioPlayer==null){ vedioPlayer=new VideoPlayer(context); } return vedioPlayer; } public void initVideo(final VideoView video_player){ //确定路径 videolist.add("file:///sdcard/xinxilanyanshimeijing.mp4"); videolist.add("file:///sdcard/yinnimeijingjiatianxia.mp4"); videolist.add("file:///sdcard/zixindeliudafaze.mp4"); String url=videolist.get(i); if(video_player!=null&&url!=null){ //设置视频控制器 video_player.setMediaController(new MediaController(context)); //设置视频路径 video_player.setVideoURI(Uri.parse(url)); //开始播放视频 video_player.start(); ToastUtils.show(new WeakReference<Context>(context),context.getString(R.string.str_playing)); //监听播放完成 video_player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { i++; //设置视频控制器 video_player.setMediaController(new MediaController(context)); //设置视频路径 video_player.setVideoURI(Uri.parse(videolist.get(i))); //开始播放视频 video_player.start(); if(i==2){ i=-1; } } }); }else { Toast.makeText(context,"SD卡路径为空",Toast.LENGTH_SHORT).show(); return; } } //设置音量亮度 public GestureDetector setGestureDetector(final Window window, final AudioManager audioManager){ gestureDetector = new GestureDetector(new GestureDetector.OnGestureListener() { @Override public boolean onDown(MotionEvent motionEvent) { return false; } @Override public void onShowPress(MotionEvent motionEvent){} @Override public boolean onSingleTapUp(MotionEvent motionEvent) { return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if(e1.getY()-e2.getY()>0.5&&Math.abs(distanceY)>0.5){ if(e1.getX()<500){ setLightness(10,window); } else{ setAudio(1,audioManager); } } if(e1.getY()-e2.getY()<0.5&&Math.abs(distanceY)>0.5){ Log.d("==g==", e1.getY() + ""); if(e1.getX()<500){ setLightness(-10,window); }else{ setAudio(-1,audioManager); } } return true; } @Override public void onLongPress(MotionEvent motionEvent) { } //抛 @Override public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { return false; } }); return gestureDetector; } //加减音量 public void setAudio(int volume, AudioManager audioManager) { //当前音量 k = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); //最大音量 int max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); Log.d("==d==", "" + max); Log.d("==d==", "" + k); k = k + volume; if (k >= 0 && k <= max) { audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, k, AudioManager.FLAG_PLAY_SOUND); } else { return; } } //设置亮度 private void setLightness(float lightness,Window window) { WindowManager.LayoutParams layoutParams = window.getAttributes(); //屏幕的亮度,最大是255 layoutParams.screenBrightness =layoutParams.screenBrightness+lightness/255f; if(layoutParams.screenBrightness>1){ layoutParams.screenBrightness=1; }else if(layoutParams.screenBrightness<0.0){ layoutParams.screenBrightness=0.0f; } window.setAttributes(layoutParams); } }视频播放的Activity:
public class VideoActivity extends AppCompatActivity { private VideoView video_view; private Window window; private AudioManager audioManager; private TextView lightvolume_tv; private GestureDetector gestureDetector; private VideoPlayer videoPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video); initView(); initVideo(); } private void initVideo() { //实例化视频工具类 videoPlayer = VideoPlayer.getInstance(this); //播放 videoPlayer.initVideo(video_view); gestureDetector =videoPlayer .setGestureDetector(window, audioManager); } //初始化 private void initView() { video_view = findViewById(R.id.video_view); lightvolume_tv = findViewById(R.id.lightvolume_tv); window = getWindow(); audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); } //结合设置亮度音量 @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: if(event.getX()<500){ try { WindowManager.LayoutParams layoutParams =getWindow().getAttributes(); int screenBrightness = (int) (layoutParams.screenBrightness*100); lightvolume_tv.setVisibility(View.VISIBLE); lightvolume_tv.setText("当前亮度:"+screenBrightness+"%"); } catch (Exception e) { e.printStackTrace(); } }else { int volmue=audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); int maxVolume=audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); int vp=volmue*100/maxVolume; lightvolume_tv.setVisibility(View.VISIBLE); lightvolume_tv.setText("当前音量:"+vp+"%"); } break; case MotionEvent.ACTION_UP: new Handler().postDelayed(new Runnable(){ public void run() { lightvolume_tv.setVisibility(View.GONE); } }, 1000); break; default: break; } return gestureDetector.onTouchEvent(event); } }xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.haribit.audioplayer.activity.VideoActivity"> <VideoView android:id="@+id/video_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true"/> <TextView android:id="@+id/lightvolume_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:layout_centerInParent="true"/> </RelativeLayout>