package com.Aina.Android;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.util.Log;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
* com.Aina.Android Pro_Camera
*
* @author Aina.huang E-mail: 674023920@qq.com
* @version 创建时间:2010 Jul 7, 2010 2:50:15 PM 类说明
*/
public class PreView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder holder = null;
private Camera mCamera = null;
private Bitmap mBitmap = null;
public PreView(Context context) {
super(context);
Log.i("TAG", "PreView()");
// TODO Auto-generated constructor stub
holder = this.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Log.i("TAG", "surfaceChanged");
// TODO Auto-generated method stub
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);//设置图片格式
parameters.setPreviewSize(320, 480);//设置尺寸
// parameters.setPictureSize(320, 480);//设置分辨率
mCamera.setParameters(parameters);
mCamera.startPreview();//开始预览
}
public void surfaceCreated(SurfaceHolder holder) {
Log.i("TAG", "surfaceCreated");
// TODO Auto-generated method stub
mCamera = Camera.open();//启动服务
try {
mCamera.setPreviewDisplay(holder);//设置预览
} catch (IOException e) {
mCamera.release();//释放
mCamera = null;
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
Log.i("TAG", "surfaceDestroyed");
// TODO Auto-generated method stub
mCamera.stopPreview();//停止预览
mCamera = null;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_DPAD_CENTER){
if(mCamera !=null){
mCamera.takePicture(null, null,pic);
}
}
return super.onKeyDown(keyCode, event);
}
//拍照后输出图片
public Camera.PictureCallback pic = new Camera.PictureCallback(){
public void onPictureTaken(byte[] data, Camera camera) {
// TODO Auto-generated method stub
mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
File f = new File(android.os.Environment.getExternalStorageDirectory()+"/camera1.jpg");
try {
BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(f));
mBitmap.compress(Bitmap.CompressFormat.JPEG, 80, os);
os.flush();
os.close();
Canvas canvas = holder.lockCanvas();
canvas.drawBitmap(mBitmap, 0, 0, null);
holder.unlockCanvasAndPost(canvas);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
}
package com.Aina.Android;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
public class Test extends Activity {
/** Called when the activity is first created. */
private PreView pv = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
pv = new PreView(this);
setContentView(pv);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
return pv.onKeyDown(keyCode, event);
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Aina.Android"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Test"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
</manifest>
分享到:
相关推荐
android4.0照相机源码camera源码
android整个Camera模块的应用层源代码,供大家学习。
自己总结的Android Camera系统架构及源码分析,以framework和hal为主。
android 简易camera相机,可以实现简单的拍照 & preview功能
这是github的项目源码地址。Android Studio2.3.3调用系统的Camera实现拍照功能,并将照片保存到本地内存卡中
1.首先android6.0以上版本要动态申请相机和文件读写权限 2.废话不啰嗦,上代码: /** * 摄像头画面采集界面 */ public class DistinguishActivity extends BaseActivity implements SurfaceHolder.Callback, ...
android 照相机源码 Camera源码
android 的自定义照相机开发,目前使用调用预览与设置偏好值,不过还没有保存图片
delphi xe5 android 调用照相机摄像头拍照片camera,简单非常实用的原代码,无特定组件!
以前上传的照相机源代码忘记把jar包加上了 抱歉 现在上传上去 有需要的可以继续下载
Android4.42 Camera2源码不可独立运行
android 照相机 demo android 照相机 demo android 照相机 demo android 照相机 demo android 照相机 demo android 照相机 demo
android4.0 照相机源代码 camera 照相机源代码
主要介绍了Android自定义照相机Camera出现黑屏的解决方法,分析了黑屏出现的原因及参考解决方法,需要的朋友可以参考下
Android自定义照相机 预览拍照 切换前后置摄像头 源码
android4.0的原生照相机源代码,原生camera代码。
如果不能使用,请修改根目录下的project.property的android:target为你当前有的target(不知道怎么改的同学可以从8到21一个个数字去试哦) 程序实现点击屏幕后聚焦拍照功能,并把图片存入sd卡camera目录下。但打开时无...
android 调用照相机拍照,其中对对焦进行了一定的优化
android 照相机的实现 以及 一部分图像处理 图像调节 色调 饱和度 透明度
Android照相机触屏对焦例子