android+usb+摄像头+app+开源,Android 使用摄像头拍照
拍照必须设置权限:
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 使用摄像头拍照相关推荐
- android订餐系统app、android购物商城系统app 手机端+服务器端 mysql数据库,界面简单,功能齐全 安卓购物商城 安卓在线订餐系统
android订餐系统app.android购物商城系统app 一.简介 该项目可作为毕业设计开发使用,包含项目源代码.数据库.开题报告.毕业论文.答辩ppt等. 毕业设计题目:"基于And ...
- android获取其他app布局,Android Studio查看其它APP的布局结构
概述 日常使用别家的APP过程中,会遇到一些比较好看的布局,这时候我们就想学习一下别人的布局结构,以便参考. (1)手机连接电脑.设置手机为USB调试模式 (2)运行Android Studio,打开 ...
- android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...
android - 如何从App的(布局)XML变量中获取Manifest版本号? 我想有一种方法在代码的主要部分引用项目的清单版本号. 到目前为止我一直在做的是将String XML文件中的版本号链 ...
- android sex games app,Beginning Android Games 2nd Edition
摘要: Beginning Android Games, Second Edition offers everything you need to join the ranks of successf ...
- 开源android客户端_4个开源Android电子邮件客户端
开源android客户端 即使年轻一代的成员试图将电子邮件作为"老年人的交流"来掩埋,但现实情况是,电子邮件离死刑不远了. 尽管协作工具 ,社交媒体和短信很重要,但它们还不能替代电 ...
- android修改桌面app图标,android修改桌面app图标的问题。
android修改桌面app图标的问题. 我知道配置app图标的做法是在 manifest.xml中的 android:allowBackup="true" android:ico ...
- android+动态更改app图标,Android开发:如何动态更换APP图标
在Android开发中,通常会有这样的需求,逢年过节UI的小伙伴们都会做出节日或活动相关的APP图标让我们更换,可是每次更换都要发版实现.那么,如何在不发版的情况下动态地更换我们的图标呢?本篇文章就来 ...
- android+usb模拟点击,Android后台模拟点击探索(附源码)
工作中我们需要自制一套工具,其中遇到需要模拟点击事件的需求,类似按键精灵的功能,支持后台持续运行,满足触发条件时完成点击. 经过一番探索,一共整理出两种不同的方案:AccessibilityServi ...
- Android 数据库制作APP,在Android 中使用Anko框架制作一个完整的App,第二集
作者:feintkotlin(Kotlin学习网) 说明:这次更新对一些小的细节进行了改进,并增加了SQLite的操作.该应用支持6.0及以上android系统 更新:当有网络时,将前5条数据保存到数 ...
最新文章
- python如何调用文件_如何调用另一个python文件中的代码
- 【PySpark入门】手把手实现PySpark机器学习项目-回归算法
- mysqldump命令
- C++ cout 输出 16, 8 , 2进制
- 每日两SQL(1),欢迎交流~
- ospf hello时间和dead_图文并茂解释OSPF邻居关系建立失败的几种常见情况(太实用了!)...
- 【文末有赠书】从历史角度讲现代数学
- 在列表前方插入一个数据_通俗易懂的Redis数据结构基础教程
- javascript基础修炼——手把手教你造一个简易的require.js
- centos 5.6 安装redmine 步骤
- 非参数统计的Python实现—— Fisher 精确性检验
- JAVAFX版简易计算器
- lbj学习日记02 循环结构(for while)
- 【Scratch-声音模块】音量控制
- 判断点P是否在三角形ABC内
- vite使用vite-aliases插件配置路径别名
- js版【微信机器人】——wechat-robot
- 如何给学生选择好的台灯?分享国AA级照度的护眼台灯
- AndLua加密解密
- python 插值 —— 如何实现插值,以及错误ValueError: A value in x_new is below the interpolation range.