1. 程式人生 > >Android——呼叫攝像頭並自動對焦拍…

Android——呼叫攝像頭並自動對焦拍…

import java.io.FileOutputStream;

import android.content.Context;
import android.hardware.Camera;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class CameraView extends SurfaceView implements SurfaceHolder.Callback, Camera.PictureCallback {
private SurfaceHolder holder;
private Camera camera;
private
boolean af;

public CameraView(Context context) {
//建構函式 super(context);

holder
= getHolder();//生成Surface Holder holder.addCallback(this);

holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//指定Push Buffer }

public
void surfaceCreated(SurfaceHolder holder) {//Surface生成事件的處理
try {
camera
= Camera.open();//攝像頭的初始化 camera.setPreviewDisplay(holder);
}
catch (Exception e) {
}
}

@Override
public
void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {//Surface改變事件的處理 Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(width, height);
camera.setParameters(parameters);
//設定引數 camera.startPreview();//開始預覽 }

public
void surfaceDestroyed(SurfaceHolder holder) {//Surface銷燬時的處理 camera.setPreviewCallback(null);
camera.stopPreview();
camera.release();
camera
=null;
}

@Override
public
boolean onTouchEvent(MotionEvent event) {//螢幕觸控事件if (event.getAction() == MotionEvent.ACTION_DOWN) {//按下時自動對焦 camera.autoFocus(null);
af
=true;
}
if (event.getAction() == MotionEvent.ACTION_UP && af ==true) {//放開後拍照 camera.takePicture(null, null, this);
af
=false;
}
returntrue;
}

public
void onPictureTaken(byte[] data, Camera camera) {//拍攝完成後儲存照片try {
String path
= Environment.getExternalStorageDirectory() +"/test.jpg";
data2file(data, path);
}
catch (Exception e) {
}
camera.startPreview();
}

private
void data2file(byte[] w, String fileName) throws Exception {//將二進位制資料轉換為檔案的函式 FileOutputStream out =null;
try {
out
=new FileOutputStream(fileName);
out.write(w);
out.close();
}
catch (Exception e) {
if (out !=null)
out.close();
throw e;
}
}

}

相關推薦

Android——呼叫攝像頭自動

import java.io.FileOutputStream; import android.content.Context; import android.hardware.Camera; import android.os.Environment; import android.view.Motion

關於Android Camera2 API 的自動的坑

https://www.jianshu.com/p/280e5301b7b9 一、使用。關於Camera2的API使用,參考Google官方的例子: Camera2Basic Camera2Raw Camera2Video 這是一手資料,配合官方的資料理解Camera2 API的底層原理:

Android 攝像頭自動的幾點注意

今天在做手機攝像頭自動對焦時出了一些問題,這裡做個筆記記錄一下。 注意事項:1、初始化Camera的程式碼中要加入下面兩行程式碼 mCamera.autoFocus(myAutoFocusCallback); mCamera.cancelAutoFocus(); 示例:

如何實現android手機攝像頭的的自動

       發現好多人都在解決一個問題那就是,如何實現android相機的自動對焦,而且是連續自動對焦的。當然直接呼叫系統相機就不用說了,那個很簡單的。下面我們主要來看看如如何自己實現一個相機,並且實現自動連續對焦。      根據網上的資料有如下幾種:        

Android自定義相機預覽開始時自動

      如果是呼叫系統相機不會存在對焦問題,要實現自己的相機在開始的時候自動自動對焦,只需要新增兩句程式碼:     parameters.setFocusMode(Camera.Paramet

android手動實現相機功能,自動+手動

android自定義相機實現自動對焦和手動對焦: 不呼叫系統相機,因為不同的機器開啟相機呈現的介面不統一也不能滿足需求。 所以為了讓程式在不同的機器上呈現出統一的介面,並且可以根據需求進行佈局,做了此demo。 程式實現程式碼如下: import java.io.File;

[Android程式設計心得] Camera(OpenCV)自動和觸控的實現

import java.util.ArrayList; import java.util.List; import org.opencv.android.JavaCameraView; import android.R.integer; import android.content.Context; im

Vuforia 攝像頭自動問題測試

           在利用Unity3D以及Vuforia開發AR專案 問題: 攝像頭無法聚焦 前提知識: 在Vuforia焦點模式下的行為(1.5版以上),描述如下: FOCUS_MODE_NORMAL -通過裝置提供的預設的對焦模式 FOCUS_MODE_TRIGGE

android實現自動拍照

android樣式和主題(style&theme) android中主題也是用於為應用定義顯示風格,它的定義和樣式的定義相同,如下: <?xmlversion="1.0" encoding="utf-8"?> <resources> <

android呼叫攝像頭拍照顯示

1. 得到一個button並新增事件,先建立一個檔案,然後用Intent通過 “android.media.action.IMAGE_CAPTURE”,呼叫攝像頭。 File outputImage = new File(Environment.getExternalSto

Android 使Camera預覽清晰,迴圈自動處理

我們經常使用SurfaceView顯示Camera預覽畫面,但畫面基本都不清晰。主要是因為沒有自動對焦,而自動對焦觸發是通過mCamera.autoFocus(autoFocusCallback);這個

2、ROS實時檢測在線IP數自動IP做限速

ROS1、將在線IP自動添加到地址列表2、實時檢測在線IP數3、自動對IP做限速實時檢測在線IP數:local s 0:foreach i in=[/ip firewall address-list find list=Online] do={:set s ($s+1)}:log warning ("

MikroTik RouterOS獲取在線終端和在線IP總數自動IP做限速(轉)

nload bsp target sim span 自動添加 blog nbsp find 1、將在線IP自動添加到地址列表 2、實時檢測在線IP數 :local s 0 :foreach i in=[/ip firewall addr

谷歌瀏覽器呼叫攝像頭拍照

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ini

matlab呼叫攝像頭儲存成幀的形式

% function camera vid = videoinput('winvideo',1, 'YUY2_1920x1080'); set(vid,'ReturnedColorSpace','rgb'); preview(vid); tic; i = 1; while 1   &nbs

Python OpenCV 呼叫攝像頭截圖儲存

0x01 OpenCV安裝   通過命令pip install opencv-python 安裝 pip install opencv-python 0x02  示例 import cv2 cap = cv2.VideoCapture(0) #開啟攝像

Android 呼叫攝像頭

    【1】AndroidManifest新增許可權   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 【2】intent呼

windows環境呼叫攝像頭拍照或識別二維碼

1.場景  boss需要一個windows環境識別攝像頭裝置,開啟裝置,能夠掃碼並返回值的一個類庫,經過一上午緊密鑼鼓,搞完了。當然了,自己是不可能也不會去寫基礎類庫的,這輩子都不可能的,只是根據需求做一定程度的業務封裝使用(站在巨人的肩膀上!)   2.程式 (

Android Camera高階特性——手動

Android Camera 系列目錄 1. 前言 對焦可以說是相機最基本的功能。 Android Camera提供了多種對焦方式: FOCUS_MODE_AUTO:個人認為這個名字起的有點隨意 FOCUS_MODE_CONTINUOUS_PICTURE :

Chrome 谷歌瀏覽器呼叫攝像頭拍照上傳 java示例

html頁面: <!DOCTYPE html> <html> <head> <title>html5呼叫攝像頭實現拍照</title> <meta charset="utf-8"> <me