2024年3月28日发(作者:)
传智播客:安卓教程-视频播放器
1.6.1
使用 MediaPlayer+SurfaceView 播放视频
在该节中,视频播放依然使用 MediaPlayer 类,为了方便演示,我们直接使用本文 1.5 章节中创建
的工程,只需在布局文件添加 SurfaceView 控件即可。
布局文件如下所示。
【文件 1-9】 activity_
1.
2.
3.
4.
android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > 34. 传智播客 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/sb" /> android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/sv" /> 46. 我们直接在 1.5 章节的代码基础上进行修改,修改 MainActivity 类,这里只给出不同的代码片段: 1. 添加如下变量的声明 a) private SurfaceViewsv; b) private SurfaceHolderholder; 2. 在 play()方法中添加如下代码 a) //设置输出画面 b) play(holder); 3. 获取 SurfaceView 对象,并设置缓存方式 sv = (SurfaceView) findViewById(); a) Holder = der(); b) /** c) * SurfaceView 内部采用双缓冲区 d) * 设置 不维护自己的缓存区,使用屏幕的渲染引擎将内容推 * e) * 送到用户面前 f) */ g) e(E_TYPE_PUSH_BUFFERS); 1.6.2 使用 VideoView 播放视频 传智播客 VideoView 跟 MediaPlayer 相比播放视频步骤要简单的多,因为 VideoView 原生提供了播放,暂停、 快 进、快退、进度条等方法。使用起来要方便的很多。 1. 设置布局文件,布局文件比较简单,因此这里只给你 VideoView 标签 a) b) c) d) android:id="@+id/vv" android:layout_width="match_parent" android:layout_height="match_parent" /> 2. 设置 VideoView 的播放文件路径和媒体控制器,调用 start 方法即可播放媒体文件 1. 2. 3. 4. //实例化 VideoView 对象 vv = (VideoView)findViewById(); //从界面获取播放路径 et_path = (EditText) findViewById(_path); //给VideoView设置视频路径 eoPath(et_t().toString()); //设置VideoView控制器,我们当前类实现了MediaPlayerControl接口 5. 6. 7. 8. 9. 10. 11. 12. 1. 2. 3. 4. 5. iaController(newMediaController(this)); //开始播放 (); //设置当前播放器窗口设置为焦点 tFocus(); @Override 3. 覆写 MediaPlayerControl 接口中的抽象方法 publicvoidstart() { } @Override publicvoidpause() { } @Override publicintgetDuration() { return0; } @Override 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. publicintgetCurrentPosition() { return0; } @Override publicvoidseekTo(int pos) { } @Override 传智播客 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. publicboolean isPlaying(){ returnfalse; } @Override publicintgetBufferPercentage() { return0; } @Override publicboolean canPause() { returnfalse; } @Override publicboolean canSeekBackward() { returnfalse; } @Override publicboolean canSeekForward() { returnfalse; } @Override publicintgetAudioSessionId(){ return0; } 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 注意: 上面的方法都是回调方法,我们可以在这些方法里面实现我们的业务逻辑。只有当我们给 VideoView 设置 setMediaController 后控制器才会出现。 图 1-14 音乐播放器效果 传智播客


发布评论