android按home键再启动程序camera黑屏&屏蔽home键
来源:互联网 发布:金盾软件 编辑:程序博客网 时间:2024/06/16 00:00
更新:现在找到解决按home键再启动程序camera黑屏的方法了:需要将SurfaceView加载到FrameLayout中的代码写在onResume中
@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();if (camera == null){camera = getCameraInstance();}//必须放在onResume中,不然会出现Home键之后,再回到该APP,黑屏mySurfaceView = new MySurfaceView(getApplicationContext(), camera);FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);preview.addView(mySurfaceView);}https://www.2cto.com/kf/201408/329957.html
MainActivity有一个按钮,点按钮进入到CameraActivity,CameraActivity里有一个Camera的预览,调用的系统相机。CameraActivity类implements了SurfaceHolder.Callback, Camera.PreviewCallback。现在的问题是在CameraActivity界面Camera正常预览时,点击手机home键后再点应用图标进入应用,Camera就黑屏了。点手机返回键返回MainActivity再进入CameraActivity时Camera预览就正常了。
开启camera预览的方法:
private void preview() throws IOException { if (hasFrontFacingCamera()) {//如果有前置摄像头 camera = Camera.open(1); camera.setDisplayOrientation(90); } else { camera = Camera.open(0); camera.setDisplayOrientation(270); } Camera.Parameters params = camera.getParameters(); List<Camera.Size> sizes = params.getSupportedPreviewSizes(); Camera.Size selected = sizes.get(1); width = selected.width; height = selected.height; params.setPreviewSize(640, 480);// params.setPictureFormat(PixelFormat.RGB_565);// params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);// params.setPreviewSize(width, height); camera.setParameters(params); camera.setPreviewDisplay(holder); camera.startPreview(); }
这个问题貌似是因为按home键后Activity中的camera被release掉了,然后再点应用图标进入应用,camera没有启动。启动camera的方法preview()是写在了onCreate方法里。
刚开始想的是处理Activity的生命周期的方法,onPause时释放Camera,onRestart或onResume时调用preview()重新启动Camera。但是报错“app passed NULL surface”。查找了资料,看到这个博客Android调用相机预览黑屏app passed NULL surface解决,试了里面的方法,不起作用,报错。没能解决。放弃。
后来又试了在CameraActivity中屏蔽home键,这样就不能退回桌面了。自己写了onKeyDown方法屏蔽home键,发现不起作用。然后就上网搜屏蔽home键的方法,发现网上说的方法都无效,包括所谓的4.0以后能用的方法,包括GitHub上别人提供的第三方工具。据说谷歌为了安全,把屏蔽home键的方法写在了framework层而不再是application层,除非修改framework层的代码,否则屏蔽不了home键。搜了很多资料,发现这个有一点道理:Android 开发锁屏屏蔽Home键、原生锁屏界面,但是没源码,这个功能对我来说又不是必须的,就没好好搞。
再后来,想了个偷懒的办法。因为在我们这个APP中,CameraActivity界面中按home键基本是不会有的操作,属于非正常操作,所以我就想如果按了home键,那就把当前页销毁,返回上一页面,重新进入CameraActivity。于是在当前页失去焦点时finnish掉当前页。
@Override protected void onPause() { super.onPause(); finish(); }
经测试,可以使用。
类似博客:Android 休眠状态对Camera预览的影响
- android按home键再启动程序camera黑屏&屏蔽home键
- Android HOME键屏蔽
- Android 屏蔽HOME键
- Android屏蔽home键
- android屏蔽home键
- Android屏蔽home键
- Android 屏蔽Home键
- android 屏蔽home键
- android 屏蔽home键
- Android屏蔽HOME键
- android屏蔽Home键
- android 屏蔽HOME键
- android home键屏蔽
- Android 屏蔽Home键
- Android 屏蔽home键
- Android中屏蔽 电源键长按、Home键、Home长按
- Android中屏蔽 电源键长按、Home键、Home长按
- 屏蔽 Home 键 (Android|)
- python3 [爬虫入门实战]爬虫之mongoDB数据库的安装配置与可视化
- stamen的程序员之路
- 计算几何之旋转卡壳算法
- can not load com.mysql.jdbc.Driver
- Google Hacking!
- android按home键再启动程序camera黑屏&屏蔽home键
- 无法显示xml页 无法查看使用样式表
- spring boot 配置最简化-小改进===》眼球清净
- Spring Aop源码学习--Aop代理AopProxy
- LOJ #6077. 「2017 山东一轮集训 Day7」逆序对
- 在立即执行函数内组合使用构造函数模式和原型模式创建对象,实现模块化开发(以daterangepicker.js为例)
- iOS 获取系统相册的方式与坑点
- cookie 和session 的区别详解
- Unity3D研究院之Time.timeScale、游戏暂停(七十四)