Android调用系统摄像头拍照并显示在ImageView上
2017-01-05 16:10
519 查看
简介
现在市面上的apk只要涉及用户中心都会有头像,而且这个头像也是可自定义的,有的会采取读取相册选择其中一张作为需求照片,另一种就是调用系统摄像头拍照并获取即时照片,本博文就是讲述如何调用摄像头拍照并显示在指定的控件上。先来看看效果图
由于这里我用的是模拟器没有摄像头,所以拍照是黑的,至于里面2个红色圆圈那是Genymotion自带的标志。
实现起来比较简单:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.cc.csdndemo1.MainActivity"> <Button android:id="@+id/takephotoTV" android:text="开启相机" android:gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ImageView android:layout_gravity="center" android:id="@+id/imageIV" android:layout_width="300dp" android:layout_height="300dp"/> </LinearLayout>
布局文件最外层一个垂直排列的LinearLayout,里面放着一个Button和ImageView控件。
MainActivity.class
package com.cc.csdndemo1; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.Button; import android.widget.ImageView; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class MainActivity extends AppCompatActivity { @BindView(R.id.takephotoTV) Button takephotoTV; @BindView(R.id.imageIV) ImageView imageIV; private final int CAMERA_REQUEST = 8888; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick(R.id.takephotoTV) public void onClick() { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_REQUEST); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); imageIV.setImageBitmap(photo); } } }
我们来分析下activity的代码,首先我们使用ButterKnife一键注入代码,免去手动findViewById()并设置button的点击事件,对ButterKnife不熟悉的同志可以查看Android Studio使用ButterKnife和Zelezny,点击事件触发后调用系统的action开启摄像头拍照界面,在这里面我们要注意startActivityForResult必须使用这个方法来回调,第一个参数为intent,第二个参数为自定义的Int型标志,重写onActivityResult(),判断requestCode == CAMERA_REQUEST && resultCode == RESULT_OK,最后获取Bitmap,设置给imageview。
博文内容比较简单,但很实用,不积跬步无以至千里,希望对需要的朋友有一定的帮助。
完整的参考代码
相关文章推荐
- Android调用系统摄像头拍照并显示在ImageView上
- android调用摄像头拍照,并且用imageView显示出来
- 调用系统摄像头拍照,对拍照后的图片进行裁剪和压缩处理,并显示在imageview上面
- 安卓调用系统相机拍照并且显示在ImageView上
- Android调用系统相册和相机选择图片并显示在imageview中
- Android——调用系统摄像头拍照的问题
- Android-ImageView显示选择本地图片或拍照
- Android调用相机拍摄照片并显示到 ImageView控件中
- Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化
- Android demo--调用系统相机拍照并显示图片为黑白
- Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化
- [Android] 拍照、截图、保存并显示在ImageView控件中
- Android-ImageView显示选择本地图片或拍照
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
- Android 调用系统摄像头拍照保存并且更新到图库
- android--调用系统相机拍照,显示并保存照片 - zhengwen
- android 调用系统拍照并显示拍摄后的原图片
- Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化(转)
- android--调用系统相机拍照,显示并保存照片
- android调用摄像头拍照并显示