自定义相机,用于默认打开前置相机

Android surfaceview 自定义相机 拍照(闪光灯、前后摄像头) android 自定义surfaceview 拍照 阅读详情

简介:前面文章介绍了一下调用系统相机的方法,有时候需要默认打开前置相机的时候,或者想自己写一个相机,可控性会更高一点。


1.我用的相机获取方法是: Camera.open();会得到默认的相机,如果想获得前置的可以使用Camera.open(cameraId),具体代码为:

private Camera getCamera() {
Camera camera = null;
//调用前置摄像头的代码;
//如果想后置摄像头,可直接Camera.open();默认就是后置的
Camera.CameraInfo info= new Camera.CameraInfo();
int count= Camera.getNumberOfCameras();
for (int i = 0; i < count; i++) {
Camera.getCameraInfo(i, info);
if (info.facing==Camera.CameraInfo.CAMERA_FACING_FRONT) {
try {

//打开前置相机
camera = Camera.open(i);

} catch (RuntimeException e) {
// TODO: handle exception
}
}

}

return camera;
}


2.获得相机后可以用SurfaceView做为载体直接对摄像头图像的展示,关键代码就是:

Camera中的setPreviewDisplay(holder);而这个holder正是surfaceview.getHolder();这样就讲camera和holder关联起来了;


3,对于相机的拍摄,可以在自动对焦后进行,camera.autoFoucs(autofocusCallback);

在callback回调中调用camera.takePicture(ShutterCallback shutter, PictureCallback raw,
            PictureCallback jpeg);

其中第一个参数为快门,第二个参数为raw数据,第三个参数为jpeg格式的数据,这个地方我们一般的做法是前两个参数传null,我现在也没太搞明白为什么传null,

对于数据的处理就自己随意了,数据存在于byte[ ] data中。

4, 对于用完相机来说,最后还是对资源进行释放,代码如下:

             mCamera.setPreviewCallback(null);
mCamera.stopPreview();


mCamera.release();


点击:相关代码下载地址:

http://download.youkuaiyun.com/detail/android_luosu/9650541

Android自定义视频录制 自定义相机的一般步骤 是否有摄像头、是否有访问摄像头的权限 创建相机预览类,继承SurfaceView并实现SurfaceHolder接口,用来预览相机的即时图片 有了相机预览类之后,搭建预览布局将预览视图和界面控件结合起来 连接控件的监听器以响应用户的动作,拍摄照片或视频,比如一个按钮点击事件 拍摄照片和视频并保存输出 摄像头使用完毕后,要正确地释放相机以便于其他应用使用 注意: 相机是共... 阅读详情

相关推荐

全面掌握Android自定义相机与布局开发

在Android中,XML布局文件是定义用户界面的基本方式。对于自定义相机布局来说,我们首先需要创建一个XML文件,这个文件将定义相机预览的UI元素,包括相机预览视图、快门按钮、闪光灯开关以及其它任何用户交互控件。-- 相机预览视图 -->-- 快门按钮 --><Button-- 闪光灯开关 --><Switch-- 更多自定义控件 -->在上述代码中,我们使用了来作为根布局,这是因为适合于展示层级结构,并且可以很容易地通过添加或删除层来实现动态布局变化。

weixin_28922227的博客 1263

开发Android Camera—使用Kotlin语言,完成第一个自定义相机

对于首次使用Kotlin语言开发,在网上苦于寻找不到Kotlin语言编写的相机代码,故写下这篇博客。 好了,咱们进入主题

weixin_37618354的博客 5496

分别设置前置摄像头与后置摄像头的默认video quality

修改默认的video quality,需改两处:(a)第一次进camera时的默认值,(b)“还原默认设置”时的默认值。 此处以后置摄像头默认fine,前置摄像头默认low为例。

前端代码调用摄像头

前端代码调用摄像头

qq_19891197的博客 1129

Android 自定义相机开发(支持前置,后置摄像头,可以自动聚焦,保存和显示图片)

实现功能: 自定义相机开发:支持前置,后置摄像头切换,可以自动聚焦,保存图片和显示图片

腾讯云运维工程师认证TCA--真题(最新2022.11)

解析:云原生应用的12要素,1.基准代码:一份基准代码,多份部署;解析:腾讯云主账号具备对其名下资源(包括存储桶)的最大权限,您虽然可以在存储桶策略中限制几乎所有操作,但主账号始终具备 PUT Bucket Policy 操作的权限,主账号调用该操作不检查存储桶策略。解析:瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。解答:云原生五大关键技术:微服务、容器化、DevOps、持续交付。

e1210101的博客 9915

uniapp和vue实现打开手机前置摄像头和相机的方法

最近在项目遇到了一个问题,用uniapp的框架做一个功能,就是打开平板自带的前置摄像头拍照,uniapp上的功能只有打开默认相机的功能,但是前置摄像头需要你自己去手动转换一下,客户体验感很不好,产品经理要求必须要打开就是前置摄像头~~~~~~~~~~~~~ 这可愁坏了我,于是各种百度,小伙伴球高人指点,uniapp的官方群也问了,都么有用,其中群里有个人给了一个方法,但是调用腾讯云的接口,但是小编开发的是本地开发~ 网上有个input方法,但是要在https环境下才能用。小编没用过,不知道有么有用~

u010208165的博客 1万+

交换芯片数据通路四大核心微架构深度解析

数据通路是交换芯片性能的物理根基,决定着低延迟、高吞吐与突发承载能力。其本质是在硅片约束下对带宽、时序、功耗与统计复用的系统性权衡。Crossbar提供确定性低延迟但受RC延迟与功耗制约;VOQ通过虚拟队列隔离输出争抢,却引入仲裁复杂度与内存开销;Shared Buffer依托统计复用提升缓存利用率,但面临碎片化与管理策略挑战;Cell Fabric以固定长度cell重构交换粒度,在AI与金融等小包敏感场景实现尾延迟稳定。这些架构并非替代关系,而是面向不同网络不确定性(如流量不对称性、突发强度、包长分布)的

weixin_32667955的博客 189

uni app 调用前置摄像头

index指定要获取摄像头的索引值,1表示主摄像头,2表示辅摄像头。如果没有设置则使用系统默认主摄像头。uniapp开发app并没有相关Api调用前置摄像头。只能使用5+app的api。获取需要操作的摄像头对象,如果要进行拍照或摄像操作,需先通过此方法获取摄像头对象。

明明的博客 2329

反激开关电源变压器设计实例讲解(定明芳)

内容来自《反激变压器的设计》(定明芳主讲)。 定名芳老师主要讲了10步,最后应该还有一步,线径的选择已经绕制方式。这里进行了记录整理,把一些公式来源进行了推导。所有的设计都是基于理论计算。 1.确定电源规格 2.确定工作频率和最大占空比 3.计算匝比(利用伏秒平衡原则) 此处插入解释一下伏秒平衡,根源是磁通量平衡。该原则可以用来检查MOS管耐压是否够。 4.计算初级线圈峰值电流 基于CCM模式计算的。ip1是开关管要关闭时的峰值电流,ip2是开关管开始导通时的起始电流。因为时CCM模式,所以,ip

ydgd118的博客 5万+

基于PLC的茶叶揉捻机自动控制系统设计【附代码】

茶叶揉捻是初茶加工过程中的一道关键工序,通过揉捻可以使鲜茶叶成条、碎茶及叶组织细胞破损等。影响茶叶成条率、碎茶率和叶组织细胞破损的主要因素包括揉捻时间、压力和揉捻桶转速。为了提高茶叶品质的稳定性和减轻工人的劳动强度,本文提出了一种基于PLC自动控制技术的茶叶揉捻机控制系统设计。📊 PLC自动化设计 | 毕业设计指导 | 工业自动化解决方案。✅ 具体问题可以私信或查看文章底部二维码。✅ 感恩科研路上每一位志同道合的伙伴!

lagougongzuoshi的博客 1344

android自定义相机打开闪光灯,Android surfaceview 自定义相机 拍照(闪光灯、先后摄像头)...

在咱们app中常常会调用相机进行拍照,而后把拍下来的图片保存在本地,再上传到服务端,网上有很多自定义的相机,也下载了很多,可是效果仍是不满意,因此决定自定义下,很少说了,直接上代码:public class CameraViews extends SurfaceView implements SurfaceHolder.Callback{private String TAG=Camera.clas...

weixin_31983133的博客 491

从零开始学 PyTorch 7天路线图(完整可运行代码版)

本文提供了5天PyTorch入门教程的完整代码,涵盖从基础到实战的核心内容。Day1测试环境并介绍张量基础;Day2讲解常用张量操作;Day3演示自动求导机制;Day4实现完整线性回归模型;Day5构建MNIST手写数字识别全连接网络。所有代码可直接运行,包含GPU检测、梯度计算、模型训练和可视化等关键环节,帮助新手快速掌握PyTorch核心概念和典型应用场景。

IT老农民的博客 314

Android自定义Camera相机(打开闪光灯、前后摄像头切换)

想搞自定义相机很久了一直觉得很难所以一直拖着前两天有点闲就参考Android自定义相机超详细讲解搞了一下发现并不是那么难,嘿嘿~ 一、参考布局 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res

一枚四肢蜕化的Android攻城狮 5122

【实战】基于 Inner-IoU 的 YOLOv8 优化指南:显著提升检测精度

Inner-IoU 凭借辅助边框的创新设计,成功解决了传统 IoU 损失在小目标、遮挡场景下的收敛难题,为 YOLOv8 注入了更强的定位能力。从原理剖析到代码集成,本教程已为你铺就了一条“精度提升”的实战路径。现在,不妨亲自上手尝试,让你的目标检测模型在各类数据集上都能交出一份“精度优异”的答卷——相信我,当你看到检测框精准贴合目标的那一刻,你会明白这份尝试的价值。

m0_64661770的博客 108

上位机介绍:C# 开发者的必知基础

上位机是指在工业控制系统中,位于上层、负责人机交互和数据管理的计算机/软件,与“下位机”(PLC、传感器、变频器、单片机等硬件设备)相对应,核心是“向下通信控制设备,向上展示交互数据”。下位机:一线干活的“工人”(执行采集、控制指令);上位机:指挥管理的“办公室人员”(发指令、看数据、做报表)。C#开发者掌握上位机开发的核心是“通信+UI+稳定性基础层:搞懂WinForms/WPF基础、串口/Modbus通信,能实现核心功能;进阶层:掌握分层设计、异步编程、工业级容错(断线重连、数据校验);

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1559

直播商城源码自定义相机,使用前置摄像头实现自拍

通过Camera.open()获取相机,实现自定义自拍功能。 demo比较简单,直接上代码: Activity public class MainActivity extends AppCompatActivity { SurfaceView sView; SurfaceHolder surfaceHodler; int screenWidth, screenHeight; // 定义系统所用的照相机 Camera camera; // 是否存在预览中

云豹网络科技 850

STM32入门教程:智能马桶盖控制

通过编写相应的代码,您可以根据需要实现其他功能,例如座圈温度调节和液晶显示屏显示等。初始化配置 首先,使用STM32CubeMX创建一个新的工程,并选择您所使用的STM32单片机型号。智能马桶盖是一种集成了多种功能的智能家居设备,通过控制芯片来实现自动冲水、座圈加热、座圈温度调节等功能。在本教程中,我们将使用STM32系列单片机来控制智能马桶盖的各个功能。以上代码演示了如何通过STM32的GPIO控制引脚来控制智能马桶盖的冲水和座圈加热功能。写代码 接下来,我们将通过编写代码来控制智能马桶盖的各个功能。

2401_85258012的博客 657

Android中自定义相机Camera2的使用

在之前的博客中我介绍了Camera在单拍和连拍上的使用。大家应该有所了解了。但如果你运行了博客中的例子,或者自己根据讲解写了一个Demo,你会发现拍出的照片并不是很清晰,很大的一个原因是我们的照片支持的最大分辨率是1920*1080,所以对于现在动辄2000往上的分辨率来说却是不是很清晰。所以Android 5.0之后Camera2也应用而生。而和Camera2配合的显示控件也变成了TextureView。下面我们分别对这两个内容一一进行讲解。并在最后给出一个利用Camera2制作的自定义相机示例。 1.

水月洞天 4078

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

自定义相机,使用前置摄像头实现自拍

通过Camera.open()获取相机,实现自定义自拍功能。demo比较简单,直接上代码:Activity public class MainActivity extends AppCompatActivity { SurfaceView sView; SurfaceHolder surfaceHodler; int screenWidth, screenHeight;

sziitjin的博客 2477

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

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

iOS 自定义相机功能

导入相机的API在AVFoundation里所以得包含头文件#import <AVFoundation/AVFoundation.h> 1.自定义相机需要的属性 @interface CustomCameraVC ()<UIAlertViewDelegate> //捕获设备,通常是前置摄像头,后置摄像头,麦克风(音频输入) @property(nonatomic)A...

huanglinxiao的博客 2265

Android中自定义相机Camera使用

应用中我们时常会遇到要制作拍照上传功能,但我们一般的做法都是直接调起系统的拍照界面或者使用第三方提供的界面。如果用户有定制要求或者我们有自己的一些需求我们该怎么办呢?今天我们按步骤完成一个自定义相机的制作。 1.Camera相关的API 拍照我们主要用到的两个类,一个是SurfaceView,这个我们在上一次就介绍过了;还有一个就是Camera了。所以我们需要了解一下Camera相关API。 getNumberOfCameras:获取本设备的摄像头数目。 open:打开摄像头,默认打开后置摄像头。如

水月洞天 3017

android自定义相机取景框模仿微信抓取录像实现活体认证

android自定义相机取景框模仿微信抓取录像实现活体认证 出于费用成本的考虑,以及百度的图片识别度相对于华为准确度不那么高(驾驶证行驶证识别不太给力,反光时候,识别出差率比较高)。最近公司决定将身份认证模块由原来的调用第三方百度AI改为华为AI,由于百度android sdk的全部封装好了,只需要调用接口即可完成所有功能,而华为没有活体认证android相关sdk,需要开发者自己上传检测活体视频,为了便捷抓取头部部位,那么就需要开发者自定义相机取景框,上传录像小视频,调用华为认证接口去实现身份认证。 1、

qq_28526167的博客 2092

ios 自定义拍照页面_iOS开发笔记:自定义相机拍照

目录之前用AVFoundation自定义相机做了拍照与视频相关的东西,为什么要自定义呢?主要是提供更个性化的交互设计,符合app主题,对于视频来说,也便于提供更多丰富有趣的功能。前段时间整理了下拍照部分的功能,主要分为以下五个部分PS:吐槽一下博客园,图床也太那啥了,回头来看图片丢了好几张,还要重新补上。。。1.初始化,建立会话,获取摄像头使用AVCaptureSessionPresetPhoto...

weixin_39541693的博客 578

ios 自定义拍照页面_iOS开发笔记17:自定义相机拍照

之前用AVFoundation自定义相机做了拍照与视频相关的东西,为什么要自定义呢?主要是提供更个性化的交互设计,符合app主题,对于视频来说,也便于提供更多丰富有趣的功能。前段时间整理了下拍照部分的功能,主要分为以下五个部分PS:吐槽一下博客园,图床也太那啥了,回头来看图片丢了好几张,还要重新补上。。。1.初始化,建立会话,获取摄像头使用AVCaptureSessionPresetPhoto模式...

weixin_39948210的博客 426
上一篇: Android两种相机的调用方式
下一篇: NDK的简单使用
阿里不哥_
博客等级 码龄11年 2粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值