自定义简单视频播放器
来源:互联网 发布:算法导论 pdf 99 编辑:程序博客网 时间:2024/06/06 17:00
效果图如下:
以下是代码:
package com.example.android_27__playvideo_camera_lx;import android.content.Intent;import android.media.MediaPlayer;import android.net.Uri;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.SurfaceView;import android.view.View;import android.widget.ImageButton;import android.widget.SeekBar;import java.io.File;import java.io.IOException;import java.util.ArrayList;public class MainActivity extends AppCompatActivity { private SeekBar seekBar; private MediaPlayer mediaPlayer; private SurfaceView surfaceView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); seekBar = (SeekBar) findViewById(R.id.sb_main_bar); surfaceView = (SurfaceView) findViewById(R.id.surfaceView); //给进度条设置滑动的监听 seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { int progress=seekBar.getProgress(); //在当前位置播放 mediaPlayer.seekTo(progress); } }); } public void isPlayOrPause(View view){ final ImageButton imageButton = (ImageButton) view; if(mediaPlayer==null){ //播放内存卡中的文件 mediaPlayer = new MediaPlayer(); //设置音乐来源路劲 try { //内存卡路劲,要加上file mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/mp/sister.mp4")); //准备 mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } //将媒体播放器捕捉到的画面显示到surfaceview mediaPlayer.setDisplay(surfaceView.getHolder()); //开始播放 mediaPlayer.start(); //把播放图标换成暂停图标 imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐的总时长 int pd = mediaPlayer.getDuration(); //将进度条设置最大值为:音乐的总时长 seekBar.setMax(pd); //实例化线程 new myThread().start(); }else if(mediaPlayer.isPlaying()){//判断是否正在播放 //暂停播放 mediaPlayer.pause(); imageButton.setImageResource(android.R.drawable.ic_media_play); }else { //开始播放 mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); } } class myThread extends Thread{ @Override public void run() { super.run(); while (seekBar.getProgress()<=seekBar.getMax()){ //获取音乐当前播放的位置 int cp = mediaPlayer.getCurrentPosition(); seekBar.setProgress(cp); } } }}
注意要给权限:
<!-- 读取内存卡权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
0 0
- 自定义简单视频播放器
- 自定义视频播放器
- 自定义视频播放器
- 自定义视频播放器
- 自定义视频播放器
- 最简单的自定义视频播放进度条
- android自定义视频播放器
- AVPlayer自定义视频播放器
- iOS 自定义视频播放器
- Android自定义视频播放器
- android 自定义播放器播放视频
- android简单视频播放器
- Android 简单视频播放器
- Opencv 简单视频播放器
- ffmpeg简单视频播放器
- 最简单的基于DirectShow的示例:视频播放器自定义版
- Android 视频播放器之JieCaoVideoPlayer的简单实用以及自定义UI
- ios 使用AVPlayer自定义视频播放器
- 商品左右分类
- I2C的时序
- 基于ui-bootstrap写的Craousel——轮播
- 日期的获取和日期的转化
- ubuntu虽然安装了xchm,KchmViewer也打不开html,css的帮助文档
- 自定义简单视频播放器
- Counting Offspring(hdu3887)
- 后台 转化出现乱码的代码
- pacific vis 2017 评审流程
- ios 闪退,以及崩溃日志查看
- IDEA中ivy的使用
- 产生随机数,IO流写入文件
- 关于Retrofit使用HTTPS的相关问题
- 机器学习-3 cost function 代价函数