《Android手机摄像头编程入门1》由会员分享,可在线阅读,更多相关《Android手机摄像头编程入门1(8页珍藏版)》请在金锄头文库上搜索。
1、Android手机摄像头编程入门实例:窈窈照相机,功能很简单,就是点击程序弹出照相预览界面,点击相机按钮完成照相功能,所照相片会存储在手机存储卡根目录。1、创建一个项目 Lesson36_Camera ,主程序文件为 MainActivity.java2、AndroidManifest.xml 中设置屏幕为横屏,并且声明摄像头和存储卡的使用权限,具体代码如下:view sourceprint?01020304050607080910111213141516173、本例中不需要布局文件main.xml,因为本例中的UI组建都是动态添加上去的。4、最后MainActivity.java的代码如下:
2、view sourceprint?001packagebasic.android.lesson36;002003importjava.io.BufferedOutputStream;004importjava.io.File;005importjava.io.FileOutputStream;006importjava.io.IOException;007importjava.util.Calendar;008importjava.util.Locale;009010importandroid.app.Activity;011importandroid.content.Context;012i
3、mportandroid.graphics.Bitmap;013importandroid.graphics.BitmapFactory;014importandroid.graphics.PixelFormat;015importandroid.hardware.Camera;016importandroid.os.Bundle;017importandroid.text.format.DateFormat;018importandroid.util.Log;019importandroid.view.KeyEvent;020importandroid.view.SurfaceHolder;
4、021importandroid.view.SurfaceView;022importandroid.view.Window;023importandroid.view.WindowManager;024importandroid.widget.FrameLayout;025importandroid.widget.TextView;026importandroid.widget.Toast;027028publicclassMainActivityextendsActivity 029030privateCameraView cv;031/准备一个相机对象032privateCamera m
5、Camera =null;033/准备一个Bitmap对象034privateBitmap mBitmap =null;035036/准备一个保存图片的PictureCallback对象037publicCamera.PictureCallback pictureCallback =newCamera.PictureCallback() 038039publicvoidonPictureTaken(byte data, Camera camera) 040Log.i(yao,onPictureTaken);041Toast.makeText(getApplicationContext(),正在
6、保存, Toast.LENGTH_LONG).show();042/用BitmapFactory.decodeByteArray()方法可以把相机传回的裸数据转换成Bitmap对象043mBitmap = BitmapFactory.decodeByteArray(data,0, data.length);044/接下来的工作就是把Bitmap保存成一个存储卡中的文件045File file =newFile(/sdcard/YY+newDateFormat().format(yyyyMMdd_hhmmss, Calendar.getInstance(Locale.CHINA) +.jpg);
7、046try047file.createNewFile();048BufferedOutputStream os =newBufferedOutputStream(newFileOutputStream(file);049mBpress(Bitmap.CompressFormat.PNG,100, os);050os.flush();051os.close();052Toast.makeText(getApplicationContext(),图片保存完毕,在存储卡的根目录, Toast.LENGTH_LONG).show();053catch(IOException e) 054e.prin
8、tStackTrace();055056057058;059060/Activity的创建方法061Override062publicvoidonCreate(Bundle savedInstanceState) 063super.onCreate(savedInstanceState);064065/窗口去掉标题066requestWindowFeature(Window.FEATURE_NO_TITLE);067/窗口设置为全屏068getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.L
9、ayoutParams.FLAG_FULLSCREEN);069/设置窗口为半透明070getWindow().setFormat(PixelFormat.TRANSLUCENT);071072/提供一个帧布局073FrameLayout fl =newFrameLayout(this);074075/创建一个照相预览用的SurfaceView子类,并放在帧布局的底层076cv =newCameraView(this);077fl.addView(cv);078079/创建一个文本框添加在帧布局中,我们可以看到,文字自动出现在了SurfaceView的前面,由此你可以在预览窗口做出各种特殊效果080TextView tv =newTextView(this);081tv.setText(请按/相机/按钮拍摄);082fl.addView(tv);083084/设置Activity的根内容视图085setContentView(fl);086087088089/