手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android 简单的照相机程序的实例代码
Android 简单的照相机程序的实例代码
摘要:复制代码代码如下:classsurfaceextendsSurfaceViewimplementsSurfaceHolder.Callbac...

复制代码 代码如下:

class surface extends SurfaceView implements SurfaceHolder.Callback {

SurfaceHolder sfholder;

Camera camera;

Bitmap bitmap;

public surface(Context context) {

super(context);

// TODO Auto-generated constructor stub

sfholder = getHolder();

sfholder.addCallback(this);

sfholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

}

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

// TODO Auto-generated method stub

Camera.Parameters parameters = camera.getParameters();

parameters.setPictureFormat(PixelFormat.JPEG);

parameters.setPreviewSize(320, 480);

parameters.setPictureSize(320, 480);

camera.setParameters(parameters);

camera.startPreview();

}

public void surfaceCreated(SurfaceHolder holder) {

// TODO Auto-generated method stub

try {

camera = Camera.open();

camera.setPreviewDisplay(sfholder);

} catch (Exception e) {

camera.release();

camera = null;

}

}

public void surfaceDestroyed(SurfaceHolder holder) {

// TODO Auto-generated method stub

camera.stopPreview();

camera = null;

}

//拍照

public void takePicture()

{

if (camera != null)

{

camera.takePicture(null, null, jpegCallback);

}

}

//拍照并且保存的回调函数

private PictureCallback jpegCallback = new PictureCallback() {

public void onPictureTaken(byte[] data, Camera camera) {

// TODO Auto-generated method stub

try

{

bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

File file = new File("/sdcard/camera1.jpg");

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));

bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);

bos.flush();

bos.close();

Canvas canvas= sfholder.lockCanvas();

canvas.drawBitmap(bitmap, 0,0, null);

sfholder.unlockCanvasAndPost(canvas);

}

catch(Exception e)

{

e.printStackTrace();

}

}

}

}

这个是一个拍照的类,使用的是SurfaceView来实现的,如果想要在一部分上显示,并且使用按钮操作的话,可以修改一下这个类,而且这个是拍照之后停留在拍照页面的,如果需要在拍照后不停留在拍照页面的,可以自行修改和添加参数。

此程序也演示了,如何在拍完照之后,将照片保存到SD卡上。

实际使用时的操作如何,使用的是按键进行拍照的,其实也可以改为使用按钮进行拍照的,只要对这个类进行简单的修改即可。调用如下:

复制代码 代码如下:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)

sf.takePicture();

return super.onKeyDown(keyCode, event);

}

要使用相机和操作SD卡,则需要添加以下权限:

复制代码 代码如下:

android:name="Android.permission.WRITE_EXTERNAL_STORAGE">

第一条是可以使用扩展存储设备的权限

第二条是可以使用照相机设备

如果没有这两条权限的话,会报错,具体错误可以在DDMS中查看 。欢迎交流!

希望对大家有所帮助 !

此平台使用提Android2.2 V8的系统,如果使用1.5或者是其它的,权限可能会不一样!

当然更好的方法是首先检查SD卡是否存在,此程序中没有进行检测,因为我只是在练习相机的使用。

检测代码如下:

复制代码 代码如下:

if (Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {

File sdcardPath = Environment.getExternalStorageDirectory();

setTitle(sdcardPath.getName()); //将SD卡路径名字设置为标题,只是为了让大家看的更明白些

} else {

Toast.makeText(RecordTest.this, "没有SD卡", 1000).show();

}

【Android 简单的照相机程序的实例代码】相关文章:

Android实现长按back键退出应用程序的方法

Android中的Button自定义点击效果实例代码

Android实现TextView中文字链接的4种方式介绍及代码

Android 如何收集已发布程序的崩溃信息

Android 四种动画效果的调用实现代码

android下拉刷新ListView的介绍和实现代码

Android顶部工具栏和底部工具栏的简单实现代码

android 线性布局LinearLayout实例代码

Android键盘显示与隐藏代码

Android读取用户号码,手机串号,SIM卡序列号的实现代码

精品推荐
分类导航