SurfaceView和Mediaplayer实现播放网络和本地视频 一
package ;
import ;
import ;
import ;
import .;
import ;
import ;
import ;
import ;
import ;
import ;
/*
*
*本身就是对SurfaceView和MediaPlayer做了一个封装
*2.实现视频列表播放
*
* 如果读取本地文件,和网络的话 需要添加权限
*
* */
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private SurfaceView surfaceView;
//读取本地文件
private File file=new File("/storage/sdcard1/音乐/", "曾经的你.mp4");
//访问网络视频
private String uri="http://112.253.22.157/17/z/z/y/u/zzyuasjwufnqerzvyxgkuigrkcatxr/ /";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(.activity_main);
surfaceView = (SurfaceView) findViewById();
mediaPlayer = new MediaPlayer();
//获取SurfaceHolder 可以通过该接口来操作SurfaceView中的Surface
SurfaceHolder surfaceHolder = ();
//设置Meiaplayer的准备监听
(new () {
@Override
public void onPrepared(MediaPlayer mp) {
//准备完成后播放
();
}
});
(new () {
//当SurfaceView中Surface创建时回掉
//该方法表示Surface已经创建完成,可以在该方法中进行绘图操作
@Override
public void surfaceCreated(SurfaceHolder holder) {
();
try {
//设置视屏文件图像的显示参数
(holder);
//()本地视频
//uri 网络视频
(MainActivity.this, (uri));
//prepare();表示准备工作同步进行,(准备工作在UI线程中进行)
//当播放网络视频时,如果网络不要 会报ARN 所以不采用该方法
//();
//异步准备 准备工作在子线程中进行 当播放网络视频时候一般采用此方法
();
} catch (IOException e) {
();
}
}
//当SurfaceView的大小发生改变时候触发该方法
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
//Surface销毁时回掉
//当Surface销毁时候,同时把MediaPlayer也销毁
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mediaPlayer!=null) {
();
//释放资源
();
}
}
});
//设置 surfaceView点击监听
(new () {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (()) {
case MotionEvent.ACTION_DOWN:
if (()) {
();
} else {
();
}
break;
}
//返回True代表事件已经处理了
return true;
}
});
}
}