当前位置: 首页 > news >正文

Android 高通Camera2 Camera Device Close

 1、很多人看到这个日志第一感觉可能觉得哪里没有合理释放,于是带着这个思路去进行百度探索

2、一开始我去寻找 ImageReader.OnImageAvailableListener 这个问题

   var afterBitmap: Bitmap? = null/**监听拍照的图片 */private val imageAvailableListener =ImageReader.OnImageAvailableListener { reader ->try {
//                ThreadPoolManager.getInstance().execute {// 获取捕获的照片数据val image = reader.acquireNextImage()val buffer = image.planes[0].bufferval data = ByteArray(buffer.remaining())buffer[data]
//                val bitmapByteArray = BitmapUtil.compressInSampleSize(data, 800, 480)
//                afterBitmap =
//                    BitmapFactory.decodeByteArray(bitmapByteArray, 0, bitmapByteArray.size)//显示图片val options =BitmapFactory.Options()options.inSampleSize = 2val bitmap =BitmapFactory.decodeByteArray(data, 0, data.size, options)requireActivity().runOnUiThread(){iv5.isVisible = trueiv5.setImageBitmap(bitmap)//  iv.setImageBitmap(adjustTakePhotoRotation(bitmap,0))showButton(fail = true, pass = true)}image.close()//不关闭不能连拍} catch (e: Exception) {}}

3、后面网上去寻找因为  Camera2最大连拍限制是2 网上很多数包括Google相机源码 需要单独开个线程去处理图片的逻辑 ,然后ui在主线程去处理,最后尝试一波在平板以及自己手机连续点击拍照还是出现crash 日志内容java.lang.IllegalStateException: CameraDevice was already closed

4、我于是陷入困境 然后去原生骁龙相机去找答案 很多人都是在触摸onTouch事件里面去处理连拍的逻辑 然后看到生命周期。

5、于是又尝试修改 是不是哪里没有完全释放掉那 就直接从报错信息上排查吧,加多点日志,看下哪个地方有把camera device关掉没 ,另一方面就是看下完整日志,看下有系统这块有没其它异常

分析日志,是在拍照完成后,这时应该是请求预览,然后发现camera device关闭了

这时候把所有cameradevice释放地方加上日志

6、惊喜出现了  onPause里面 这个打印已经可以知道前面异常的原因了。就是onpause的时候释放了camera.device,拍照回调里面又去请求了预览。

 7、解决方案在 报错是在拍照完成的oncapturecompled里面,然后去恢复预览出问题的,所以应该在拍照完成的回调里面加 要是觉的其它地方也可能有问题,就都加下 比如拍照/预览功能

 8、然后再连续点击拍照暂时没有出现crash 

其他camera2具体问题 具体分析,到这里基本流程结束了。转载请注明出处,谢谢!

Android 高通Camera2 Camera Device Close_KdanMin的博客-CSDN博客

相关文章:

Android 高通Camera2 Camera Device Close

1、很多人看到这个日志第一感觉可能觉得哪里没有合理释放,于是带着这个思路去进行百度探索 2、一开始我去寻找 ImageReader.OnImageAvailableListener 这个问题 var afterBitmap: Bitmap? null/**监听拍照的图片 */private val imageAvailableListener ImageRead…...

TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5

原文:Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的…...

4、浅谈Makefile文件及其简单的使用知识

文章目录1、什么是Makefile?(1)makefile关系到了整个工程的编译规则。(2)makefile带来的好处就是——“自动化编译”(3)make是一个命令工具,是一个解释makefile中指令的命令工具2、为…...

5G/V2X赛道「重启」

在提升高阶智能驾驶安全性和感知冗余能力的道路上,除了激光雷达、高精度地图及定位,还有一项技术可能即将掀起一场新的风暴。 就在今年3月,作为全球通信领域的年度风向标 — 2023世界移动通信大会(MWC)上,…...

pytorch进阶学习(四):使用不同分类模型进行数据训练(alexnet、resnet、vgg等)

课程资源:5、帮各位写好了十多个分类模型,直接运行即可【小学生都会的Pytorch】_哔哩哔哩_bilibili 目录 一、项目介绍 1. 数据集准备 2. 运行CreateDataset.py 3. 运行TrainModal.py 4. 如何切换显卡型号 二、代码 1. CreateDataset.py 2.Train…...

Java面向对象高级【注解和反射】

目录 注解 什么是注解? 自定义注解 元注解 反射 什么是反射 静态语言和动态语言 动态语言 静态语言 对比 Class类 Java内存分析 类加载过程 类加载器 获取运行时类的完整结构 通过Class对象实例化对象 1.调用Class对象的newInstance 2.Constructor…...

Pytorch基础 - 4. torch.expand() 和 torch.repeat()

目录 1. torch.expand(*sizes) 2. torch.repeat(*sizes) 3. 两者内存占用的区别 在PyTorch中有两个函数可以用来扩展某一维度的张量,即 torch.expand() 和 torch.repeat() 1. torch.expand(*sizes) 【含义】将输入张量在大小为1的维度上进行拓展,…...

《LeetCode》——LeetCode刷题日记

本期,将给大家带来的是关于 LeetCode 的关于二叉树的题目讲解。 目录 (一)606. 根据二叉树创建字符串 💥题意分析 💥解题思路 (二)102. 二叉树的层序遍历 💥题意分析 &#…...

mysql数据库审计(1)

1.数据库审计工具介绍及选择 1.1. 数据库审计工具介绍 MySQL 分支的审计功能包含在企业版中,社区版可以使用其他分支提供的工具。目前已知的审计工具,社区版本有 Percona 的 Percona Server Audit Log 、MariaDB 的 MariaDB Audit Plugin 和 McAfee 的…...

Kafka---kafka概述和kafka基础架构

kafka概述和kafka基础架构 文章目录kafka概述和kafka基础架构Kafka定义消息队列传统消息队列应用场景缓存/消峰解耦异步通信消息队列的两种模式点对点模式发布/订阅模式kafka基础架构producerConsumerConsumer Group(CG)BrokerTopicPartitionReplicaLead…...

《JavaEE初阶》多线程基础

《JavaEE初阶》多线程基础 文章目录《JavaEE初阶》多线程基础前言:多线程的概念简单创建线程并运行:简述Thread中run方法与start方法的区别创建线程的几种方法:探讨串行执行与并行执行的执行时间多线程的使用场景:Thread类简单介绍:构造方法:获取线程的常见属性:线程的常用方法…...

技术分享 | OMS 初识

作者:高鹏 DBA,负责项目日常问题排查,广告位长期出租 。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文主要贡献者:进行OMS源码分析的…...

【Elastic (ELK) Stack 实战教程】10、ELK 架构升级-引入消息队列 Redis、Kafka

目录 一、ELK 架构面临的问题 1.1 耦合度过高 1.2 性能瓶颈 二、ELK 对接 Redis 实践 2.1 配置 Redis 2.1.1 安装 Redis 2.1.2 配置 Redis 2.1.3 启动 Redis 2.2 配置 Filebeat 2.3 配置 Logstash 2.4 数据消费 2.5 配置 kibana 三、消息队列基本概述 3.1 什么是…...

优先、双端队列-我的基础算法刷题之路(八)

本篇博客旨在整理记录自已对优先队列、双端队列的一些总结,以及刷题的解题思路,同时希望可给小伙伴一些帮助。本人也是算法小白,水平有限,如果文章中有什么错误之处,希望小伙伴们可以在评论区指出来,共勉 &…...

Python3 os.symlink() 方法、Python 质数判断

Python3 os.symlink() 方法 概述 os.symlink() 方法用于创建一个软链接。 语法 symlink()方法语法格式如下: os.symlink(src, dst)参数 src -- 源地址。 dst -- 目标地址。 返回值 该方法没有返回值。 实例 以下实例演示了 symlink() 方法的使用&#xff1…...

P1972 [SDOI2009] HH的项链

[SDOI2009] HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来…...

​力扣解法汇总1026. 节点与其祖先之间的最大差值

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值…...

010:Mapbox GL移动鼠标mousemove,显示坐标信息

第010个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中移动鼠标mousemove,显示坐标信息。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共81行)相关API参考:专栏目标示例效果 配置方式 1)查看基础…...

【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

百度暑期实习 C++ 一面

1.数组 链表 数组是一种线性数据结构,其中相同类型的元素连续存储在一段内存中,并且可以通过索引来访问每个元素。数组的优点是随机访问元素非常快速,但缺点是插入或删除元素可能需要移动其他元素。 链表也是一种线性数据结构,但…...

STM32CubeMX+Keil MDK联合开发:手把手教你配置蓝桥杯G431工程模板

STM32CubeMXKeil MDK联合开发:手把手教你配置蓝桥杯G431工程模板 对于参加蓝桥杯嵌入式赛道的选手来说,掌握STM32G431RBT6开发板的快速工程搭建是必备技能。本文将带你从零开始,通过STM32CubeMX和Keil MDK的协同工作,完成一个标准…...

SDMatte Web端体验优化:首屏加载速度与模型预热机制说明

SDMatte Web端体验优化:首屏加载速度与模型预热机制说明 1. 引言 在电商、设计、内容创作等领域,高质量的图像抠图已经成为刚需。SDMatte作为一款专注于复杂边缘和透明物体处理的AI抠图工具,其Web端体验直接影响用户的使用感受。本文将详细…...

【模型手术室】第七篇:模型量化 —— 从 FP16 到 4-bit 的极限压缩与性能翻倍

专栏进度:07 / 10 (微调实战专题) 大模型默认使用 FP16(16 位浮点数) 存储权重,这意味着每个参数占 2 字节。一个 7B 模型光权重就占 14GB 显存。量化的本质是把这些高精度的数字映射到更小的整数空间(如 INT4&#xf…...

四自由度车辆与简支梁桥车桥耦合振动的Matlab实现

车桥耦合振动程序 matlab编程 四自由度车辆与简支梁桥车桥耦合 可提取车体垂直及转动加速度响应以及车轮响应 在交通工程领域,车桥耦合振动的研究对于保障桥梁结构安全以及行车舒适性至关重要。今天咱们就来讲讲如何用Matlab实现四自由度车辆与简支梁桥的车桥耦合振…...

告别格式转换烦恼!Marker让文档转换效率提升5倍

告别格式转换烦恼!Marker让文档转换效率提升5倍 【免费下载链接】marker 一个高效、准确的工具,能够将 PDF 和图像快速转换为 Markdown、JSON 和 HTML 格式,支持多语言和复杂布局处理,可选集成 LLM 提升精度,适用于学术…...

FreeRTOS实战指南:从消息队列到内存管理,手把手解决嵌入式多任务难题

FreeRTOS实战指南:从消息队列到内存管理,手把手解决嵌入式多任务难题 1. 为什么嵌入式开发者需要FreeRTOS 在资源受限的嵌入式系统中,开发者常常面临这样的困境:既要处理实时性要求高的传感器数据采集,又要兼顾用户界面…...

zotero-style:提升文献管理效率的3个核心方案

zotero-style:提升文献管理效率的3个核心方案 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件,提供了一系列功能来增强 Zotero 的用户体验,如阅读进度可视化和标签管理,适合研究人员和学者。 项目地址: https:/…...

3步实战指南:轻松搭建抖音直播间弹幕数据抓取系统

3步实战指南:轻松搭建抖音直播间弹幕数据抓取系统 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2024最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 想象一下,你…...

如何5分钟制作超轻量Windows 11系统:Tiny11Builder终极指南

如何5分钟制作超轻量Windows 11系统:Tiny11Builder终极指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 想要体验一个干净、流畅、占用空间极小的W…...

【独家首发】Python扩展安全成熟度模型(PESMM v1.2):覆盖编译期/加载期/运行期的9维评分体系,仅限前500名开发者免费获取评估工具包

第一章:Python扩展模块安全概述Python 扩展模块(如 C/C 编写的 .so/.dll 文件或 Cython 生成的二进制模块)在提升性能的同时,也引入了原生层特有的安全风险。与纯 Python 代码不同,扩展模块直接操作内存、调用系统 API…...