Android调用系统摄像头拍照并显示在ImageView上

 更新时间:2018年04月27日 16:37:03   作者:CSDN_陈诚  
这篇文章主要为大家详细介绍了Android调用系统摄像头拍照并显示在ImageView上,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

简介

现在市面上的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应用开发SharedPreferences存储数据的使用方法

    Android应用开发SharedPreferences存储数据的使用方法

    SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据
    2012-11-11
  • Android基于ViewPager+Fragment实现左右滑屏效果的方法

    Android基于ViewPager+Fragment实现左右滑屏效果的方法

    这篇文章主要介绍了Android基于ViewPager+Fragment实现左右滑屏效果的方法,结合实例形式分析了Android实现滑屏效果的布局与滑动功能相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • Android LitePal的使用详解

    Android LitePal的使用详解

    这篇文章主要介绍了Android LitePal的使用,帮助大家更好的进行Android开发,感兴趣的朋友可以了解下
    2020-12-12
  • Android实现向本地写入一个XML文件和解析XML文件

    Android实现向本地写入一个XML文件和解析XML文件

    这篇文章主要介绍了Android实现向本地写入一个XML文件和解析XML文件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 在Android项目中使用AspectJ的详细攻詻

    在Android项目中使用AspectJ的详细攻詻

    AspectJ是实现AOP的其中一款框架,内部通过处理字节码实现代码注入,文章给大家提到AspectJ基础语法和集成AspectJ的方式,对AspectJ在android中使用教程感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • Android自动化获取卡顿信息的实现方法

    Android自动化获取卡顿信息的实现方法

    自动化获取卡顿信息就像给App装  “行车记录仪”  —— 实时记录主线程的“驾驶状态”,一旦发现“急刹车”(卡顿),立刻保存现场(堆栈),事后回看录像(日志)精准定位问题,本文给大家介绍了Android自动化获取卡顿信息的实现方法,需要的朋友可以参考下
    2025-02-02
  • Android文件下载进度条的实现代码

    Android文件下载进度条的实现代码

    我们今天开始学习的是下载进度的实现。今天的这段代码是网上找的,自己做了些小改,通过模拟器测试。文件下载进度条控制(就是为了高清壁纸加个进度条),自己研究了好久,但是进度条只能显示缓存写入文件的进度,不能显示下载进度。找了好久,终于找到一段用的代码,所以记录下来,大家分享
    2013-01-01
  • Android 为ListView添加分段标头的方法

    Android 为ListView添加分段标头的方法

    下面小编就为大家带来一篇Android 为ListView添加分段标头的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • SimpleCommand框架介绍以及简单使用(一)

    SimpleCommand框架介绍以及简单使用(一)

    这篇文章主要为大家详细介绍了SimpleCommand框架以及简单使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Android控件之ListView用法实例详解

    Android控件之ListView用法实例详解

    这篇文章主要介绍了Android控件之ListView用法,以两则实例形式较为详细的分析了ListView控件显示信息列表时的具体使用技巧,需要的朋友可以参考下
    2015-09-09

最新评论