拍照

Android Camera2 拍照流程 摄像头管理器。这是一个全新的系统管理器,专门用于检测系统摄像头、打开系统摄像头。另外,调用CameraManager的getCameraCharacteristics(String cameraId)方法即可获取指定摄像头的相关特性。 阅读详情

 

 

在main.xml中:

 

<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:background="#000000">

  <Button

      android:id="@+id/but"

      android:layout_width="50dp"

      android:layout_height="fill_parent"

      android:background="#3399ff"

      android:textColor="#ffffff"

      android:text="照相"/>

  <SurfaceView

      android:id="@+id/surface"

      android:layout_width="fill_parent"

      android:layout_height="fill_parent"/>

</LinearLayout>

 

 

 

 

 

在MyCameraDemo.java中:

 

package com.li.camera;

 

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

 

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.PixelFormat;

import android.hardware.Camera;

import android.hardware.Camera.AutoFocusCallback;

import android.hardware.Camera.Parameters;

import android.hardware.Camera.PictureCallback;

import android.hardware.Camera.ShutterCallback;

import android.os.Bundle;

import android.os.Environment;

import android.view.Display;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.WindowManager;

import android.widget.Button;

import android.widget.Toast;

 

public class MyCameraDemo extends Activity {

  private SurfaceView surface = null ;

  private Button but = null ;

  private SurfaceHolder holder = null ;

  private Camera cam = null ;

  private boolean previewRunning =  true ;

  @Override

  public void onCreate(Bundle savedInstanceState) {

     super.onCreate(savedInstanceState);

     super.setContentView(R.layout.main);

     this.but = (Button) super.findViewById(R.id.but) ;

     this.surface = (SurfaceView) super.findViewById(R.id.surface) ;

    

     this.holder = this.surface.getHolder() ;

     this.holder.addCallback(new MySurfaceViewCallback()) ;

    this.holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS) ;

     this.holder.setFixedSize(500, 350);

    

     this.but.setOnClickListener(new OnClickListenerImpl()) ;

  }

  private class OnClickListenerImpl implements OnClickListener {

 

     public void onClick(View v) {

       if(MyCameraDemo.this.cam != null) {

         MyCameraDemo.this.cam.autoFocus(new AutoFocusCallbackImpl()) ;

       }

     }

    

  }

 

  private class MySurfaceViewCallback implements SurfaceHolder.Callback {

 

     public void surfaceChanged(SurfaceHolder holder, int format, int width,

         int height) {

      

     }

 

     @SuppressLint("NewApi")

     public void surfaceCreated(SurfaceHolder holder) {

       MyCameraDemo.this.cam = Camera.open(0) ;  // 取得第一个摄像头

       WindowManager manager = (WindowManager) MyCameraDemo.this

            .getSystemService(Context.WINDOW_SERVICE);

       Display display = manager.getDefaultDisplay() ;

       Parameters param = MyCameraDemo.this.cam.getParameters() ;

       param.setPreviewSize(display.getWidth(), display.getHeight()) ;

       param.setPreviewFrameRate(5) ; // 一秒5帧

       param.setPictureFormat(PixelFormat.JPEG) ;  // 图片形式

       param.set("jpen-quality", 80) ;

       MyCameraDemo.this.cam.setParameters(param) ;

       try {

         MyCameraDemo.this.cam.setPreviewDisplay(MyCameraDemo.this.holder) ;

       } catch (IOException e) {

       }

       MyCameraDemo.this.cam.startPreview() ;  // 进行预览

       MyCameraDemo.this.previewRunning = true ; // 已经开始预览

     }

 

     public void surfaceDestroyed(SurfaceHolder holder) {

       if(MyCameraDemo.this.cam != null) {

         if(MyCameraDemo.this.previewRunning) {

            MyCameraDemo.this.cam.stopPreview() ; // 停止预览

            MyCameraDemo.this.previewRunning = false ;

         }

         MyCameraDemo.this.cam.release() ;

       }

     }

    

  }

 

  private class AutoFocusCallbackImpl implements AutoFocusCallback {

 

     public void onAutoFocus(boolean success, Camera camera) {

       if(success) { // 成功

         MyCameraDemo.this.cam.takePicture(sc, pc, jpgcall) ;

       }

     }

    

  }

 

  private PictureCallback jpgcall = new PictureCallback() {

 

     public void onPictureTaken(byte[] data, Camera camera) {  // 保存图片的操作

       Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);

       String fileName = Environment.getExternalStorageDirectory()

            .toString()

            + File.separator

            + "liyewenphoto"

            + File.separator

            + "LYW" + System.currentTimeMillis() + ".jpg";

       File file = new File(fileName) ;

       if (!file.getParentFile().exists()) {

         file.getParentFile().mkdirs() ;  // 创建文件夹

       }

       try {

         BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)) ;

         bmp.compress(Bitmap.CompressFormat.JPEG, 80, bos) ; // 向缓冲区之中压缩图片

         bos.flush() ;

         bos.close() ;

         Toast.makeText(MyCameraDemo.this,

              "拍照成功,照片已保存在" + fileName + "文件之中!", Toast.LENGTH_SHORT)

              .show();

       } catch (Exception e) {

         Toast.makeText(MyCameraDemo.this,

              "拍照失败!", Toast.LENGTH_SHORT)

              .show();

       }

       MyCameraDemo.this.cam.stopPreview() ;

       MyCameraDemo.this.cam.startPreview() ;

     }

    

  } ;

 

  private ShutterCallback sc = new ShutterCallback(){

     public void onShutter() {

       // 按下快门之后进行的操作

     }

  } ;

  private PictureCallback pc = new PictureCallback() {

 

     public void onPictureTaken(byte[] data, Camera camera) {

      

     }

    

  } ;

}

 

 

 

 

 

修改AndroidManifest.xml中:

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.li.camera"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="15" />

    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name=".MyCameraDemo"

            android:label="@string/title_activity_my_camera_demo"

            android:screenOrientation="landscape">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

  <uses-feature android:name="android.hardware.camera" />

  <uses-feature android:name="android.hardware.camera.autofocus" />

  <uses-permission android:name="android.permission.CAMERA" />

  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

</manifest>

 

三星手机拍照旋转问题 调用相机拍照出现横竖屏切换? 三星手机调用相机拍照出现横竖屏切换?拍照获取图片时,当应用是竖屏时,在部分手机上,如:三星note3上,图片不能正常显示,会旋转90°。1.调用拍照后,读取临时存储的图片,temp为自定义的路径 调用拍照Intent intent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); 阅读详情

相关推荐

Android实现拍照,调用相册

ActivityCompat.requestPermissions(拍照.this, new String[]{android.Manifest.permission.CAMERA, android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_CODE);// Toast.makeText(this, "读取存储权限已被授予", Toast.LENGTH_SHORT).show();//把⽂件插⼊到系统图库。

qq_39902576的博客 1044

基于Android的 拍照上传 程序开发

大家好,我是PETER(cfwdl)。写这篇文章是为了帮助以前没有没有接触过anroid或是刚刚入门并没有摸过手机的硬件设备监测、使用等功能的朋友,给大家一个我自己的写的心得和经验,我也是新手,所以大家互相交换一下经验吧。当然每个程序都会有问题,因为我不是最终用户,软件的测试工作没有好好测试过,大家凑合看看吧~!程序介绍:本程序主要完成一个煎蛋的android手机拍照程序(本程序的拍照功能比较简单,没有添加处理图像、手机自动对焦等功能,如果有需要的朋友可以自行参考一下相关linstener或action的资

PETER的专栏 3万+

Android14到Android16源码移植中的Bluetooth模块规范适配指南

本文详细解析了从Android14到Android16源码移植过程中Bluetooth模块的规范适配挑战,重点介绍了Android.bp配置差异及常见编译报错解决方案。针对代码规范检查、final字段声明、静态方法优化等核心问题提供实用修复方法,帮助开发者高效完成版本升级适配工作。

fire9的博客 254

拍照、相册及裁剪的终极实现(一)——拍照及裁剪功能实现

前言:这段时间也真是忙到死,本来一个月四篇的承诺,眼看就要打破了,咬着牙再出两篇,最近写工程时,遇到拍照和裁剪功能,也真是服了,各种问题有木有,最后终于找着了一个解决方案,就目前来讲,应用在工程中,还没有什么问题。如果大家有碰到问题,欢迎留言交流 相关博客: 《拍照、相册及裁剪的终极实现(一)——拍照及裁剪功能实现》《 拍照、相册及裁剪的终极实现(二)——相册选择及裁剪功能实现》 ...

启舰 1万+

HMC5883L磁力计驱动开发:I²C通信、校准与FreeRTOS集成

磁力计是惯性导航与电子罗盘系统的核心传感器,其输出原始磁场数据需经精确采集、单位换算与误差补偿才能用于姿态解算。基于各向异性磁阻(AMR)原理的三轴磁力计,如HMC5883L,依赖稳定I²C通信获取12位有符号磁场采样值,并通过增益配置、硬软铁校准及温度补偿提升物理量精度。在嵌入式实时系统中,驱动层须保障数据的时间一致性与抗干扰鲁棒性,避免总线挂死、字节错位或量程误配等典型问题。本文围绕HMC5883L这一广泛使用的停产但仍在产线服役的磁传感器,详解寄存器配置、定点单位转换、八方位校准算法及FreeRTOS

weixin_42594427的博客 145

如何修复Windows卡在“正在准备Windows”的问题?这里有详细步骤

如何修复Windows卡在“正在准备Windows”的问题?这里有详细步骤。

wyxtx的博客 5659

海思平台的拍照和拍照后期处理算法的介绍

参考:https://download.youkuaiyun.com/download/who_you_are/9806928 拍照方案 拍照的场景中,一般的视频预览和抓拍的分辨率是不一样的,而且拍照的ISP的效果处理需要对人脸的肤色等做优化处理,也会和视频的预览通路不一样。所以抓拍的数据通路分为单pipe和双pipe两种,并且VI的pipe工作模式分为离线模式和在线模式以及并行模式,拍照的数...

仗劍走天涯 7717

高分7(GF7)卫星数据制作平原地区DSM/DEM(三)——可信度分割

李国春(接上)

副组长的博客 1714

Android 拍照和获取照片

以下代码实现了一个简单的Android应用功能,允许用户从设备的相机拍摄照片,并将拍摄的照片显示在应用界面上。标签都指定了一个权限,这个权限是应用程序在运行时需要访问的特定功能或数据。开发中用于AndroidManifest.xml文件的一部分,它声明了应用对。以下代码是一个Android应用程序的一部分,具体是。)的一部分,用于声明应用程序所需的权限。以下代码是Android应用程序清单文件(

m0_74871324的博客 2153

汇川AM系列PLC玩转CNC:手把手教你用File模式读取G代码文件(附避坑指南)

本文详细介绍了如何使用汇川AM系列PLC的File模式读取G代码文件,涵盖从CAD设计到PLC配置的全流程。特别针对路径格式、文件类型等常见问题提供避坑指南,帮助工程师快速实现CNC加工的自动化控制。

weixin_33582311的博客 401

Open3D点云数据处理(五):点云、mesh可视化(draw_geometries方法)

本文介绍了Open3D中的draw_geometries可视化方法,可以用于可视化点云和mesh。详细讲述了该方法的各个参数的作用,给出了代码示例。

孙悟空 3137

Android-Camera-拍照流程

转载: hal流程 :https://www.jianshu.com/p/9a2e66916fcb 拍照流程:https://blog.youkuaiyun.com/zhangbijun1230/article/details/80555769 预览:https://www.jianshu.com/p/0ea5e201260f 一、简介 1、学习Camera之前我们先区分一下概念, camera open流程...

yaoming168的专栏 3822

生成模型实战 | ProGAN详解与实现

Progressive GAN (ProGAN) 是一种通过渐进式增长网络结构来生成高分辨率、高保真图像的技术。传统 GAN 难以直接生成超过 256x256 分辨率的图像,而 ProGAN 创新性地从低分辨率开始训练生成器和判别器,逐步添加网络层以提高分辨率,直至达到1024x1024。该方法结合了像素归一化、小批次统计信息和均衡化学习率等关键技术,并使用 WGAN-GP 损失函数确保训练稳定性。ProGAN 是首个能生成1024x1024高保真人脸图像的模型,但其训练耗时较长,且对计算资源要求较高。

盼小辉丶的博客 1432

iPhone语音拍照怎么用?

要如何实现iPhone声控拍照(iOS语音拍照)?在出去游玩时,想要一张美美的照片还要找人帮忙,其实iPhone语音拍照完全可以解决你的烦恼。iOS隐藏技巧,轻松实现iPhone声控拍照功能和Apple Watch无线控制iPhone相机。 iPhone声控拍照设定教学 1. 启用语音控制功能 1)打开iOS「设定」>「辅助使用」>「语音控制」。2)iOS语音控制功能预设是不会启动,需要先点击「设定语音控制」才能够开启。3)会看见「语音控制」功能提示页面,点击「继续」>「完成」跳过功能说

htt325523的博客 6369

使用 Simulink 和 Simscape Electrical 工具箱设计一个 Buck 转换器系统

Buck 转换器(降压转换器)是一种常用的 DC-DC 转换器,用于将较高的输入电压转换为较低的输出电压。为了评估其抗干扰能力,我们可以在模型中引入不同的干扰源,并观察系统的响应情况。电网电压波动:输入电压的变化。负载突变:负载电阻或电感的变化。电磁干扰:高频噪声或脉冲干扰。通过模拟这些干扰,我们可以分析系统的动态响应特性,并采取相应的措施来提高系统的抗干扰能力。

xiaoheshang_123的博客 377

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android 手机拍照预览图像与拍照图像

参考:http://www.tuicool.com/articles/AnUBBnR             http://www.eoeandroid.com/thread-80028-1-1.html?_dsign=a679b0b6             http://asysbang.com/forum.php?mod=viewthread&tid=58&extra=page%3D

3147

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

鸿蒙开发-分段式拍照和普通的拍照开发流程,分段式拍照

本文章主要介绍分段式拍照和普通的拍照开发流程 拍照是相机的最重要功能之一,拍照模块基于相机复杂的逻辑,为了保证用户拍出的照片质量,在中间步骤可以设置分辨率、闪光灯、焦距、照片质量及旋转角度等信息。

weixin_42301175的博客 884

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HoloLens2实现拍照

需求 要能在HoloLens2中,在使用unity发布的应用中,通过点击按钮来触发类似HoloLens系统的拍照效果。 环境 Visual Studio 2019 Unity2020.3.20f1c1 HoloLens2 方法列表 UWP应用中的MediaCapture类 unity中的PhotoCapture类 使用HoloLens2系统的原生拍照命令 调用HoloLens设备门户的Rest API 使用WindowsDevicePortalWrapper,即包装好的rest api 方法的用处与弊端

xiaoLongww的博客 5221

WPF实现签名拍照功能

在InitializeCamera方法中,我们使用MediaCapture类来初始化相机,并将相机预览显示在MediaElement中。接下来,它使用RenderTargetBitmap将签名画布渲染为位图,然后使用PngBitmapEncoder保存签名。请注意,这段代码使用了异步方法,因此需要在方法前面加上async关键字,并使用await关键字来等待异步操作完成。在MainWindow.xaml中,创建界面布局,包括一个显示相机预览的区域、一个签名区域、一个按钮来拍照并保存签名。

不迁怒,不贰过。小知识,大智慧。 1871

静默拍照,不需要预览

静默拍照,不需要相机预览,可以在后台完成拍照并保存。 可用于人脸验证解锁。 一、首先需要了解一下相机开发相关知识。相机开发有两个重要的系统类: 1、Camera.java (android.hardware.Camera) 2、SurafaceView.java (android.view.SurafaceView) 1.2 Surface、SurfaceView、SurfaceHold...

Frakie_Kwok的专栏 2103

android 后台自动拍照,怎么实现后台拍照功能,求解

如何实现后台拍照功能,求解。自己去网上找了一段后台拍照代码,如:MainActivity.java就实现一个按钮启动一个服务publicvoidclick(Viewv){bindService(newIntent(this,LocalService.class),serviceConnection,Context.BIND_AUTO_CREATE);}LocalService.ja...

weixin_36073959的博客 2262

android实现华为手机拍照上传_华为手机拍照功能介绍-设置拍照功能(上篇)

华为手机的设置拍照功能,根据不同拍摄需求,显示出来的功能是不一样的,如图所示:后置摄像头的参考线、静音拍照、定时拍照、声控拍照、笑脸拍照、音量键功能、熄屏快拍、图像调整这八个功能是三个模式中共同拥有的。后置摄像头人像拍摄增加了触摸拍照、魅我两个功能。前置摄像头人像自拍增加了触摸拍照、魅我、白平衡、ISO四个功能。今天我们主要介绍后置摄像头的八个通用拍照设置功能。后置摄像头拍照设置功能一、参考线参考...

weixin_28949779的博客 1669

Android 拍照功能详解

Android拍照功能相信都不陌生。这篇文章总结下Android拍照功能的具体知识。 分两种场景: 场景一,拍照然后显示照片在页面; 场景二,拍照然后将照片以文件方式存储。 简单的拍照功能原理:调用系统的Camera应用生成一张照片1.要求系统支持拍照功能<manifest ... > <uses-feature android:name="android.hardware.camera"

mo_android的博客 2041

android拍照自动裁剪_手机中最好用的拍照功能,都在这里了!

​说到如何拍照,当我还是摄影小白的时候,有大师告诉我,拍照就是「三分前期,七分靠后期」。可能这句话对于单反相机是适用的,但是手机的色彩宽容度、画面解析力等等都不及单反。另外,手机摄影也是算法摄影,照片主要是通过硬件+软件算法得出的成片,所以学习手机摄影对于手机拍照功能的认识与使用很重要!无论你处于学手机摄影的那个阶段,对于手机拍照功能使用的「熟练度」,很大程度决定你的出片率!之前有小伙伴在问能不能...

weixin_39526459的博客 2296

Unity的拍照功能

   工作的第一个功能就是使用Unity进行拍照,并对拍照之后的照片进行上传服务器。上网查了很多相关的资料,当然了博客也有很多人提供了相关的代码。一开始我自己先做了个小项目,在window10下拍到照片。并能完整的保存在电脑当中。但是公司的项目是要导入到Ipad中的,这就涉及到了前置镜头和后者镜头的问题。电脑使用的是前置镜头,而Ipad则使用的后者镜头,这里就要进行计算转换。并且我发现导入到Ipa...

破茧 6305

ZSL拍照和普通拍照

ZSL(zero shutter lag):零延时拍照。 普通模式 1.开始预览,出预览帧,这个时候已经正常预览了 2.这个时候按下shutter,开始拍照,开始拍照的时候,预览流停止, 3.拍照的时候要做一系列的动作,af对焦,准备拍照,曝光, 4.拍照流数据回调,这个时候是raw数据,然后开始对raw数据进行编码 5.编码成为JPEG,然后保存,此时拍照完成,从新开始预览。 传统的快照,也...

gbmaotai的博客 5053
上一篇: 使用摄像头捕获图片
下一篇: 音频录制
Android人生
博客等级 码龄14年 14粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值