欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android启动相机拍照并返回图片

程序员文章站 2023-12-10 20:40:58
具体实现过程请看下面代码: 简单的调用了一下系统的拍照功能 代码如下所示: //拍照的方法 private void opentakephoto(){...

具体实现过程请看下面代码:

简单的调用了一下系统的拍照功能

代码如下所示:

//拍照的方法

 private void opentakephoto(){
  /**
  * 在启动拍照之前最好先判断一下sdcard是否可用
  */
  string state = environment.getexternalstoragestate(); //拿到sdcard是否可用的状态码
  if (state.equals(environment.media_mounted)){   //如果可用
   intent intent = newintent("android.media.action.image_capture");
   startactivityforresult(intent,take_photo);
  }else {
   toast.maketext(settingactivity.this,"sdcard不可用",toast.length_short).show();
  }
 }

拍完照片后,我们肯定视需要拿到我们已经拍好的照片去进行一些操作(例如,换头像、发带图状态等等),这时候我们就需要重写onactivityresult()方法,去拿到我们拍好的照片去进行操作,我们可以通过下面两种方式去拿到我们的照片,他的加过就封装在了我们的intent里面,我们只需要取出来即可:

@override
 protected void onactivityresult(int requestcode, int resultcode, intentdata) {
  super.onactivityresult(requestcode, resultcode, data);
  if (data!= null) {
   switch (requestcode) {
    case take_photo: //拍摄图片并选择
     //两种方式 获取拍好的图片
     if (data.getdata() != null|| data.getextras() != null){ //防止没有返回结果
      uri uri =data.getdata();
      if (uri != null) {
       photo =bitmapfactory.decodefile(uri.getpath()); //拿到图片
      }
      if (photo == null) {
       bundle bundle =data.getextras();
       if (bundle != null){
        photo =(bitmap) bundle.get("data");
       } else {
        toast.maketext(getapplicationcontext(), "找不到图片",toast.length_short).show();
       }
      }
      //处理图片
      //裁剪图片
     }
     break;

以上代码附有注释,相信大家都可以看得吧,有哪些不明白的地方欢迎各位朋友给留言,我会在第一时间和大家取得联系的。谢谢!