Android 使用摄像头拍照
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 使用摄像头拍照相关推荐
- android 7调用摄像头,Android调用摄像头拍照(兼容7.0)
[实例简介] Android调用摄像头拍照(兼容7.0)Demo,原博客文章https://blog.csdn.net/u010356768/article/details/70808162 [实例截 ...
- android: 调用摄像头拍照
很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...
- Android——调用摄像头拍照
调用摄像头拍照 首先修改activity_main.xml 如下: <?xml version="1.0" encoding="utf-8"?> & ...
- android调用摄像头拍照
2019独角兽企业重金招聘Python工程师标准>>> 调用手机摄像头拍照,获取拍照后的图片数据.以下代码是在activity中: // 调用摄像头 Button b = (Butt ...
- android摄像头代码,android: 调用摄像头拍照(示例代码)
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, CROP_PHOTO); //启动 ...
- Android调用摄像头拍照并显示照片
1.先写xml界面代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
- android摄像头拍照代码,Android调用摄像头拍照开发教程
现在很多应用中都会要求用户上传一张图片来作为头像,首先我在这接收使用相机拍照和在相册中选择图片.接下来先上效果图: 接下来看代码: 1.布局文件: xmlns:tools="http://s ...
- android+usb+摄像头+app+开源,Android 使用摄像头拍照
拍照必须设置权限: 1.布局main.xml 2.初始化组件: private SurfaceView mySurfaceView = null;//SurfaceView的引用 private Su ...
- android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...
Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...
最新文章
- mysql中tinyint(1)与tinyint(2)的区别
- Apache URL重定向避免网址结尾斜线问题
- 逻辑回归(Logistic Regression)简介及C++实现
- npm中package-lock.json的作用:npm install安装时使用
- dis的前缀单词有哪些_英语单词词根.词缀II 5个最高频英语前缀 必背
- ZooKeeper客户端ZKClient使用
- 卡式水分滴定仪预测模型分析
- 【正则表达式系列】一些概念(字符组、捕获组、非捕获组)
- matlab计算每个细胞面积,手把手教你用 Imaris 计算细胞面积
- Python_XPath
- 渗透学习笔记--基础篇--sql注入(数字型)
- java guava map_Guava - Map
- python中如何移动图形工作站_如何在Python中使用Kriging插入工作站数据?
- ehcache 的 diskStore path
- tensorflow 中,修改张量tensor特定元素的值
- jquery省市插件
- Linux宝库名人轶事栏目 | 我与中国开源软件二十年(一)
- 支付网关清算及退款流程
- 三菱PLC FX5U 伺服机器人程序
- iOS 自定义播放器