当前位置:首页 » 安卓系统 » android相机demo

android相机demo

发布时间: 2023-01-08 13:19:02

⑴ 如何获得Surfaceview android的普通相机的看法

SurfaceView是View的子类,它内嵌了一个专门用于绘制的Surface,你可以控制这个Surface的格式和尺寸,Surfaceview控制这个Surface的绘制位置。surface是纵深排序(Z-ordered)的,说明它总在自己所在窗口的后面。SurfaceView提供了一个可见区域,只有在这个可见区域内的surface内容才可见。surface的排版显示受到视图层级关系的影响,它的兄弟视图结点会在顶端显示。这意味者 surface的内容会被它的兄弟视图遮挡,这一特性可以用来放置遮盖物(overlays)(例如,文本和按钮等控件)。注意,如果surface上面有透明控件,那么每次surface变化都会引起框架重新计算它和顶层控件的透明效果,这会影响性能。SurfaceView默认使用双缓冲技术的,它支持在子线程中绘制图像,这样就不会阻塞主线程了,所以它更适合于游戏的开发。 SurfaceView的使用首先继承SurfaceView,并实现SurfaceHolder.Callback接口,实现它的三个方法:surfaceCreated,surfaceChanged,surfaceDestroyed。surfaceCreated(SurfaceHolder holder):surface创建的时候调用,一般在该方法中启动绘图的线程。surfaceChanged(SurfaceHolder holder, int format, int width,int height):surface尺寸发生改变的时候调用,如横竖屏切换。surfaceDestroyed(SurfaceHolder holder) :surface被销毁的时候调用,如退出游戏画面,一般在该方法中停止绘图线程。还需要获得SurfaceHolder,并添加回调函数,这样这三个方法才会执行。SurfaceView实战下面通过一个小demo来学习SurfaceView在实际项目中的使用,绘制一个精灵,该精灵有四个方向的行走动画,让精灵沿着屏幕四周不停的行走。

⑵ Android调用系统相机实现拍照和视频录制

(1)申请权限

(2)设置布局

这里做了一个简单的布局:添加了一个按钮和一个ImageView控件用于显示拍摄的图像。

(3)为按钮添加点击事件监听

点击按钮时,调用系统相机进行拍照,并在确定后将图像显示在ImageView控件中。

(1)申请权限

(2)设置布局

添加了一个按钮和一个VideoView控件用于显示录制的视频。

(3)为按钮添加点击事件监听

同前面一样,点击按钮后调用系统相机进行录制视频,录制完成后点击确定即可将录制的视频显示在VideoView控件中。

对于Android11.0的版本,在调用系统相近进行视频录制的时候,即使在AndroidMenifest.xml中申请了CAMERA权限,还是会在程序运行时报错: Permission  Denial ,   . .... ....  with revoked permission android.permission.CAMERA

解决方法是在程序中动态申请权限:

写在最后:文章是在学习过程中做的学习笔记,同时与志同道合者分享,文章内容均经过我自己实验证实可行,如有问题欢迎留言,很高兴一起交流讨论,共同进步!

⑶ 请各位大神给我一个Android照相并且上传到服务器的demo。最好能够下载图片和相关参数。万分感谢。。。

http://www.eoeandroid.com/forum-27-1.html上有很多相关的demo

⑷ 做了一个Android的demo实现头像裁剪上传,但是拍照完成后出现如下图问题,图库也一样大神们帮忙看看

实现思维路径:
以进入相机拍照的思维路线为例子:
1.进入app
2.判断之前是否保存头像,如果有就显示历史图像 (下面代码中在getOldAvatar();方法中执行这个逻辑)
3.点击更换图像的Button或者布局,启动对话框(下面代码中在dialogueBox();方法执行这个逻辑)
4.系统版本判断授权方式(静态还是动态授权),判断之前是否已经授权 (setPermissions(Permissions_CAMERA_KEY);这个方法执行授权逻辑)
5.如果是首次授权,就执行首次授权完成后马上运行的回调方法 onRequestPermissionsResult
5.判断完成不管是否是首次授权还是之前就是授权过了都要执行enterCamera();方法启动相机并且发送携带数据的请求
6.启动相机完成后,并且拍照完成退出相机,都要运行Intent返回数据请求回调方法onActivityResult。将传入的数据传入到cropPhoto(data.getData());方法里去执行图片剪裁。
7.在cropPhoto方法里将携带数据跳转到裁剪界面中裁剪图片,裁剪完成后又要回到onActivityResult回调方法里,执行裁剪完的数据回调工作。

8.在onActivityResult回调方法里,裁剪完的图片将运行setPicToView 方法保存图片。保存的图片将在下次启动activity时作为历史头像调用。

package com.example.lenovo.mydemoapp;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

⑸ android demo是什么意思

游戏中的“DEMO” 在游戏正式版发售之前,官方为了进行宣传和压力测试,而放出的不完全版本,通常称为“试玩版”。

开发中 DEMO 是列子开发, 不知道是不是你想要的

⑹ android 怎么从相机上传照片demo

DEMO的时候. 在控制台输入: record空格X(X代表你DEMO的名称)回车.录像开始. stop停止录像. playdemo空格X(播放你所有的DEMO.X代表DEMO的名称) 停止后在你CS/反恐精英/目录下搜索DEMO的名子.

⑺ Android app制作,有一个demo,是分享照片到微信的,可以分享照片也可以拍照分享,可是一拍照就崩溃

飞机不怕遭雷劈
最近西雅图两架飞机被闪电击中,但飞机和乘客都安然无恙,有人说飞机都有防雷装置,所以不怕遭雷劈,果真如此?
真假求真相

⑻ Android多媒体(相机,相册,播放视频)使用

创建全局变量

在onCreate方法里面设置点击事件

先判断Android版本是否低于7.0,再根据判断结果选择不同的方式创建Uri(因为安卓7.0后直接使用本地真实路径被认为是不安全的)
FileProvider是contentProvider

系统会找出能响应这个Intent的Activity,即相机,在通过startActivityForResult得到拍摄结果

1.定义全局变量fromAlbum
2.添加点击事件
3.修改onActivityResult方法

(音频文件放在assets文件夹下)

(视频文件放在raw文件夹下)

⑼ Android进阶——你所知道的Camera2和你所不知道的Camera2完全解析

一切源于在项目过程中的一个Bug:我的需求是在MainActivity 实现自动预览,也可以点击跳到签到SignedActivity去实现拍照签到,第一次进入界面的时候都是正常的,但是有时候返回来的时候预览失败,即从MainActivity跳转到SignedActivity偶尔预览失败和从SignedActivity返回MainActivity偶尔失败,都是报(CAMERA_IN_USE)ERRO=1的错误,奇怪的是的的确确做了完全释放操作,加上以前用的更多的是Camera api 对于Camer2 的机制没有完整去研究过,一下子懵了,于是乎先去找了Stack Overflow,查到一个解决方案是:"我弃用了新API,换回旧API",ORZ,找了其他的也没有答案,可是我不服呀,我就把官方的文档全部啃了一遍,于是乎便有了以下的理解,我想如果你不懂得怎么使用Camera2的话,这篇绝对值得你去阅读,你会发现Camera2 并非像大多数说得那样使用起来很复杂。

全新的android.hardware.Camera2 。Android 5.0对拍照API进行了全新的设计,新增了全新设计的Camera 2 API,这些API不仅大幅提高了Android系统拍照的功能,还能支持RAW照片输出,甚至允许程序调整相机的对焦模式、曝光模式、快门等。

在Camera2 架构在核心参与类角色有: CameraManager CameraDevice CameraCharacteristics CameraRequest与CameraRequest.Builder CameraCaptureSession 以及 CaptureResult

位于android.hardware.camera2.CameraManager下,也是Android 21(5.0)添加的,和其他系统服务一样通过 Context.getSystemService(CameraManager.class ) 或者 Context.getSystemService(Context.CAMERA_SERVICE) 来完成初始化,主要用于管理系统摄像头:

CameraDevice是Camera2中抽象出来的一个对象,直接与系统硬件摄像头相联系。因为不可能所有的摄像头都会支持高级功能(即摄像头功能可被分为limit 和full 两个级别),当摄像头处于limited 级别时候,此时Camera2和早期的Camera功能差不多,除此之外在Camera2架构中,CameraDevice还承担其他两项重要任务:

正如前面所说, 系统向摄像头发送 Capture 请求,而摄像头会返回 CameraMetadata,这一切都是在由对应的CameraDevice创建的CameraCaptureSession 会话完成 ,当程序需要预览、拍照、再次预览时,都需要先通过会话。(A configured capture session for a CameraDevice , used for capturing images from the camera or reprocessing images captured from the camera in the same session previously.A CameraCaptureSession is created by providing a set of target output surfaces to createCaptureSession , or by providing an InputConfiguration and a set of target output surfaces to for a reprocessable capture session . Once created, the session is active until a new session is created by the camera device, or the camera device is closed.)CameraCaptureSession一旦被创建,直到对应的CameraDevice关闭才会死掉。虽然CameraCaptureSession会话用于从摄像头中捕获图像,但是只有同一个会话才能再次从同一摄像头中捕获图像。另外, 创建会话是一项耗时的异步操作,可能需要几百毫秒 ,因为它需要配置相机设备的内部管道并分配内存缓冲区以将图像发送到所需的目标,因而createCaptureSession和会将随时可用的CameraCaptureSession发送到提供的监听器的onConfigured回调中。如果 无法完成配置,则触发onConfigureFailed回调 ,并且会话将不会变为活动状态。最后需要注意的是,如果 摄像头设备创建了一个新的会话,那么上一个会话是被关闭的,并且会回调与其关联的onClosed ,如果不处理好,当会话关闭之后再次调用会话的对应方法那么所有方法将会跑出IllegalStateException异常。关闭的会话清除任何重复的请求(和调用了stopRepeating()方法类似),但是在新创建的会话接管并重新配置摄像机设备之前,关闭的会话仍然会正常完成所有正在进行的捕获请求。简而言之,在Camera2中CameraCaptureSession承担很重要的角色:

描述Cameradevice属性的对象,可以使用CameraManager通过getCameraCharacteristics(String cameraId)进行查询。

CameraRequest代表了一次捕获请求, 而CameraRequest.Builder用于描述捕获图片的各种参数设置,包含捕获硬件(传感器,镜头,闪存),对焦模式、曝光模式,处理流水线,控制算法和输出缓冲区的配置。 ,然后传递到对应的会话中进行设置, CameraRequest.Builder则负责生成CameraRequest对象 。当程序调用setRepeatingRequest()方法进行预览时,或调用capture()方法进行拍照时,都需要传入CameraRequest参数。CameraRequest可以通过CameraRequest.Builder来进行初始化,通过调用createCaptureRequest来获得。

CaptureRequest描述是从图像传感器捕获单个图像的结果的子集的对象。(CaptureResults are proced by a CameraDevice after processing a CaptureRequest)当CaptureRequest被处理之后由CameraDevice生成。

CameraManager 处于顶层管理位置负责 检测获取所有摄像头及其特性 传入指定的CameraDevice.StateCallback回调打开指定摄像头 CameraDevice 是负责管理抽象对象,包括 监听Camera 的状态回调CameraDevice.StateCallback 创建CameraCaptureSession和CameraRequest CameraCaptureSession 用于描述一次图像捕获操作,主要负责 监听自己会话的状态回调CameraCaptureSession.StateCallback CameraCaptureSession.CaptureCallback捕获回调 ,还有 发送处理CameraRequest CameraRequest 则可以看成是一个"JavaBean"的作用用于描述希望什么样的配置来处理这次请求;最后三个回调用于监听对应的状态。

CameraManager 处于顶层管理位置负责检测 检测获取所有摄像头并设置输出参数,传入指定的CameraDevice.StateCallback回调,然后打开指定摄像头,并触发CameraDevice.StateCallback中的onOpened方法,并在onOpened方法里开始通过调用创建预览会话, ,CameraDevice负责创建请求 CameraCharacteristics CameraRequest与CameraRequest.Builder CameraCaptureSession 以及 CaptureResult 则可以看成是一个JavaBean的作用用于描述以什么样的配置来处理这次请求。

Camera2Helper类只是简单的封装了下,为了让Camera2的初始化和Activity 高度分离,这个类只是Demo 阶段部分有待优化,另外结合我具体的业务,对于图片大小有限制,所以我都是默认采用采样压缩率方式对图片进行压缩

⑽ 写了一个小的android demo,从系统相册去选取图片,发现只能单选,问下大神,有没有方式可以多选的

系统相册(Gallery widget)缺省情况下,并不支持一次多选图片功能。
你可以扩展Gallery View 组件,在每个图片旁放一个CheckBox,这样就可以实现多选了,稍微麻烦了一些.
你可以在谷歌搜索中输入:Android custom image gallery with checkbox in grid to select multiple
就找到相应的方法。
Good Luck!

热点内容
阿里云服务器bt安装 发布:2025-07-05 06:36:46 浏览:367
数据库组别 发布:2025-07-05 06:15:53 浏览:711
我的世界服务器怎样设置新手装备只能拿一次 发布:2025-07-05 06:15:53 浏览:985
缓存40集电视剧需要多少流量 发布:2025-07-05 05:56:44 浏览:64
iso怎么解压到u盘 发布:2025-07-05 05:49:02 浏览:890
php参数设置 发布:2025-07-05 05:49:00 浏览:995
javacharacter 发布:2025-07-05 05:38:36 浏览:735
服务器pcid地址怎么看 发布:2025-07-05 05:35:40 浏览:384
安卓系统赚钱靠什么 发布:2025-07-05 05:28:06 浏览:159
编译不出来的原因 发布:2025-07-05 05:14:00 浏览:69