Android调用系统摄像头--使用MediaRecorder--1--预览(preview)功能

Android camera2实现后台拍照(无需界面预览) 1.camera2后台工具类 import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.graphics.ImageFormat; import android.graphics.SurfaceTexture; import android.hardware.camera2.CameraAccessException; import and 阅读详情

使用MediaRecorder就灵活的多,当前Android系统支持的视频/音频编码格式都可以进行定制,灵活组合编码格式。

抛砖引玉,先扯下预览功能

import java.io.IOException;

import android.content.Context;
import android.hardware.Camera;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;

public class CameraPreview extends SurfaceView implements Callback {

    private static final String TAG = "TAG-CameraPreview";
	
    private SurfaceHolder mHolder; 
    private Camera mCamera; 

    public CameraPreview(Context context, Camera camera) { 
        super(context); 
        mCamera = camera; 

        // 安装一个SurfaceHolder.Callback
        mHolder = getHolder(); 
        mHolder.addCallback(this); 

        // 针对低于3.0的Android
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    } 

    public void surfaceCreated(SurfaceHolder holder) { 
        // 把预览画面的位置通知摄像头
        try { 
            mCamera.setPreviewDisplay(holder); 
            mCamera.startPreview(); 
        } catch (IOException e) { 
            Log.d(TAG, "Error setting camera preview: " + e.getMessage()); 
        } 
    } 

    public void surfaceDestroyed(SurfaceHolder holder) { 
        // TODO
    } 

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
        
        if (mHolder.getSurface() == null){ 
          // 预览surface不存在
          return; 
        } 

        // 更改时停止预览 
        try { 
            mCamera.stopPreview(); 
        } catch (Exception e){ 

        } 

        // 在此进行缩放、旋转和重新组织格式
        // 以新的设置启动预览
        try { 
            mCamera.setPreviewDisplay(mHolder); 
            mCamera.startPreview(); 
        } catch (Exception e){ 
            Log.d(TAG, "Error starting camera preview: " + e.getMessage()); 
        } 
    } 

}

预览功能就是在拍视频或者照片的时候屏幕上的“预览”,我试了好多次,貌似Android设备不能不设置预览就进行间谍式的拍摄......

Google Camera 架构了解下,Android面试题集2024版 Surface本质上是BufferQueue的使用者和封装者,当CameraServer中App设置来的Surface容器被填满了BufferQueue机制将会通知到应用,此时App中控件取出各自容器中的内容消费掉,Preview控件中的Surface中的内容将通过View提供到SurfaceFlinger中进行合成最终显示出来,即预览;而ImageReader中的Surface被填了,则App将会取出保存成图片文件消费掉.参考。 阅读详情

相关推荐

华东师范大学2020机试题解

1.统计卡牌的值 #include<iostream> #include<string> #include<vector> //#include<algorithm> using namespace std; int main() { int n; cin>>n; int answer=0; for(int i=0;i<n;++i) { string str; ci

qq_42254342的博客 1901

Web浏览器调用前后置摄像头的跨平台兼容方案

在Web端实现前后置摄像头切换,本质是WebRTC设备发现与约束匹配的技术实践。其核心原理涉及媒体设备枚举(enumerateDevices)、权限上下文(userActivation)、约束条件(facingMode/deviceId)的平台差异化解析。技术价值在于突破iOS Safari对facingMode的强依赖与Android对deviceId的灵活支持之间的鸿沟,解决因label不可靠、deviceId失效、权限时机错误导致的黑屏或默认前置等典型问题。典型应用场景包括H5扫码、在线证件拍摄、AR

weixin_30954265的博客 325

Cadence Virtuoso IC617:从零构建传输门与反相器的Schematic设计实战

本文详细介绍了使用Cadence Virtuoso IC617进行传输门与反相器Schematic设计的完整流程,包括环境准备、原理图绘制、Symbol创建、仿真验证及实用技巧。通过分步指导和实战经验分享,帮助初学者快速掌握集成电路设计基础,提升EDA工具应用能力。

weixin_29194693的博客 597

Android摄像头log如何看,Android:使用MediaRecorder录制高清视频,TextureView预览-Fun言...

用户权限获取使用TextureView预览Camera的像在activity的onCreate方法中调用://调用摄像头myTexture = (TextureView) findViewById(R.id.texture);if (myTexture != null) {myTexture.setSurfaceTextureListener(this);}设置继承自本身的监听器TextureVi...

weixin_35231615的博客 615

大模型和任务型对话系统如何结合

三种方法都是基于prompt1.prompt中定义大量可分类的domain标签,每种标签含有的样例。走对话系统nlu常规步骤,domain分类,意图分类,slot提取等。缺点:需要很复杂的prompt,写的未必完善。需要多次调用llm2.prompt中定义每种query下可以调用的functioncall。3.也是基于prompt,可以管理对话主题,实现更丰富的话题流转。面向某个具体领域,没有细分的domain类别。

qq_29837229的博客 2450

大模型在心律失常预测及治疗方案制定中的应用研究报告

目录一、引言1.1 研究背景与意义1.2 研究目的与方法1.3 研究创新点二、大模型技术概述2.1 大模型基本原理2.2 常见大模型类型及特点2.3 大模型在医疗领域的应用现状三、心律失常的术前预测与准备3.1 术前心律失常预测的重要性3.2 大模型在术前预测中的应用案例3.3 基于预测结果的术前准备方案四、术中监测与实时调整4.1 术中监测心律失常的方法与技术4.2 大模型辅助术中决策的机制4.3 实时调整手术方案的策略与实践五、术后恢复与并发症风险预测5.1 术后心律失常的监测与评估5.2 大模型预测术

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1596

Android Camera startPreview 摄像头预览黑屏(推荐)

参考文献:①https://www.jianshu.com/p/586af3a2dc8d?utm_campaign=maleskine ②https://stackoverflow.com/questions/21735456/getsurfacetexture-returning-null 情况是这样的,手头有个项目B需要加入人脸识别的功能,于是新建了一个人脸识别demo项目A,调试好之后,...

pang9998的博客 5605

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

华为OD机试2025A卷 - 分苹果(Java & Python& JS & C++ & C )

算法大师! 720

安卓音视频开发(4)—— 视频录制、预览、解析与封装合成

这节学习视频开发的一些基础操作,具体包括使用MediaRecorder来录制视频,采集视频数据并保存为mp4文件。我学习的教程里使用的是Camera,通过回调来获取到NV21数据,这个获取的数据更加原始。使用SurfaceView来预览,也可以使用TextureView来预览,但是我发现TextureView在手机上使用时存在卡顿的情况,可能是不支持硬件加速。

m0_57372054的博客 1544

YOLO模型从10MB瘦到2MB!剪枝+INT8量化双方案(精度损失<1%,附部署代码)

摘要:本文介绍了一种针对边缘设备的YOLO模型轻量化方案,通过"结构化剪枝+INT8量化"组合技术,将YOLOv8n模型从6.4MB压缩至2MB,体积减少68.75%,推理速度提升80%,同时保持精度损失小于1%。文章详细讲解了剪枝工具选择、通道剪枝实现、量化校准等关键步骤,并提供了完整的代码示例。特别强调了剪枝保留率、校准集使用、微调必要性等实践要点,帮助开发者在树莓派等资源受限设备上实现高效目标检测。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 756

GD32H757的can通信配置,提供方案参考!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1834

android 7 相机预览

Camera.cpp status_t Camera::startPreview() { ALOGV("startPreview"); sp <ICamera> c = mCamera; //mCamera其实是c->mCamera 实际上应该就是最后的new BpCamera(obj) // c->mCamera 类型实际上是ICamera if (c == 0) return NO_INIT; return c->s...

转载和创作优秀的博客 868

【原理图PCB专题】案例:双排0.5mm间距座子转单排0.5mm间距座子Layout方案分析

本文提供一种分析思路,并通过实际案例来进行Layout方案分析的讲解。

一点硬件 455

Android 是时候使用Camera2的时候了(当Camera无界面不能预览)

Camera2的bug: error1: LegacyCameraDevice_nativeGetSurfaceId: Could not retrieve native Surface from surface. error2: getNativeWindow: Surface had no valid native window. LegacyCameraDevice_nativeDet

qluojieq的专栏 8876

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Vitess v11.0.2 补丁版本解析:Log4j 安全漏洞应对、VReplication 修复与升级决策指南

Vitess v11.0.2 是 11.0 系列中的一个关键补丁版本,其核心使命是应对 2021 年 12 月爆发的 Apache Log4j 高危安全漏洞(CVE-2021-44228,即 Log4Shell),同时附带少量重要 bug 修复。本文将基于仓库中的版本发布说明,系统梳理 v11.0.2 的修复内容、已知问题、相关 CVE 背景,以及为什么官方明确建议用户跳过该版本、直接升级到 v1

gitblog_00279的博客 943

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Camera2的简单使用

整个流程梳理 1 初始化CameraManager对象 CameraManager对象是相机调用的发起对象, CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE); 通过此对象可以拿到可用的设备id,和设备id对应的一系列属性等。 2 初始化CameraCharacteris...

simple_a的博客 2350

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android 视频录制工具类VideoRecordUtil

一 录制视频工具类 import android.content.Context; import android.graphics.Bitmap; import android.hardware.Camera; import android.media.CamcorderProfile; import android.media.MediaMetadataRetriever; import

风吹草低见牛羊 2288

Camera

从今天起,每天翻译一篇开发文档,不是死板翻译,按个人理解,现在翻译不到位以后也会逐渐完善,一切为了学习,哇哈哈。。。今天翻译Camera! Camera android框架包含了可用设备上的不同相机和摄像机特性,允许在应用程序中拍摄照片和视频。这篇文档核心,简单的描述图片和视频捕获方式和概述了高级特性的自定义相机用户体验。 注意事项: 在使你的应用程序在使用Androi

骑鹿赶熊 1998

Android Camera

预览。使用PreviewView,它是一种支持裁剪、缩放和旋转的view,相机处于活动状态时,图片预览会流式传输到它的surface。图片拍摄。提供自动白平衡、曝光、延迟、闪光灯和对焦等功能,支持把图片放到内存缓存区和写文件。图像分析。应用会对每个帧运行analyze()方法,可以进行图像处理、视觉或机器学习。可以通过设置阻塞和非阻塞的模式处理分析流水线无法满足CameraX帧率要求。视频拍摄。录制视频流和音频流,对其压缩合并后写入磁盘。CameraX不是本文重点此处不做详细介绍。

dfqin的专栏 1958

安卓虚拟摄像头完整上手:Xposed Hook与MediaCodec硬解码,3步让App摄像头播放你的视频

某天晚上,我打开一款视频通话软件做测试,镜头里本该是我的脸,结果出现的却是一段提前录好的猫咪视频——对面的朋友以为我掌握了什么新魔术。这当然不是魔法,而是开源项目 android_virtual_cam(安卓虚拟摄像头)的真实效果:它通过 Xposed Hook 机制拦截系统相机调用,再用 MediaCodec 硬解码把一段 mp4 变成源源不断的"摄像头画面"。 作为喜欢折腾的开发者,我第一次

gitblog_01007的博客 843

Android-Camera-大体拍照流程和 Camera的基础知识

Android-Camera-大体拍照流程

madong369的博客 3587

Android相机开发进阶:从Camera2 API到性能优化与计算摄影

在移动应用开发中,相机功能是实现图像采集与处理的核心模块,其底层架构涉及硬件抽象层(HAL)、图像信号处理器(ISP)与数据流管道的协同工作。理解相机体系结构的工作原理,有助于开发者优化性能并实现高级特性,例如低延迟预览、多摄像头协同与计算摄影。通过Camera2 API,开发者可以精细控制图像传感器、曝光参数与数据缓冲区,从而在视频通话、AR应用与专业摄影工具等场景中提升用户体验。本文聚焦Android相机开发中的关键组件,如ImageReader与CameraCharacteristics,并探讨如何通

weixin_34013044的博客 465

Android仿微信小视频录制功能

还没看完,应该还不错,先收藏,觉得可以开拓 https://blog.youkuaiyun.com/u012227600/article/details/50835633   -------------------------------------------------------------------------------------------------------------------...

T的专栏 3612

Android 怎么采集视频、音频(Android直播中怎么采集视频、音频)

1、采集视频的话5.0之前一般用Camera接口,之后用Camera2接口 2、使用也很简单,通过 HandlerThread类创建一个专门的Hander 类型的线程用于Camera的具体操作。 3、在CameraManager中找到一个合适的 Camera 设备,得到设备号。 4、通过 CameraID 得到该设备的各种参数 5、调用CameraManager的openCamera()方法打开指...

安卓游戏开发工程师的博客 968

Android多媒体之Camera2的相关操作

零、前言 Android 5.0+ (API 21) ----&gt;[源码里让我们用camera2] * @deprecated We recommend using the new {@link android.hardware.camera2} API for new applications. 复制代码 这里的camera2可不是一个类哦 一、打开相机并预览 1.早听闻c...

weixin_34278190的博客 482
上一篇: Android摄像头--通过Intent启动
下一篇: Android调用系统摄像头--使用MediaRecorder--2--使用MediaRecorder进行录制
Android_Robot
博客等级 码龄15年 62粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值