登录 立即注册
安币:

查看: 255|回复: 6

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

[复制链接]

329

主题

736

帖子

739

安币

手工艺人

发表于 2018-5-16 14:59:40 | 显示全部楼层 |阅读模式

            

        简介

        现在市面上的apk只要涉及用户中心都会有头像,而且这个头像也是可自定义的,有的会采取读取相册选择其中一张作为需求照片,另一种就是调用系统摄像头拍照并获取即时照片,本博文就是讲述如何调用摄像头拍照并显示在指定的控件上。

        先来看看效果图

        

        由于这里我用的是模拟器没有摄像头,所以拍照是黑的,至于里面2个红色圆圈那是genymotion自带的标志。

        实现起来比较简单:

        activity_main.xml

[Java] 查看源文件 复制代码
<

        布局文件最外层一个垂直排列的linearlayout,里面放着一个button和imageview控件。

        mainactivity.class

[Java] 查看源文件 复制代码
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。

        博文内容比较简单,但很实用,不积跬步无以至千里,希望对需要的朋友有一定的帮助。

        完整的参考代码






        

451

主题

959

帖子

1975

安币

手工艺人

发表于 2018-5-16 18:12:46 | 显示全部楼层
楼主威武,以后多发干货,多办活动~!

0

主题

9190

帖子

2425

安币

Android大神

Rank: 6Rank: 6

发表于 2018-5-16 22:50:38 | 显示全部楼层
楼主威武,以后多发干货,多办活动~!

2

主题

9225

帖子

2493

安币

Android大神

Rank: 6Rank: 6

发表于 2018-5-17 03:27:36 | 显示全部楼层
感谢大神~

92

主题

9392

帖子

1994

安币

Android大神

Rank: 6Rank: 6

发表于 2018-5-17 09:28:35 | 显示全部楼层
支持楼主,支持安卓巴士!

7

主题

9735

帖子

2347

安币

Android大神

Rank: 6Rank: 6

发表于 2018-5-17 15:53:33 | 显示全部楼层
感谢分享,安卓巴士有你更精彩:lol

325

主题

769

帖子

729

安币

手工艺人

发表于 2018-5-17 20:53:11 | 显示全部楼层
楼主威武,以后多发干货,多办活动~!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表