最近在做车载后视镜的开发,利用SurfaceView进行录视频,一直在后台录视频。但由于我们都知道,SurfaceView要一直在前台(就是所在的fragment和Activity)必须在onResume状态下才能录下(SurfaceView只有当activity显示到了前台,该控件才会被创建)。但我网上百度的好多都没有答案。现在经过思考,解答一下啊,具体用了两种实现的办法。
① WindowManager + Service:
写上布局(SurfaceView),通过windowManager.addView(View)添加到windowManager 上面, 在Service中通过get方法得到SurfaceView,service继承SurfaceHolder.Callback,然后就可以进行预览。切换页面的时候就隐藏掉。
② Fragment + ViewPager :
由于ViewPager里面的Fragment都处于OnResume(加载过后的)。切换页面的时候,SurFaceView就可以继续预览了。
WindowManager:
WindowManager是Android中一个重要的Service,是全局且唯一的。WindowManager继承自ViewManager。WindowManager主要用来管理窗口的一些状态、属性、view增加、删除、更新、窗口顺序、消息收集和处理等。Android中真正展示给用户的是window和view,activity所起的作用主要是处理一些逻辑问题,比如生命周期管理及建立窗口。用法请参考:http://www.2cto.com/kf/201312/261096.html