SurfaceView+MediaPlayer视频播放并用SharedPreferences实现暂停功能
来源:互联网 发布:如何将mac文件导入u盘 编辑:程序博客网 时间:2024/06/04 08:15
SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的surface。我们可以控制这个surface的格式和尺寸。SurfaceView控制这个surface绘制的位置。surface类直接继承Object,对应了一块屏幕缓冲区,每个窗口window对应一个Surface,任何View都是画在Surface上的,传统的view共享一块屏幕缓冲区。
MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。
MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。
SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置
下面是布局代码:
<?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:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.surfaceview_video.MainActivity"> <SurfaceView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/surfaceView" android:layout_centerVertical="true" android:layout_centerHorizontal="true"/></RelativeLayout>
MainActivity代码,其中多媒体数据源,为博主虚拟机sdcard中数据的路径,请自行设置数据源
package com.example.surfaceview_video;import android.content.SharedPreferences;import android.media.MediaPlayer;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.SurfaceHolder;import android.view.SurfaceView;import java.io.IOException;public class MainActivity extends AppCompatActivity { private SurfaceView mSurfaceView; private MediaPlayer mediaPlayer; private SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView); //建立sharedPreferences对象 sp= getSharedPreferences("config", MODE_PRIVATE); //创建Mediaplayer的对象 mediaPlayer = new MediaPlayer(); try { //设置多媒体类的数据源(可以播放音乐或视频) mediaPlayer.setDataSource("/storage/emulated/0/Download/oppo.3gp"); //让多媒体对象做好播放的准备 mediaPlayer.prepare(); } catch (IOException e) { e.printStackTrace(); } //获取SurfaceView的控制器 final SurfaceHolder holder = mSurfaceView.getHolder(); //设置对SurfaceView对象的监听 holder.addCallback(new SurfaceHolder.Callback() { @Override//surfaceView创建时执行 public void surfaceCreated(SurfaceHolder surfaceHolder) { //指定多媒体对象用哪个控件播放视频资源 mediaPlayer.setDisplay(holder); //获取之前存放的位置,通过sp int config = sp.getInt("config",0); //让MediaPlayer根据这个进度进行播放 mediaPlayer.seekTo(config); //使用MediaPlayer播放音乐 mediaPlayer.start(); } @Override//surfaceView被改变的时候 public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { } @Override//surfaceView被销毁时执行 public void surfaceDestroyed(SurfaceHolder surfaceHolder) { //当多媒体对象存在时,关闭MediaPlayer对象,释放资源的逻辑操作 if (mediaPlayer != null){ //把记录下来当前播放的位置 int currentPosition = mediaPlayer.getCurrentPosition(); //把记录下来的位置保存到sp下,先得到一个sp的编辑器,再根据数据存储的类型把数据存到文件里进行提交 sp.edit().putInt("config",currentPosition).commit(); //关闭MediaPlayer对象 mediaPlayer.stop(); //释放MediaPlayer资源 mediaPlayer.release(); } } }); }}
1 0
- SurfaceView+MediaPlayer视频播放并用SharedPreferences实现暂停功能
- SurfaceView + MediaPlayer 实现视频播放功能
- SurfaceView+MediaPlayer实现视频播放
- MediaPlayer、SurfaceView实现视频播放
- MediaPlayer + SurfaceView 来实现 视频播放
- MediaPlayer+surfaceView实现视频播放器
- Android SurfaceView + MediaPlayer实现视频播放器
- Android MediaPlayer+SurfaceView实现视频播放
- Android SurfaceView+MediaPlayer实现视频播放
- 使用SurfaceView+MediaPlayer+SeekBar实现视频播放
- Android SurfaceView+MediaPlayer 本地视频播放器(卡拉OK功能)
- MediaPlayer和SurfaceView播放视频
- MediaPlayer和SurfaceView播放视频
- 使用SurfaceView&MediaPlayer播放视频
- android视频播放MediaPlayer+SurfaceView
- MediaPlayer和SurfaceView播放视频
- 使用SurfaceView+MediaPlayer视频播放
- ijkPlayer 实现视频播放,暂停,功能
- 性能优化
- LightOJ-1102-组合数学,逆元
- Python exp() 函数
- 网页背景效果-canvas-nest
- ffmpeg 常用基本命令
- SurfaceView+MediaPlayer视频播放并用SharedPreferences实现暂停功能
- maven assembly打tar.gz包。
- scala学习1--函数
- maven打包常犯的错误
- multidex 解决的解决方案
- Xcode中和symbols有关的几个设置
- ffmpeg 处理RTMP流媒体的命令大全
- JavaWeb学习路线图
- UIView的类扩展,扩展CGRect