展会信息港展会大全

android调用摄像头偷拍demo 无声 无预览 一件拍照存储
来源:互联网   发布日期:2015-09-29 10:11:43   浏览:2767次  

导读:结合精简并优化了一下常用的拍照方法,实现了无预览拍照,下面是一个工具类import java.io.File;import java.io.FileOutputStream;impor...

结合精简并优化了一下常用的拍照方法,实现了无预览拍照,下面是一个工具类

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import android.annotation.SuppressLint;

import android.annotation.TargetApi;

import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Matrix;

import android.graphics.Bitmap.CompressFormat;

import android.graphics.Bitmap.Config;

import android.hardware.Camera;

import android.hardware.Camera.PictureCallback;

import android.media.AudioManager;

import android.os.Build;

import android.util.Log;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.SurfaceHolder.Callback;

import com.cn.zongyi.safebox.Constants;

import com.cn.zongyi.safebox.MyApplication;

import com.cn.zongyi.safebox.ui.NewBuildSafeBoxActivity;

import com.cn.zongyi.safebox.ui.R;

public class CameraUtil {

private SurfaceView sView; //画布视图

private SurfaceHolder surfaceHolder; //画布Holder

public Camera camera; // 定义系统所用的照相机

private boolean isPreview = false;// 是否在浏览中

private AudioManager manager; //声音管理

private int volumn; //声音值

private String picPath = "";

private NewBuildSafeBoxActivity context;

public CameraUtil(Context context) {

this.context = (NewBuildSafeBoxActivity) context;

}

@SuppressWarnings("deprecation")

public void initCameraFirst() {

manager = (AudioManager) context

.getSystemService(Context.AUDIO_SERVICE);

manager.setStreamMute(AudioManager.STREAM_SYSTEM, false);

volumn = manager.getStreamVolume(AudioManager.STREAM_SYSTEM);

if (volumn != 0) {

// 如果需要静音并且当前未静音(muteMode的设置可以放在Preference中)

manager.setStreamVolume(AudioManager.STREAM_SYSTEM, 0,

AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

}

sView = (SurfaceView) ((Activity) context).findViewById(R.id.sView);

if (MyApplication.invadeMonitor()) {

// 获得SurfaceView的SurfaceHolder

surfaceHolder = sView.getHolder();

// 为surfaceHolder添加一个回调监听器

surfaceHolder.addCallback(new Callback() {

public void surfaceChanged(SurfaceHolder holder, int format,

int width, int height) {

}

public void surfaceCreated(SurfaceHolder holder) {

// surface被创建时打开摄像头

initCamera();

}

// surface摧毁时释放摄像头

public void surfaceDestroyed(SurfaceHolder holder) {

// 如果camera不为null ,释放摄像头

if (camera != null) {

// 7.结束程序时,调用Camera的StopPriview()结束取景预览,并调用release()方法释放资源.

if (isPreview)

camera.stopPreview();

camera.release();

camera = null;

}

}

});

// 设置该SurfaceView自己不维护缓冲

surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

}

@TargetApi(Build.VERSION_CODES.GINGERBREAD)

@SuppressLint("NewApi")

private void initCamera() {

if (!isPreview) {

int cameraCount = 0;

Camera.CameraInfo cameraInfo = new Camera.CameraInfo();

cameraCount = Camera.getNumberOfCameras(); // get cameras number

if (cameraCount == 1) {

// camera = Camera.open();// 调用Camera的open()方法打开相机。

Log.e("TAG", "无前置摄像头");

} else {

Log.e("TAG", "__________4");

for (int camIdx = 0; camIdx

布局文件看一下

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/new_build_resize_layout"

android:background="#ffffff"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentRight="true"

android:layout_alignParentTop="true"

android:orientation="vertical"

android:paddingLeft="10dp"

android:paddingRight="10dp"

tools:ignore="UselessParent" >

android:layout_width="fill_parent"

android:layout_height="50dp">

android:id="@+id/sView"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#ffffff"/>

android:id="@+id/et_pwd"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:ems="10"

android:hint="@string/please_enter_a_password"

android:inputType="number"

android:maxLength="@integer/edit_length"

android:password="true"

tools:ignore="Deprecated" >

android:layout_width="match_parent"

android:layout_height="wrap_content" >

android:id="@+id/ckb_show_pwd"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="@string/show_pwd" />

android:id="@+id/next_step_linear"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_marginBottom="50dp"

android:layout_marginLeft="30dp"

android:layout_marginRight="30dp" >

android:id="@+id/next_step"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/new_build_safe_box_new_step_button" />

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港