Android調(diào)用系統(tǒng)攝像頭拍照并顯示在ImageView上
簡(jiǎn)介
現(xiàn)在市面上的apk只要涉及用戶中心都會(huì)有頭像,而且這個(gè)頭像也是可自定義的,有的會(huì)采取讀取相冊(cè)選擇其中一張作為需求照片,另一種就是調(diào)用系統(tǒng)攝像頭拍照并獲取即時(shí)照片,本博文就是講述如何調(diào)用攝像頭拍照并顯示在指定的控件上。
先來看看效果圖

由于這里我用的是模擬器沒有攝像頭,所以拍照是黑的,至于里面2個(gè)紅色圓圈那是Genymotion自帶的標(biāo)志。
實(shí)現(xiàn)起來比較簡(jiǎn)單:
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="開啟相機(jī)" 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>
布局文件最外層一個(gè)垂直排列的LinearLayout,里面放著一個(gè)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一鍵注入代碼,免去手動(dòng)findViewById()并設(shè)置button的點(diǎn)擊事件,對(duì)ButterKnife不熟悉的同志可以查看Android Studio使用ButterKnife和Zelezny,點(diǎn)擊事件觸發(fā)后調(diào)用系統(tǒng)的action開啟攝像頭拍照界面,在這里面我們要注意startActivityForResult必須使用這個(gè)方法來回調(diào),第一個(gè)參數(shù)為intent,第二個(gè)參數(shù)為自定義的Int型標(biāo)志,重寫onActivityResult(),判斷requestCode == CAMERA_REQUEST && resultCode == RESULT_OK,最后獲取Bitmap,設(shè)置給imageview。
博文內(nèi)容比較簡(jiǎn)單,但很實(shí)用,不積跬步無以至千里,希望對(duì)需要的朋友有一定的幫助。
完整的參考代碼
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Androidstudio調(diào)用攝像頭拍照并保存照片
- Android調(diào)用手機(jī)攝像頭拍照和錄音功能
- Android實(shí)現(xiàn)調(diào)用攝像頭拍照并存儲(chǔ)照片
- Android實(shí)現(xiàn)調(diào)用攝像頭拍照與視頻功能
- Android實(shí)現(xiàn)攝像頭拍照功能
- Android調(diào)用攝像頭拍照開發(fā)教程
- Android實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能
- Android 開發(fā)隨手筆記之使用攝像頭拍照
- Android調(diào)用外置攝像頭的方法
- Android實(shí)現(xiàn)控制攝像頭拍照
相關(guān)文章
Android應(yīng)用開發(fā)SharedPreferences存儲(chǔ)數(shù)據(jù)的使用方法
SharedPreferences是Android中最容易理解的數(shù)據(jù)存儲(chǔ)技術(shù),實(shí)際上SharedPreferences處理的就是一個(gè)key-value(鍵值對(duì))SharedPreferences常用來存儲(chǔ)一些輕量級(jí)的數(shù)據(jù)2012-11-11
Android基于ViewPager+Fragment實(shí)現(xiàn)左右滑屏效果的方法
這篇文章主要介紹了Android基于ViewPager+Fragment實(shí)現(xiàn)左右滑屏效果的方法,結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)滑屏效果的布局與滑動(dòng)功能相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
Android實(shí)現(xiàn)向本地寫入一個(gè)XML文件和解析XML文件
這篇文章主要介紹了Android實(shí)現(xiàn)向本地寫入一個(gè)XML文件和解析XML文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
在Android項(xiàng)目中使用AspectJ的詳細(xì)攻詻
AspectJ是實(shí)現(xiàn)AOP的其中一款框架,內(nèi)部通過處理字節(jié)碼實(shí)現(xiàn)代碼注入,文章給大家提到AspectJ基礎(chǔ)語法和集成AspectJ的方式,對(duì)AspectJ在android中使用教程感興趣的朋友跟隨小編一起看看吧2021-06-06
Android自動(dòng)化獲取卡頓信息的實(shí)現(xiàn)方法
自動(dòng)化獲取卡頓信息就像給App裝 “行車記錄儀” —— 實(shí)時(shí)記錄主線程的“駕駛狀態(tài)”,一旦發(fā)現(xiàn)“急剎車”(卡頓),立刻保存現(xiàn)場(chǎng)(堆棧),事后回看錄像(日志)精準(zhǔn)定位問題,本文給大家介紹了Android自動(dòng)化獲取卡頓信息的實(shí)現(xiàn)方法,需要的朋友可以參考下2025-02-02
Android文件下載進(jìn)度條的實(shí)現(xiàn)代碼
我們今天開始學(xué)習(xí)的是下載進(jìn)度的實(shí)現(xiàn)。今天的這段代碼是網(wǎng)上找的,自己做了些小改,通過模擬器測(cè)試。文件下載進(jìn)度條控制(就是為了高清壁紙加個(gè)進(jìn)度條),自己研究了好久,但是進(jìn)度條只能顯示緩存寫入文件的進(jìn)度,不能顯示下載進(jìn)度。找了好久,終于找到一段用的代碼,所以記錄下來,大家分享2013-01-01
Android 為L(zhǎng)istView添加分段標(biāo)頭的方法
下面小編就為大家?guī)硪黄狝ndroid 為L(zhǎng)istView添加分段標(biāo)頭的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
SimpleCommand框架介紹以及簡(jiǎn)單使用(一)
這篇文章主要為大家詳細(xì)介紹了SimpleCommand框架以及簡(jiǎn)單使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10

