拍照必须设置权限:

1、布局main.xml

2、初始化组件:

private SurfaceView mySurfaceView = null;//SurfaceView的引用

private SurfaceHolder mySurfaceHolder = null;//SurfaceHolder的引用

private Button btnOpen = null;//打开按钮

private Button btnClose = null;//关闭按钮

private Button btnTake = null;//拍照按钮

添加监听器:OnClickListener, SurfaceHolder.Callback super.onCreate(savedInstanceState);

//全屏

requestWindowFeature(Window.FEATURE_NO_TITLE);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN ,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.main);

mySurfaceView = (SurfaceView) findViewById(R.id.mySurfaceView);//得到SurfaceView的引用

btnOpen = (Button) findViewById(R.id.btnOpen);//得到按钮的引用

btnClose = (Button) findViewById(R.id.btnClose);//得到按钮的引用

btnTake = (Button) findViewById(R.id.btnTake);//得到按钮的引用

btnOpen.setOnClickListener(this);//为按钮添加监听

btnClose.setOnClickListener(this);//为按钮添加监听

btnTake.setOnClickListener(this);//为按钮添加监听

mySurfaceHolder = mySurfaceView.getHolder();//获得SurfaceHolder

mySurfaceHolder.addCallback(this);//添加接口的实现

mySurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

3、使用CAMERA拍照 private Camera myCamera = null;//Camera的引用 boolean isView = false;//是否在浏览中

1)、初始化照相机:

public void initCamera(){ if(!isView){ myCamera = Camera.open(); } if(myCamera != null && !isView){ try { Camera.Parameters myParameters = myCamera.getParameters(); myParameters.setPictureFormat(PixelFormat.JPEG); //真机删除setPreviewSize方法 myParameters.setPreviewSize(200, 200);//屏幕大小 myCamera.setParameters(myParameters); myCamera.setPreviewDisplay(mySurfaceHolder); myCamera.startPreview();//立即运行Preview } catch (IOException e) {//捕获异常 e.printStackTrace();//打印错误信息 } isView = true; } }

2、打开/关闭和拍照

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()) {

//打开照相机

case R.id.btnOpen:

initCamera();

break;

case R.id.btnClose:

if(myCamera != null && isView){//当正在显示时

isView = false;

myCamera.stopPreview();

myCamera.release();

myCamera = null;

}

break;

//拍照

case R.id.btnTake:

myCamera.takePicture

(myShutterCallback, myRawCallback, myjpegCallback);

break;

}

}

//相机快门关闭

ShutterCallback myShutterCallback = new ShutterCallback() {

@Override

public void onShutter() {

// TODO Auto-generated method stub

}

};

//照片二进制流生成

PictureCallback myRawCallback = new PictureCallback() {

@Override

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

// TODO Auto-generated method stub

}

};

//预览图片

PictureCallback myjpegCallback = new PictureCallback(){

@Override

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

Bitmap bm =

BitmapFactory.decodeByteArray(data, 0, data.length);

ImageView myImageView =

(ImageView) findViewById(R.id.myImageView);

myImageView.setImageBitmap(bm);//将图片显示到下方的ImageView中

isView = false;

myCamera.stopPreview();

myCamera.release();

myCamera = null;

initCamera();//初始化相机

}

};

android+usb+摄像头+app+开源,Android 使用摄像头拍照相关推荐

  1. android订餐系统app、android购物商城系统app 手机端+服务器端 mysql数据库,界面简单,功能齐全 安卓购物商城 安卓在线订餐系统

    android订餐系统app.android购物商城系统app 一.简介 该项目可作为毕业设计开发使用,包含项目源代码.数据库.开题报告.毕业论文.答辩ppt等. 毕业设计题目:"基于And ...

  2. android获取其他app布局,Android Studio查看其它APP的布局结构

    概述 日常使用别家的APP过程中,会遇到一些比较好看的布局,这时候我们就想学习一下别人的布局结构,以便参考. (1)手机连接电脑.设置手机为USB调试模式 (2)运行Android Studio,打开 ...

  3. android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...

    android - 如何从App的(布局)XML变量中获取Manifest版本号? 我想有一种方法在代码的主要部分引用项目的清单版本号. 到目前为止我一直在做的是将String XML文件中的版本号链 ...

  4. android sex games app,Beginning Android Games 2nd Edition

    摘要: Beginning Android Games, Second Edition offers everything you need to join the ranks of successf ...

  5. 开源android客户端_4个开源Android电子邮件客户端

    开源android客户端 即使年轻一代的成员试图将电子邮件作为"老年人的交流"来掩埋,但现实情况是,电子邮件离死刑不远了. 尽管协作工具 ,社交媒体和短信很重要,但它们还不能替代电 ...

  6. android修改桌面app图标,android修改桌面app图标的问题。

    android修改桌面app图标的问题. 我知道配置app图标的做法是在 manifest.xml中的 android:allowBackup="true" android:ico ...

  7. android+动态更改app图标,Android开发:如何动态更换APP图标

    在Android开发中,通常会有这样的需求,逢年过节UI的小伙伴们都会做出节日或活动相关的APP图标让我们更换,可是每次更换都要发版实现.那么,如何在不发版的情况下动态地更换我们的图标呢?本篇文章就来 ...

  8. android+usb模拟点击,Android后台模拟点击探索(附源码)

    工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击. 经过一番探索,一共整理出两种不同的方案:AccessibilityServi ...

  9. Android 数据库制作APP,在Android 中使用Anko框架制作一个完整的App,第二集

    作者:feintkotlin(Kotlin学习网) 说明:这次更新对一些小的细节进行了改进,并增加了SQLite的操作.该应用支持6.0及以上android系统 更新:当有网络时,将前5条数据保存到数 ...

最新文章

  1. python如何调用文件_如何调用另一个python文件中的代码
  2. 【PySpark入门】手把手实现PySpark机器学习项目-回归算法
  3. mysqldump命令
  4. C++ cout 输出 16, 8 , 2进制
  5. 每日两SQL(1),欢迎交流~
  6. ospf hello时间和dead_图文并茂解释OSPF邻居关系建立失败的几种常见情况(太实用了!)...
  7. 【文末有赠书】从历史角度讲现代数学
  8. 在列表前方插入一个数据_通俗易懂的Redis数据结构基础教程
  9. javascript基础修炼——手把手教你造一个简易的require.js
  10. centos 5.6 安装redmine 步骤
  11. 非参数统计的Python实现—— Fisher 精确性检验
  12. JAVAFX版简易计算器
  13. lbj学习日记02 循环结构(for while)
  14. 【Scratch-声音模块】音量控制
  15. 判断点P是否在三角形ABC内
  16. vite使用vite-aliases插件配置路径别名
  17. js版【微信机器人】——wechat-robot
  18. 如何给学生选择好的台灯?分享国AA级照度的护眼台灯
  19. AndLua加密解密
  20. python 插值 —— 如何实现插值,以及错误ValueError: A value in x_new is below the interpolation range.

热门文章

  1. 【js特效】www.zhen.com图片频道页特效
  2. 性格色彩测试android程序开发之九--sqlite数据库
  3. bemusic使用帮助
  4. Android项目总结之社会化分享
  5. 征途研发元老披露成功内幕
  6. c语言实现动态字符串,C语言怎么实现可变长度字符串
  7. QXcbConnection: Could not connect to display :0
  8. 苏州Uber人民优步奖励政策
  9. 微信小程序 默认第一个选中变色
  10. 和 谐 文 化 简 介