基本信息
源码名称:android 调用系统相机
源码大小:1.60M
文件格式:.rar
开发语言:Java
更新时间:2015-07-10
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
package com.example.t5camera;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.ImageFormat;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.os.Bundle;
import android.app.Activity;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.Menu;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
public class MainActivity extends Activity implements SurfaceHolder.Callback{
private int screenWidth; //屏幕的宽
private int screenHeight;//屏幕的高
private SurfaceView sufaceViewCamera;
private SurfaceHolder sufaceHolder;
//摄像头对象
private Camera camera ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 不显示标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
// 全屏显示
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
//获取屏幕的宽和高
//获取窗体管理对象
WindowManager wm = getWindowManager();
//通过窗体管理对象,获取显示器对象
Display display = wm.getDefaultDisplay();
//创建用于封装宽和高的矩阵对象
DisplayMetrics displayMetrics = new DisplayMetrics();
//通过显示器对象,获取其宽和高,并保存至DisplayMetrics矩阵对象
display.getMetrics(displayMetrics);
screenWidth = displayMetrics.widthPixels;
screenHeight = displayMetrics.heightPixels;
//获取用于显示预览的SurfaceView
sufaceViewCamera = (SurfaceView)findViewById(R.id.surfaceViewCamera);
sufaceHolder = sufaceViewCamera.getHolder();
sufaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); //兼容android2.2等早期版本
sufaceHolder.addCallback(this);
//拍照
//绑定SurfaceView的单击事件
sufaceViewCamera.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//启动摄像头的自动对焦
camera.autoFocus(new AutoFocusCallback() {
@Override
public void onAutoFocus(boolean success, Camera camera) {
//自动对焦完成
if(success){
//通过摄像头,采集照片
camera.takePicture(
new ShutterCallback() {
@Override
public void onShutter() {
// TODO Auto-generated method stub
}
},
new PictureCallback(){
@Override
public void onPictureTaken(byte[] arg0,
Camera arg1) {
//保存原始图片信息
}
},
new PictureCallback(){
@Override
public void onPictureTaken(byte[] data,
Camera camera) {
try {
//创建Bitmap图片对象
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
//创建图片文件
File bitMapFile = new File(MainActivity.this.getExternalFilesDir(null).getPath() "/" System.currentTimeMillis() ".jpg");
//输出流
FileOutputStream fos = new FileOutputStream(bitMapFile);
//将图片对象中的图片信息,通过输出流,写入图片文件
bitmap.compress(CompressFormat.JPEG, 100, fos);
//关闭输出流
fos.close();
//停止预览
camera.stopPreview();
//重新开始预览
camera.startPreview();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
);
}
}
});
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//SurfaceView改变
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
//预览
//SurfaceView创建
@Override
public void surfaceCreated(SurfaceHolder arg0) {
//打开后置摄像头
camera = Camera.open(0);
camera.setDisplayOrientation(90);
//设置预览照片参数
try {
//创建摄像头参数集合
Camera.Parameters params = camera.getParameters();
//设置预览尺寸
params.setPreviewSize(screenWidth, screenHeight);
//设置预览fps范围
params.setPreviewFpsRange(4, 10);
//设置图片格式
params.setPictureFormat(ImageFormat.JPEG);
params.set("jpeg-quality", 85);
//设置图片大小
params.setPictureSize(screenWidth, screenHeight);
//设置预览控件(SurfaceHolder--->SurfaceView)
camera.setPreviewDisplay(sufaceHolder);
//开始预览
camera.startPreview();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//SurfaceView销毁
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
}
}