Android实现拍照及图片显示效果

  

本文实例为大家分享Android拍了照及图片显示的具体代码,供大家参考,具体内容如下

  

<强> 1,功能声明
  

  

当应用需要使用相机,NFC等外设时,需要在AndroidManifest。xml中进行声明。
  这样,当设备缺少这些外设时,应用商店的安装程序可以拒绝安装设备。

  

声明示例代码如下:

        & lt; uses-feature android: name=" android.hardware.camera2 "   & lt; !——需要为假时,不强制要求设备支持该功能,比;   & lt; !——如果不设置该值,一旦设备不支持相机,就不能安装该应用——比;   android:要求=" false "/比;   之前      

<强> 2,创建指向文件的文件对象
  

  

拍摄的照片可以存放到设备的外部存储区。

  

Android为不同的应用分配的独有的存储区域,同时按照存储数据的类型对存储区域做了进一步地划分。
  设置照片存储区域的代码示例如下所示:

        公共文件getPhotoFile(犯罪犯罪){//获取应用对应的存储照片的外部存储路径   文件externalFilesDir=mContext   .getExternalFilesDir (Environment.DIRECTORY_PICTURES);      如果(externalFilesDir==null) {   返回null;   }//创建指向文件的文件对象   返回新文件(externalFilesDir crime.getPhotoFilename ());   }   .............//每个犯罪对应的文件名   公共字符串getPhotoFilename () {   返回“IMG_”+ getId () .toString () +“jpg”;   }   之前      

<强> 3,触发拍照
  

  

可以使用MediaStore.ACTION_CAPTURE_IMAGE类型的意图触发拍的照,示例代码如下:

        mPhotoButton=(ImageButton) v.findViewById (R.id.crime_camera);//隐式意图触发相机拍的照   最终目的captureImageIntent=new意图(MediaStore.ACTION_IMAGE_CAPTURE);//mPhotoFile保存着上文创建的指向指定地址的文件//此处判断是否有能够处理隐式意图的组件   布尔canTakePhoto=mPhotoFile !=null   ,,captureImageIntent.resolveActivity (packageManager) !=零;   mPhotoButton.setEnabled (canTakePhoto);      如果(canTakePhoto) {//得到文件文件对应的Uri地址   Uri Uri=Uri.fromFile (mPhotoFile);//将Uri地址存入到意图中,相机拍照得到的图像将会存入到该Uri地址对应的文件里   captureImageIntent.putExtra (MediaStore。EXTRA_OUTPUT uri);   }      mPhotoButton。setOnClickListener(新View.OnClickListener () {   @Override   公共空间>   @Override   公共空间>//在具体视图未加载前,无法得到视图的实际大?/因此根据屏幕尺寸,使用估算值进行缩放   公共静态位图getScaledBitmap (String路径,活动活动){   点大?new点();   .getDefaultDisplay activity.getWindowManager () () .getSize(大小);      返回getScaledBitmap(路径,大小。x, size.y);   }      公共静态位图getScaledBitmap (String路径,int destWidth, int destHeight) {   BitmapFactory。选择选项=new BitmapFactory.Options ();   选项。inJustDecodeBounds=true;//按照正常尺寸解析文件   BitmapFactory.decodeFile(路径,选择);//得到原始文件的宽和高   浮动srcWidth=options.outWidth;   浮动srcHeight=options.outHeight;//inSampleSize表示水平/竖直抽样比//例如,inSampleSize为2时,水平和数值均在原始基础上,每2个点抽取1个点//于是,新图的大小变为原来的1/4   int inSampleSize=1;   如果(srcHeight比;destHeight | | srcWidth祝辞destWidth) {   如果(srcWidth比;srcHeight) {   inSampleSize=数学。轮(srcHeight/destHeight);   其他}{   inSampleSize=数学。轮(srcWidth/destWidth);   }   }      选择=new BitmapFactory.Options ();   选项。inSampleSize=inSampleSize;//按新的抽样比,重新解析文件   返回BitmapFactory.decodeFile(路径,选择);   }   之前      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Android实现拍照及图片显示效果