2019独角兽企业重金招聘Python工程师标准>>>

<!-- lang: xml -->
拍照必须设置权限:

<uses-permission android:name="android.permission.CAMERA"/>

1、布局main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <SurfaceView android:id="@+id/mySurfaceView" android:gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="200px" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" > <Button android:id="@+id/btnOpen" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打开" /> <Button android:id="@+id/btnClose" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="关闭" /> <Button android:id="@+id/btnTake" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="拍照" /> </LinearLayout>
<ImageView android:id="@+id/myImageView" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>

<!-- lang: java -->
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();//获得SurfaceHoldermySurfaceHolder.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 stubswitch (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() {@Overridepublic void onShutter() {// TODO Auto-generated method stub}
};//照片二进制流生成
PictureCallback myRawCallback = new PictureCallback() {@Overridepublic void onPictureTaken(byte[] data, Camera camera) {// TODO Auto-generated method stub}
};//预览图片
PictureCallback myjpegCallback = new PictureCallback(){@Overridepublic 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();//初始化相机}
};

转载于:https://my.oschina.net/aibenben/blog/133357

Android 使用摄像头拍照相关推荐

  1. android 7调用摄像头,Android调用摄像头拍照(兼容7.0)

    [实例简介] Android调用摄像头拍照(兼容7.0)Demo,原博客文章https://blog.csdn.net/u010356768/article/details/70808162 [实例截 ...

  2. android: 调用摄像头拍照

    很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...

  3. Android——调用摄像头拍照

    调用摄像头拍照 首先修改activity_main.xml 如下: <?xml version="1.0" encoding="utf-8"?> & ...

  4. android调用摄像头拍照

    2019独角兽企业重金招聘Python工程师标准>>> 调用手机摄像头拍照,获取拍照后的图片数据.以下代码是在activity中: // 调用摄像头 Button b = (Butt ...

  5. android摄像头代码,android: 调用摄像头拍照(示例代码)

    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, CROP_PHOTO); //启动 ...

  6. Android调用摄像头拍照并显示照片

    1.先写xml界面代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

  7. android摄像头拍照代码,Android调用摄像头拍照开发教程

    现在很多应用中都会要求用户上传一张图片来作为头像,首先我在这接收使用相机拍照和在相册中选择图片.接下来先上效果图: 接下来看代码: 1.布局文件: xmlns:tools="http://s ...

  8. android+usb+摄像头+app+开源,Android 使用摄像头拍照

    拍照必须设置权限: 1.布局main.xml 2.初始化组件: private SurfaceView mySurfaceView = null;//SurfaceView的引用 private Su ...

  9. android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...

    Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...

最新文章

  1. mysql中tinyint(1)与tinyint(2)的区别
  2. Apache URL重定向避免网址结尾斜线问题
  3. 逻辑回归(Logistic Regression)简介及C++实现
  4. npm中package-lock.json的作用:npm install安装时使用
  5. dis的前缀单词有哪些_英语单词词根.词缀II 5个最高频英语前缀 必背
  6. ZooKeeper客户端ZKClient使用
  7. 卡式水分滴定仪预测模型分析
  8. 【正则表达式系列】一些概念(字符组、捕获组、非捕获组)
  9. matlab计算每个细胞面积,手把手教你用 Imaris 计算细胞面积
  10. Python_XPath
  11. 渗透学习笔记--基础篇--sql注入(数字型)
  12. java guava map_Guava - Map
  13. python中如何移动图形工作站_如何在Python中使用Kriging插入工作站数据?
  14. ehcache 的 diskStore path
  15. tensorflow 中,修改张量tensor特定元素的值
  16. jquery省市插件
  17. Linux宝库名人轶事栏目 | 我与中国开源软件二十年(一)
  18. 支付网关清算及退款流程
  19. 三菱PLC FX5U 伺服机器人程序
  20. iOS 自定义播放器

热门文章

  1. 如何成为SEO专家(10步指南)
  2. MyBatis 实践 -配置
  3. Mysqldump参数大全(参数来源于mysql5.5.19源码)
  4. WebBrowser
  5. 传智播客C/C++各种开发环境搭建视频工具文档免费教程
  6. 力求企业的内部公平性
  7. 关于Oracle组件如何正确实现动态Web的数据库
  8. Virtual Lab. For Probability and Statistics
  9. Git 2.20的重大更新:侧重可用性和性能
  10. 阿里云Redis多线程性能提升思路解析