无论如何,您可以使应用程序在定向后保留缓冲区,而无需手动处理配置更改。
场景基本上:
当方向改变时,应保留直到最新点的视频缓冲区。
需要重新加载一个新的布局(因为portait和lanscape有不同的布局),因此让app重新启动activity来重新加载新资源是我认为最好的方式。
视频组件位于片段中。
我尝试过但不可接受的替代方案:
第一个解决方法是保存视频的位置,在创建视图后,使用 seekTo 转到最后一点。但是,这将导致设备再次重新缓冲。
我尝试过使用片段 setRetainInstance(true) 并确保媒体播放器在方向更改后不会重新初始化。在每个 onCreateView 之后,我只是将 mediaplayer.setDisplay() 设置为一个新的surfaceholder。不幸的是,这会导致媒体播放器进入错误状态,进而需要重置媒体播放器。
对此有任何建议/解决方法吗?
编辑:我在stackoverflow的某个地方看到你可以在媒体播放器在android 4.0+中处于活动状态时更改媒体播放器表面支架。但是,我正在为 android 3.x 开发一个应用程序。