1. 程式人生 > >Android:呼叫手機自己的照相機快速拍照

Android:呼叫手機自己的照相機快速拍照

1.需要寫SD許可權

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

注意:
不需要<uses-permission android:name=“android.permission.CAMERA” />許可權,如果添加了,會報錯。

2.在佈局檔案中使用一個Button呼叫照相機,並顯示在一個ImageView中

activity_quickly_photo.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="zs.camerademo.QuicklyPhoto">
    <Button
        android:id="@+id/btn"
        android:text="拍照"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <ImageView
        android:id="@+id/iv"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

3.在Activity:QuicklyPhoto.java中呼叫系統照相機

QuicklyPhoto.java

import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import java.io.File;
import java.io.FileOutputStream;
import java.util.UUID;

public class QuicklyPhoto extends AppCompatActivity implements View.OnClickListener{

    private ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quickly_photo);
        findViewById(R.id.btn).setOnClickListener(this);
        iv = findViewById(R.id.iv);
        //獲取寫SD卡許可權
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_GRANTED){
            System.out.println("OK");
        }else {
            ActivityCompat.requestPermissions(this,
                    new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
        }
    }

    @Override
    public void onClick(View v) {
        //用intent呼叫照相機拍照
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent,1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //設定iv為拍下的照片,並儲存到SD卡中
        if (requestCode == 1) {
            if (resultCode == Activity.RESULT_OK) {
                Bitmap cameraBitmap = (Bitmap) data.getExtras().get("data");
                iv.setImageBitmap(cameraBitmap);
                //儲存到sd卡中
                String name = "/sdcard/DCIM/"+ UUID.randomUUID()+".jpg";
                File pictureFile = new File(name);
                try {
                    FileOutputStream fos = new FileOutputStream(pictureFile);
                    //將bitmap轉換為png圖片
                    cameraBitmap.compress(Bitmap.CompressFormat.PNG,100,fos);
                    fos.flush();
                    fos.close();
                }catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

效果如下:

在這裡插入圖片描述
點選拍照進入拍照介面
在這裡插入圖片描述
拍照完成
在這裡插入圖片描述
在SD卡中儲存了這張照片
在這裡插入圖片描述

相關推薦

Android:呼叫手機自己照相機快速拍照

1.需要寫SD許可權 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 注意: 不需要<uses-permission android:n

Xamarin.Android 呼叫手機拍照功能

/// <summary> /// 拍照結束執行 /// </summary> /// <param name="requestCode"></param> /// <par

android 呼叫手機打電話 簡單實現 ,

首先看下佈局xml ,我的事一個button按鈕 點選 打電話 ,手機號是自己定義,這個你可以根據自己邏輯寫 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas

Android呼叫手機中的應用市場,實現評分功能

需求很簡單,通過手機中的按鈕開啟手機中安裝的應用市場,給自己的app評分,實現程式碼如下: String packageName = getPackageName(); //開啟所有安裝的市場 Uri uri = Uri.parse("market://details?id="+ p

html5呼叫手機攝像頭,實現拍照上傳功能

http://www.glve.net/html5-calls-cell-phone-cameras-to-achieve-photo-upload-feature.html 今天做手機網站,想實現手機掃描二維碼功能。首先實現在瀏覽器中呼叫手機攝像頭,實現拍照功能並且把拍下的照片顯示在頁面並上傳到伺服器

Android呼叫系統自帶的拍照功能出現Failure delivering result ResultInfo的問題

Intent getImageByCamera = new Intent(); getImageByCamera.setAction("android.media.action.IMAGE_CAPTURE"); xieWbActivity.startActivityForResult(getImageByCa

更換使用者頭像 呼叫手機相簿或相機拍照 選擇圖片並裁剪

佈局   一個ImageView用來顯示處理後的頭像,兩個按鈕  分別為呼叫相機、呼叫手機相簿 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=

android 呼叫系統照相機拍照後儲存到系統相簿,在系統圖庫中能看到

需求:  呼叫系統照相機進行拍照,並且儲存到系統相簿,呼叫系統相簿的時候能看到 系統相簿的路徑:String cameraPath= Environment.getExternalStorageDi

Android從本地獲取照片以及呼叫手機拍照功能的方法

本文主要介紹的是從手機中獲取照片並且壓縮後顯示在imageview或者呼叫手機相機拍照之後壓縮顯示在imageView中,具有很好的參考意義,同時兼顧了Android7.0對於呼叫手機相機的設定問題。有需要的可以借鑑一下: 1.XML佈局檔案程式碼 <?xml ve

android呼叫系統照相機拍照,並壓縮儲存在本地

1.首先拍照和儲存檔案肯定就需要申請許可權 <!-- 往SDCard寫入資料許可權 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_

android呼叫照相機拍照獲取照片並…

1.呼叫系統的照相機程式 Intent intent = newIntent(MediaStore.ACTION_IMAGE_CAPTURE);  startActivityForResult(intent,TAKE_PHOTO_WITH_DATA); 2.在onActivityResult中處理返回

Android 呼叫系統照相機拍照和錄影

專案的佈局相當簡單,只有一個Button: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

android 呼叫系統照相機拍照後剪裁

private static final int PHOTO_REQUEST_CAMERA = 1;// 拍照 private static final int PHOTO_REQUEST_GALLERY = 2;// 從相簿中選擇 private static fina

Android呼叫相機實現拍照並裁剪圖片,呼叫手機中的相簿圖片並裁剪圖片

在 Android應用中,很多時候我們需要實現上傳圖片,或者直接呼叫手機上的拍照功能拍照處理然後直接顯示並上傳功能,下面將講述呼叫相機拍照處理圖片然後顯示和呼叫手機相簿中的圖片處理然後顯示的功能,要想實現上傳功能,一般都是上傳到資料庫中,將imageView中的圖片取出來然

android呼叫相機拍照返回的照片大小太小,變得模糊

1、使用相機拍照預設情況下呼叫相機的方式: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAMERA_REQUEST_CODE);//CAMERA_REQ

android開發 19 呼叫手機的攝像頭錄影,並播放

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

H5 移動端 呼叫手機相機 進行拍照

<input type="file" onchange="inputChange;" accept="image/*" capture="camera"/> 使用的是 H5 input

解決Android呼叫系統相機連續拍照出現的記憶體溢位問題

記憶體溢位相信做過程式設計的人都知道一二,這裡說Android 記憶體溢位的問題:、問題描述:Android下的相機在獨自使用時,拍照沒有問題,通過我們的程式碼呼叫時,也正常,但是更換了不同廠商的平板,ROM由Android4.0變成了Android4.1後,拍照出現了Out

Android呼叫相機拍照後圖片橫向顯示的問題解決

最近在做一個專案的時候出現需要實時拍照然後作為頭像上傳伺服器的一個操作,按照以前的老專案老是出現拍照後對 圖片處理的問題上圖片橫向顯示,這樣切割出來的圖片也就是橫向了,找了很久才解決出來問題的根源,現在記錄下來, 以後遇到這個問題就不會出錯了。 1:一般相機拍完照後正常顯示在螢幕上如圖,

mono for android 獲取手機照片或拍照並裁剪儲存

using System; using Android.App; using Android.Content; using Android.Widget; using Android.OS; using Android.Graphics; using System.IO; names