展开

关键词

Android快速使用

不论是AR特效,计算视觉技术,都离不开摄像头稳定高效地工作。由于摄像头可调参数极多,又涉及硬件厂商的各种兼容性。在Android中,这并不是一个简单的工作。

23830

Android开发那些坑

最近我负责开发了一个跟Android有关的需求,新功能允许用户使用手摄像头,快速拍摄特定尺寸(1:1或3:4)的照片,并支持在拍摄出的照片上做贴纸关的操作。 由于之前没有接触过Android开发,所以在整个开发过程中踩了不少坑,费了不少时间和精力。 这篇文章总结了Android开发的关知识、流程,以及容易遇到的坑,希望能帮助今后可能会接触Android开发的朋友快速上手,节省时间,少走弯路。 一.Android中开发应用的两种方式 Android系统提供了两种使用手资源实现拍摄功能的方法,一种是直接通过Intent调用系统组件,这种方法快速方便,适用于直接获得照片的场景,如上传册 说明这个问题之前,先介绍下Android上几个方向的概念:屏幕方向:在Android系统中,屏幕的左上角是坐标系统的原点(0,0)坐标。原点向右延伸是X轴正方向,原点向下延伸是Y轴正方向。

24.5K50
  • 广告
    关闭

    最壕十一月,敢写就有奖

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OpenGL ES for Android 预览

    权限 Android上打开摄像头需要camera权限,在Android 6.0及以上的版本需要动态申请权限,在`AndroidManifest.xml`中添加camera权限: ... 创建纹理id并创建SurfaceTexture,SurfaceTexture在打开方法中用到,用于预览。 2个条件:权限和SurfaceTexture已经创建完成。 权限申请的回调和Renderer中`onSurfaceCreated`(创建SurfaceTexture的方法)方法是异步的,也就是说无法知道这2个方法回调的前后顺序,因此需要保存权限状态cameraPermission 和SurfaceTexture变量,在这2个回调中都调用打开方法,在打开方法中判断权限和SurfaceTexture是否都已经准备完成,是则打开,不是则返回,代码如下:override fun

    23720

    Android 功能模块关库

    Camera behavior can be unpredictable across different Android manufacturers and versions, especially dependencies { ... other dependencies compile com.afollestad:material-camera:0.2.14 }----# Basics#### Android #### StickerCamera 这是一款集成了,图片裁剪,给图片贴贴图打标签的APP。 #### Feature - 实现功能 - 实现对图片进行裁剪的功能 - 图片的滤镜功能 - 能为图片添加贴纸(贴纸可移动,放大,旋转) - 能为图片添加标签(同样可以移动) - 本地保存制作好的图片 ThanksGpu-imageAndroid-Universal-Image-LoaderImageViewTouchbutterknifeNotesSystemBarTintcropimageEventBusAviary-Android-SDKfastjsonPagerSlidingTabStripandroid-common

    40310

    React Native调用Android图库

    概述在很多的React Native开发中,我们需要调用原生的api实现调用和图库的功能,网上用的最多的开源库如:react-native-image-picker。 关于react-native-image-picker的用法大家请看关的文档。我们今天手动实现一份。 调用Android图库创建项目执行命令 :react-native init HeadImage 创建一个名为HeadImage的工程,可以使用命令先运行下Demo项目。 public String getName() { return HeadImageModule; 注意这里的返回值 } @ReactMethod public void callCamera() { 调用的方法

    73190

    React Native调用Android图库

    概述在很多的React Native开发中,我们需要调用原生的api实现调用和图库的功能,网上用的最多的开源库如:react-native-image-picker。 关于react-native-image-picker的用法大家请看关的文档。我们今天手动实现一份。 调用Android图库创建项目执行命令 :react-native init HeadImage创建一个名为HeadImage的工程,可以使用命令先运行下Demo项目。 public String getName() { return HeadImageModule; 注意这里的返回值 } @ReactMethod public void callCamera() { 调用的方法

    46750

    基于OpenGLES的Android预览

    前言随着AR效果越来越普及,摄像头在Android中的应用越来越重要。通常摄像头的预览方案,通常使用SurfaceView的方案。 因此,Android还提供了Texture的方式。摄像头将采集的数据保存成纹理,然后使用Opengles去显示。 vertexShader); GLES20.glDeleteShader(fragmentShader); }GLSurfaceView.RendererGLSurfaceView.Renderer是Android 经过以上的过程,我们可以在Android中显示摄像头的画面。如有问题,欢迎指正。

    57310

    Android启动加速详解

    Android上实现一个简单能用的其实挺容易。谷歌随便搜一搜就有很多能用的Sample。当然就像谷歌能搜到的其他代码一样,这些Sample虽然能用但离好用还很远。 Android上良莠不齐的硬件,导致启动时间有长有短,很难预期。用户在使用app过程中,过长的等待会产生焦虑。我们要做的就是让用户尽量感知不到启动的耗时。 按照网上能搜到的一般Sample的说法,从启动到实时预览,我们需要做三件事:1.构建一个GlSurfaceView并获取它的SurfaceHolder;2.获取一个Camera device,启动它

    21520

    同时使用多个流 — Android 介绍

    介绍中最新的一篇,我们之前介绍过阵列和会话和请求。 多个流的使用场景一个应用可能希望同时使用多个帧流,在某些情况下不同的流甚至需要不同的帧分辨率或像素格式;以下是一些典型使用场景:录像:一个流用于预览,另一个用于并编码保存成文件扫描条形码:一个流用于预览 每次请求对应多个目标通过执行某种官方程序,多流可以整合成一个 CaptureRequest,此代码段表明了如何使用一个流开启会话进行预览并使用另一个流进行图像处理:val session: 实际表现还会因型而异,Android 给了我们一些保证,可以根据输出类型,输出大小和硬件级别三个变量来支持特定组合。使用不支持的参数组合可能会以低帧率工作,甚至不能工作,触发其中一个故障回调。 RECORD 指的是支持的最大分辨率由 CamcorderProfile 确定。

    60340

    OpenGL ES for Android 预览适配不同分辨率的手

    上一篇讲到OpenGL ES for Android 预览,的预览分辨率设置为1280*720,大家有没有想过如果将GLSurfaceView设置为正方形会如何? 不知道大家对OpenGL ES for Android 视频缩放、旋转、平移是否还有印象,这篇文章中是视频对不同分辨率的适配,视频适配的效果和本文中适配的效果有一些不同,视频适配的最终效果是视频画面显示完全 ,保证不拉伸的前提下会出现黑色区域,而的适配最终的效果是保证不拉伸而且不能出现黑色区域,因此我们需要裁剪纹理(画面)来实现适配。 底下的浅红色表示渲染窗口,上面的浅蓝色表示预览画面,想要达到画面不拉伸而且铺满渲染窗口需要放大预览画面,放大到如下效果:?将纹理等比放大,如上图所示。 原理搞清楚了,接下来在OpenGL ES for Android 预览的基础上进行修改,顶点shader修改如下:attribute vec4 a_Position;attribute vec4 a_TexCoordinate

    40640

    Android的实例应用

    Android的实例应用关键技术: SurfaceHolder.Callback public class MyCameraDemo extends Activity { private SurfaceView getSystemService(Context.WINDOW_SERVICE); 取得display显示对象 Display display = manager.getDefaultDisplay() ; 照参数 Parameters param = MyCameraDemo.this.cam.getParameters() ; 将照预览大小设置为display大小 param.setPreviewSize

    11310

    Android camera 操作封装

    项目中经常用到Android自带的camera拍照功能。于是做了个封装,CameraUtil.java类。再次用到就简单啦,可以最大限度的复用提高效率。 第一个就是预览的界面surfaceView,第二个参数ID,默认为0.第三个参数图像旋转的角度。第四个参数拍照的按钮。onPictureListener为拍完照片的回调处理。 19 * @description: **public class CameraUtil { private String TAG = this.getClass().getSimpleName(); 预览 button; this.onFinishListener = onFinishListener; mCameraId = cameraId; this.rotation = rotation; 初始化预览及回调

    31310

    Android 7.0适配的那些坑

    Android 7.0拍照适配(1)首先必须获取拍照的权限简单一点的可以直接用ActivityCompat的requestPermissions方法ActivityCompat.requestPermissions grantResults、grantResults判断 Toasts.showShort(再次点击即可拍照); } else { Permission Denied } break; }}(2)调用拍照 ,与生成的Uri的第二个参数对应grantUriPermissions属性必须为trueexported必须为falsemeta-data中的resource属性必须配置,为共享的文件路径,也就是系统应用和我们的应用共享的文件路径 比如打开的模块是camera,我们应用的包名是com.my.app,那么BuildConfig.APPLICATION_ID的值就不一样了:camera模块:com.my.app.camera我们app :com.my.app这样导致的后果就是导调用的时候闪退,并且每次通过IDE安装应用的时候都会弹出下面的提示要重新安装App:?

    34530

    Android关开发经验总结

    本文主要总结下Android关开发的经验。 众所周知,Android平台不仅系统碎片化严重,而且不同手的硬件配置差异导致开发某些模块的时候坑比较多,模块就是其中之一。为什么呢? CameraView这个项目可以帮助Android开发者快速创建一个可以适配不同Android系统和不同Android设备,并且包含各种基本功能的界面,它的使用正如它的说明文档中那样,引入一个自定义的 权限 众所周知,从Android 6.0开始,Android系统引入了动态权限的制,所以如果你的应用的targetSDK设置在23及以上的话,你需要在运行的时候检查权限是否授予了,如果没有授予的话就要申请 2.关于Android开发的坑:Android开发那些坑 3.关于Camera API的使用的官方文档:Camera API 4.关于Camera API的使用:Android Camera 开发详解 5.关于运行时权限:Android M 新的运行时权限开发者需要知道的一切

    2.4K30

    浅谈Android权限的声明

    最近写项目,发现在AndroidManifest.xml中声明了调用权限之后,打开app无法启动,经过一番搜查发现:问题在于当写项目所使用的API的版本过高时(比如我所用的测试android 5.0,而我写这个工程所用的API为27,即android 7.0 ),导致APP无法自动向系统请求硬件调用的权限。 Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, CAMERA_JAVA_REQUEST_CODE);}以上这篇浅谈Android权限的声明就是小编分享给大家的全部内容了,希望能给大家一个参考。

    23530

    android 自定义

    老规矩,先上一下项目地址:GitHub:https:github.comxiangzhihongCameraDemo 方式:调用Camera API 自定义 调用系统 由于需求不同,所以选择的方案固然也不同 而第一种自定义的方式使用也十分普遍,但是要做好这个模块,对来说还是有一定难度的,之前分享过一个Github上的开源的项目,项目由美国的一个团队开发,集 拍照、摄影、各种特效动画 等功能与一身, 不过也总算解决了,灰常感谢USA的那个什么什么团队的开源程序。经过自己改造后的预览效果图:? 开发简介 下面说说在Android中调用Camera来定义的最基本步骤:打开 —— 调用Camera的open()方法。 setPictureSize() 方法用于设置照片的大小,参数为整型。

    1.6K61

    Android字符串

    预览 首先是预览的实现,因为不是这里的重点,所以直接在Github上找到成熟的代码。 Demo当然是最好的:https:github.comgooglesamplesandroid-Camera2Basic这个项目演示了Camera2 API的基本使用,并在一个TextureView上展示了实时画面 ImageReader是Android API 19后提供的工具类, 它内部有一个Surface, 可以加载和读取图像, 但是不需要直接显示在界面上. 分量可以做一定的压缩, 比如每两个或四个像素点取一个Y分量, 以节省空间, 这就产生了不同格式的YUV, 如下图:YUV格式的详细介绍可以看这篇文章:一文读懂 YUV 的采样与格式 代码实现 之前初始化的时候传入一个 其实依赖的不是TextureView而是Surface, ImageReader.getSurface()方法可以获得它内部的Surface.在ImageReader.OnImageAvailableListener

    29720

    Android OpenGL开发实践 - 基于OpenGL ES 2.0的Android实时图片涂鸦实现思路

    这篇文章将给大家讲解如何在Android系统上基于OpenGL ES 2.0来实现实时图片涂鸦效果,所涂内容跟随人脸出现、消失、移动、旋转及缩放,在这里,我们假设您:已经搭建好一个框架,能够获得的预览图像有了一个人脸检测的 SDK,能够得到预览时每帧人脸在屏幕中的坐标及旋转角度。 实时图片涂鸦实现思路下面开始循序渐进地讲解涂鸦的实现,首先先来实现一个简单的框架:在预览的界面的中央画一个贴图。 涂鸦画布是一个独立于预览帧的绘图区域,它的作用是可以将已绘制好的涂鸦暂存起来,否则因为预览帧每一帧都是新的,需要把之前绘制过的东西再重新绘制一次,即就算涂鸦结束了,每帧也都需要调用多次OpenGL *960,因此第一个坐标系的转换就是将屏幕坐标系中的触摸点坐标转换成与预览宽高对应的坐标,预览的坐标系原点及x、y轴方向与屏幕坐标系同:?

    2.5K130

    Android平台接口的应用

    “开放手联盟”表示,Android平台可以促使移动设备的创新,让用户体验到最优质的移动服务第二部分、体系结构:1、Android camera架构Android Camera框架从整体上看一个cl ient 项目加载到android模拟器后,在系统菜单中会有cameratest 一项,点击后启动程序,程序启动后会在屏幕中显示三个按钮“启动照”、“点击拍照”、“关闭”。 点击“启动”后,屏幕会显示摄像头的取景,点击“点击拍照”后会拍下摄像头的取景,点击“关闭照”后会关闭摄像头的取景。? data.getExtras().get(data);Log.d(Test, bmp width: + bmp.getWidth() + , height: + bmp.getHeight());}另外假如仅仅是调用系统照拍照 ,不关心拍照结果,则可以简单使用如下代码Intent intent = new Intent(); 调用照intent.setAction(android.media.action.STILL_IMAGE_CAMERA

    66050

    Android旋转拍摄的照片

    前两天在做一个图片选择器的需求,其中的拍照部分要求调用系统拍照后允许用户逆时针旋转图片。 在另一部华为手上运行,惊奇地发现在这部手上一切正常,难道是一加的工程师又魔改了系统?借了同事的谷歌手,发现和一加的表现一致,看来不是系统的问题。 一筹莫展之际,我随手打开了单步调试,在Android Studio中预览了srcBitmap,此时才发现从文件中读取的图片竟然已经被旋转了270度,而通过Glide将图片文件加载给ImageView的时候却是朝向正常的 看着Logcat中不知为何出现的EXIF关的日志信息,我突然猜想:是否照片中的EXIF中包含了照片朝向呢? 根据Wiki提供的参考链接可以得知三种非常规朝向和对应的值,如下图: Orientation这个属性值可以理解为拍照的顺时针旋装的角度,对一加手上的照片文件通过如下的方式获取这个字段的值: val

    8820

    扫码关注云+社区

    领取腾讯云代金券