Android自定义照相机的实例

  

<强> Android自定义照相机实现
  

  

近期小巫在学校有一个创新项目,也不是最近,是一个拖了很久的项目,之前一直没有去搞,最近因为要中期检查,搞得我跟小组成员一阵忙活,其实开发一款照相机软件并不太难、下面就是通过自定义的方式来实现手机照相的功能。
  

  

创建一个项目:FingerTakePicture

  

首先来搞一下界面:
  

        & lt; FrameLayout xmlns: android=" http://schemas.android.com/apk/res/android "   xmlns:工具=" http://schemas.android.com/tools "   android: id=癅 + id/FrameLayout1”   android: layout_width=" match_parent "   android: layout_height=癿atch_parent”比;   & lt; !——显示预览图形——比;   & lt; SurfaceView   android: id=癅 + id/surfaceView”   android: layout_width=" match_parent "   android: layout_height=" match_parent "/比;   & lt; !——相对布的局,放置两个按钮——比;   & lt;使用   android: id=癅 + id/buttonLayout”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android:可见性="了"   比;   & lt; !——拍照按钮——比;   & lt;按钮   android: id=癅 + id/takepicture”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android: layout_alignParentRight=" true "   android: layout_alignParentBottom=" true "   android:背景=" @drawable/btn_tabkepicture_selector”   android: onClick=" btnOnclick "/比;   & lt; ImageView   android: id=癅 + id/scalePic”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android: layout_alignParentLeft=" true "   android: layout_alignParentBottom=" true "   android: layout_marginLeft=" 5 dp "   android:背景=" @drawable/img_showpic_selector”   android: onClick=" imageClick "/比;   & lt;/RelativeLayout>   & lt;/FrameLayout>   之前      

界面效果(无法把预览给截屏下来滴):

  

 Android自定义照相机的实例

  

权限设置少不了:
  

        & lt;清单xmlns: android=" http://schemas.android.com/apk/res/android "   包=" com.wwj.finger "   android: versionCode=" 1 "   android: versionName=" 1.0 "比;      & lt; uses-sdk   android: minSdkVersion=" 4 "   android: targetSdkVersion=" 15 "/比;      & lt; uses-permission android: name=" android.permission。相机”/比;   & lt; !——在SDCard中创建与删除文件权限——比;   & lt; uses-permission android: name=" android.permission。MOUNT_UNMOUNT_FILESYSTEMS”/比;   & lt; !——往SDCard写入数据权限——比;   & lt; uses-permission android: name=" android.permission。WRITE_EXTERNAL_STORAGE”/比;   & lt;应用程序   android:图标=" @drawable/ic_launcher”   android: label=" @string/app_name”   android:主题=癅style/AppTheme”比;   & lt;活动   android: name=" .MainActivity "   android: label=" @string/title_activity_main”   比;   & lt; intent-filter>   & lt;行动android: name=" android.intent.action.MAIN "/比;      & lt;类别android: name=" android.intent.category.LAUNCHER "/比;   & lt;/intent-filter>   & lt;/activity>   & lt;活动   android: name=" .ShowPicActivity "   android: label=" @string/app_name”   android:主题=" @style/AppTheme”   面向android: configChanges=" | keyboardHidden”   祝辞& lt;/activity>   & lt;/application>      & lt;/manifest>   之前      

<强>主活动:
  

        包com.wwj.finger;      进口java.io.File;   进口java.io.FileOutputStream;   进口java.io.IOException;   进口java.text.SimpleDateFormat;   进口java.util.Date;         进口android.app.Activity;   进口android.content.Intent;   进口android.graphics.PixelFormat;   进口android.hardware.Camera;   进口android.hardware.Camera.PictureCallback;   进口android.os.Bundle;   进口android.os.Environment;   进口android.view.KeyEvent;   进口android.view.MotionEvent;   进口android.view.Surface;   进口android.view.SurfaceHolder;   进口android.view.SurfaceHolder.Callback;   进口android.view.SurfaceView;   进口android.view.View;   进口android.view.ViewGroup;   进口android.widget.Toast;/* *   *安卓手指拍照   *   * @author wwj   * @date 2013/4/29   */公开课MainActivity延伸活动{   私人视图布局;   私人相机相机;   私人相机。参数参数=零;      捆包=零;//声明一个包对象,用来存储数据      @Override   公共空间>   包com.wwj.finger;         进口android.app.Activity;   进口android.content.Intent;   进口android.graphics.Bitmap;   进口android.graphics.BitmapFactory;   进口android.graphics.Matrix;   进口android.os.Bundle;   进口android.widget.ImageView;      公开课ShowPicActivity延伸活动{   私人ImageView ivPic=零;//显示图片控件/* *   *活动在创建的时候回调的函数主要用来初始化一些变量   */@Override   保护无效onCreate(包savedInstanceState) {   super.onCreate (savedInstanceState);   setContentView (R.layout.showpic);   ivPic=(ImageView) findViewById (R.id.ivPic);   setImageBitmap (getImageFormBundle ());      }/* *   *将MainActivity传过来的图片显示在界面当中   *   * @param字节   */公共空间setImageBitmap (byte[]字节){   位图cameraBitmap=byte2Bitmap ();//根据拍摄的方向旋转图像(纵向拍摄时要需要将图像选择90度)   矩阵矩阵=new矩阵();   matrix.setRotate (MainActivity.getPreviewDegree ());   cameraBitmap=位图   .createBitmap (cameraBitmap 0 0, cameraBitmap.getWidth (),   cameraBitmap.getHeight(),矩阵,真实);   ivPic.setImageBitmap (cameraBitmap);   }/* *   *从包对象中获取数据   *   * @return   */公共byte [] getImageFormBundle () {   目的意图=getIntent ();   包数据=https://www.yisu.com/zixun/intent.getExtras ();=data.getByteArray byte[]字节(字节);   返回字节;   }/* *   *将字节数组的图形数据转换为位图   *   * @return   */私人位图byte2Bitmap () {   null   null   null   null   null   null   null   null   null   null   null

Android自定义照相机的实例