首页 > 学院 > 开发设计 > 正文

视屏播放器,两种不同的方法

2019-11-08 00:37:39
字体:
来源:转载
供稿:网友
利用不同的技术实现视屏播放器

第一种结果如下:

这里写图片描述

实现步骤: 第一步在activity_main.xml文件中写布局 <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.android_27.MainActivity" android:orientation="vertical" > <SurfaceView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/sv_sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <SeekBar android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/sb_PRojerss"/> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/ic_media_play" android:onClick="bf" /> </LinearLayout></RelativeLayout>

第二步:MainActivity类代码

public class MainActivity extends AppCompatActivity { private SeekBar sb_projerss; private MediaPlayer mediaPlayer; private SurfaceView sv_sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取SeekBar的ID sb_projerss =(SeekBar)findViewById(R.id.sb_projerss); sv_sp =(SurfaceView)findViewById(R.id.sv_sp); //设置监听 sb_projerss.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 bf(View view){ //获得ImageButton final ImageButton imageButton= (ImageButton) view; if(mediaPlayer==null){ //播放内存卡中的文件 mediaPlayer=new MediaPlayer(); //设置音源 try { mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/movies/sister.mp4")); mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } //将画面展示到SurfaceView中 mediaPlayer.setDisplay(sv_sp.getHolder()); mediaPlayer.start(); imageButton.setImageResource(android.R.drawable.ic_media_pause); //获取音乐总时间 int duration=mediaPlayer.getDuration(); //i sb_projerss.setMax(duration); 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(sb_projerss.getProgress()<=sb_projerss.getMax()){ //获取音乐当前播放的位置 int position=mediaPlayer.getCurrentPosition(); //放入SeekBar中 sb_projerss.setProgress(position); } } }

在AndroidManifest.xml中写权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

第二种:利用VideoView显示和MediaController媒体控制器 结果如下图:

这里写图片描述 第一步:activity_videoview.xml布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_videoview" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.android_27.VideoviewActivity"><VideoView android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/vv_vodio" /></LinearLayout>

第二步:VideoviewActivity类

public class VideoviewActivity extends AppCompatActivity { private VideoView vv_vodio; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_videoview); //获得VideoView的ID vv_vodio =(VideoView)findViewById(R.id.vv_vodio); //设置播放视频的来源 vv_vodio.setVideoPath("file://mnt/sdcard/movies/sister.mp4"); //实例化媒体控制器 MediaController mediaController=new MediaController(this); mediaController.setMediaPlayer(vv_vodio); vv_vodio.setMediaController(mediaController); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表