> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main " android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android :layout_width="match_parent" android:layout_height="100dip" android:id="@+id/image" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height ="wrap_content" android:text="testPopupWindow" android:layout_below="@id/image"
getMemoryManager(); /** * Returns the motion manager which senses when significant motion of the * camera
精美礼品等你拿!
一、Camera API Camera1上,我们可以通过setDisplayOrientation(int degress)来设置camera预览的方向。 * public static void setCameraDisplayOrientation(Activity activity, * int cameraId, android.hardware.Camera camera) { * android.hardware.Camera.CameraInfo info = * new android.hardware.Camera.CameraInfo (); * android.hardware.Camera.getCameraInfo(cameraId, info); * int rotation = activity.getWindowManager API 在Camera2的API上,找了一通,发现并没有像Camera1上,可以通过类似的接口来设置预览方向,只是发现可以通过CaptureRequest.JPEG_ORIENTATION 来设置拍照的图像方向
一、Camera API Camera1上,我们可以通过**setDisplayOrientation(int degress);**来设置camera预览的方向。 * public static void setCameraDisplayOrientation(Activity activity, * int cameraId, android.hardware.Camera camera) { * android.hardware.Camera.CameraInfo info = * new android.hardware.Camera.CameraInfo (); * android.hardware.Camera.getCameraInfo(cameraId, info); * int rotation = activity.getWindowManager matrix.postRotate(180, centerX, centerY); } mTextureView.setTransform(matrix); } 复制代码 ---- 本人从事Android
image.png 从 Android 5.0 开始,Google 引入了一套全新的相机框架 Camera2(android.hardware.camera2)并且废弃了旧的相机框架 Camera1 (android.hardware.Camera)。 本文是 Camera2 教程的开篇作,本章将介绍以下几个内容: 一些 Camera2 的重要概念 一些只有 Camera2 才支持的高级特性 一些从 Camera1 迁移到 Camera2 的建议 本章涉及的代码很少 截止到 Android P 为止,从低到高一共有 LEGACY、LIMITED、FULL 和 LEVEL_3 四个级别: LEGACY:向后兼容的级别,处于该级别的设备意味着它只支持 Camera1 12 一些从 Camera1 迁移到 Camera2 的建议 如果你熟悉 Camera1,并且打算从 Camera1 迁移到 Camera2 的话,希望以下几个建议可以对你起到帮助: Camera1 严格区分了预览和拍照两个流程
首先,Android系统目前已经提供了两套Camera API,其中Camera 2 API是从Android 5.0(API Level 21)开始提供的。 然而并不是,原因就是下面要说的第二点,很多Android手机对Camera 2 API的支持都不到位,即使是很多现在刚发的新机,它们有些依然只支持老的Camera API! 是为Android 5.0(API level 21)及以上系统提供的,Camera2Api23继承自Camera2,是为Android 6.0(API level 23)及以上系统提供的。 补充资料 1.关于TextureView和SurfaceView的区别:Android TextureView简易教程 2.关于Android端相机开发的坑:Android相机开发那些坑 3.关于Camera API的使用的官方文档:Camera API 4.关于Camera API的使用:Android Camera 相机开发详解 5.关于运行时权限:Android M 新的运行时权限开发者需要知道的一切
使用Camera实现3D变换效果 最后来简单介绍下android提供的android.graphics.Camera类,通过该类可以在2D条件下实现3D动画效果,该类可以看做一个视图显示的3D空间,然后可以在里面做各种操作 把上面的ViewAnimation修改为如下实现可以具体看看Camera的功能: class ViewAnimation extends Animation { int mCenterX;// 记录View的中间坐标 int mCenterY; Camera camera = new Camera(); public ViewAnimation() { (); camera.translate(0.0f, 0.0f, (1300 - 1300.0f * interpolatedTime)); camera.rotateY ImageView沿Y轴翻转360度,最终效果如下: 下图是中移动的Ophone的截图,当然,同样兼容android, ?
默认.jpg 接下来,我们使用camera来对该图进行矩阵变换 private Camera camera = new Camera(); private Matrix matrix = camera.getMatrix(matrix); camera.restore(); canvas.drawBitmap(bitmap, matrix, mPaint camera.rotateX(45); //每次我们都要获取下矩阵 camera.getMatrix(matrix); camera.restore() camera.rotateX(45); //每次我们都要获取下矩阵 camera.getMatrix(matrix); camera.restore() 图片中心旋转45度.jpg camera的基础使用就到此结束了
Camera API2是Google从Android5.0开始推出的配合HAL3使用的一套新架构,相比于API1,对应用层开发者而言开放了更多的自主控制权,主要特性包括: 可以获取更多的帧(预览/拍照) Android设备和Camera是通过管道pipeline的概念将两者进行串联的,在一个会话Session过程中系统发送Request,摄像头返回MetaData进行来回交互;预览和拍照等数据的传递是通过 Camera2主要类 ? 获取预览数据 在Camera API1中,预览数据是直接通过byte[]的形式返回给开发者的。Camera2中要获取预览数据则需要额外配置一下。 总结 Camera2的基本使用总结到这里,使用起来肯定是不如Camera1方便,不过能让应用层有更多的操作空间总是值得的,而且从Android9.0开始也不得不使用这套架构了 ?
本文已获得作者授权,本文作者:cain_huang 原文链接:https://www.jianshu.com/p/9e0f3fc5a3b4 Android使用 Camera API + SurfaceView ); // Android 6.0相机动态权限检查 if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA -- 相机权限 --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android :name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.FLASHLIGHT > <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com
最近因为工作需求,又要重新接触Android Camera1的API,详细整理了下相关知识点,这次没有记录到的知识点,后面会陆续补充,欢迎在公众号留言交流或者加我微信好友交流 Camera API简介 Camera API1: Android 4.4 以及更低版本设备上的应用级相机框架,通过 android.hardware.Camera 类提供功能接口; Camera API2: Android 5.0 以及更高版本设备上的应用级相机框架,通过 android.hardware.camera2 包提供; 虽然Android5.0开始弃用Camera API1,但是各个手机厂商对Camera API2 Android6.0以后除了在Manifest清单中注册,还需要动态申请它 <uses-permission android:name="android.permission.CAMERA"/> 如果不希望设备没有相机相关硬件的用户在 Google play等应用商店看到你的APP,可以添加 <uses-feature android:name="android.hardware.camera" android
Camera应用调用Framework Camera类API 在Android Kitkat原生Camera2应用(packages/apps/Camera2/)的PhotoModule, VideoModule 】,直到调用Framework Camera类(frameworks/base/core/java/android/hardware/Camera.java)的open()方 法。 native_setup()被注册到JNI,通过JNI调用 android_hardware_Camera_native_setup()方法。 再通过 android_hardware_Camera_native_setup()调用Camera::connect()函数 (frameworks/av/camera/Camera.cpp)请求连接 } …… }; // connect to camera servicestatic void android_hardware_Camera_native_setup(JNIEnv *env
背景 在Android Camera2详解一文中,我们了解到使用Camera2 API启动相机预览将经历如下三个步骤,其中创建会话需要准备的预览surface一般来自SurfaceView,TextureView 等UI控件,此时UI layout准备surface和相机创建会话只能串行执行 open camera -> create session -> repeating request 官方文档中也提到了这种 【Android Camera2 API Deferred Surface实战】 https://deepinout.com/android-camera-official-documentation/ android-camera2-api/android-camera2-api-deferred-surface-practice.html ~~END~~
提问2 我想使用android camera2 API获取从对象到android设备的距离。 我已经在谷歌样本Camera2应用程序中添加了一个SeekBar,但我找不到实现手动对焦的方法。 我在camera2,android中找到了手动对焦,但它在我的LG G4上无效。 来源:https://stackoverflow.com/questions/32136697/android-camera2-manual-focus 回复: Well, to use manual focus distance area android-camera2 回复: 您不会在调用CameraCaptureSession.capture或setRepeatingRequest的地方包含代码 -%E6%89%8B%E5%8A%A8%E5%AF%B9%E7%84%A6 深圳上班, 从事Android Camera相关软件开发工作, 公众号记录生活和工作的点滴,
Camera预览时需要对yuv帧做水平翻转处理,直接在onPreviewFrame(byte[] data, Camera camera)里调用Mirror函数,处理完后的图片和预览效果成水平翻转关系。 YV12: YYYYYYYY VVUU = YUV420P NV12: YYYYYYYY UVUV = YUV420SP NV21: YYYYYYYY VUVU = YUV420SP 以上这篇android camera yuv帧水平翻转实例就是小编分享给大家的全部内容了,希望能给大家一个参考。
Android Camera 1.0 的相机模型 Android 5.0 之前的 Camera 版本,功能比较单一,不像 5.0 之后那样支持很多特性,这也是由于它的 HAL 所决定的。 用的是 android.hardware.Camera 包下的内容,回顾一下 Camera 1.0 的调用流程: 创建预览类 ( SurfaceView ) 打开相机( Camera.open ) 设置预览 Android Camera 2.0 的相机模型 在 Android 5.0 之后,相机 API 就有了较大的变化,用的是 android.hardware.camera2 包下的内容了。 关于 Android Camera 的相关代码,可以参考我的 Github 工程:https://github.com/glumes/Camera2Sample。 参考 1、https://source.android.com/devices/camera/
项目中经常用到Android自带的camera拍照功能。于是做了个封装,CameraUtil.java类。 再次用到就简单啦,可以最大限度的复用提高效率。 ; import android.graphics.Bitmap; import android.graphics.ImageFormat; import android.graphics.drawable.BitmapDrawable ; import android.graphics.drawable.Drawable; import android.hardware.Camera; import android.media.AudioManager ; import android.media.MediaPlayer; import android.net.Uri; import android.os.Build; import android.os.Environment ; import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView
必须检查一下该摄像头是否支持人脸检测,通过接口: // 如果返回0,则表示不支持 Parameters#getMaxNumDetectedFaces() 开启/停止人脸检测 开启和停止人脸检测都是直接调用Camera It does not use much CPU. */ private static final int CAMERA_FACE_DETECTION_HW = 0; 开启人脸检测功能后,会导致手动白平衡 ,手动对焦区域和测光区域的设置无效,因为此时Camera会基于识别到的人脸做自动白平衡,自动曝光和自动对焦处理。 因为在调用autoFocus方法的时候,Camera会停止发送人脸检测的回调,当对焦完成或者调用cancelAutoFocus之后,人脸识别的回调才会继续。 https://github.com/sifutang/Camera1Demo.git
网上查阅相关资料后,发现 Android 5.0 及以后的版本中,原有的 Camera API 已经被 Camera2 API 所取代。 全新的 Camera2 在 Camera 的基础上进行了改造,大幅提升了 Android 系统的拍照功能。 2.1 相机权限设置 <uses-permission android:name="android.permission.CAMERA" / 2.2 App 布局 •activity_main.xml " <com.lightweh.camera2preview.AutoFitTextureView android:id="@+id/textureView" android:layout_width 参考 • https://github.com/googlesamples/android-Camera2Basic 总结 以上所述是小编给大家介绍的Android Camera2 实现预览功能,希望对大家有所帮助
你对android camera的对焦模式熟悉吗? 知道什么场景下该设置哪种对焦模式吗? 本文针对下面2点展开介绍,和大家一起学习~ 一、有哪几种对焦模式? 二、如何使用各种对焦模式? 1)获取设备支持的对焦模式 Google为我们提供了查询当前设备支持的对焦模式的接口~ Camera1获取对焦模式接口: ----- Camera.java public String PublicKey public static final Key<int[]> CONTROL_AF_AVAILABLE_MODES = new Key<int[]>("android.control.afAvailableModes (贴的Android源码里面的介绍,写的够详细) /** * Auto-focus mode. / public static final String FOCUS_MODE_CONTINUOUS_PICTURE = "continuous-picture"; ---- 本人从事Android
扫码关注腾讯云开发者
领取腾讯云代金券