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

 更新时间:2015年10月27日 11:26:08   投稿:mrr  
Android启动相机拍照并返回图片,事先定义拍照方法,在启动拍照之前先判断内存是否可用,通过重写onactivityresult()方法,获取拍好的图片。对下文感兴趣的朋友可以参考下

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

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

代码如下所示:

//拍照的方法

 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;

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

相关文章

  • android:TextView简单设置文本样式和超链接的方法

    android:TextView简单设置文本样式和超链接的方法

    这篇文章主要介绍了android:TextView简单设置文本样式和超链接的方法,涉及TextView常见文字属性的相关操作技巧,需要的朋友可以参考下
    2016-08-08
  • 使用RecyclerView实现瀑布流高度自适应

    使用RecyclerView实现瀑布流高度自适应

    这篇文章主要为大家详细介绍了使用RecyclerView实现瀑布流高度自适应,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Android 两种启动模式的实例详解

    Android 两种启动模式的实例详解

    这篇文章主要介绍了Android 两种启动模式的实例详解的相关资料,Activity的两种启动模式:FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT ,需要的朋友可以参考下
    2017-08-08
  • 使用Kotlin+RocketMQ实现延时消息的示例代码

    使用Kotlin+RocketMQ实现延时消息的示例代码

    这篇文章主要介绍了使用Kotlin+RocketMQ实现延时消息的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Android自定义WheelView地区选择三级联动

    Android自定义WheelView地区选择三级联动

    这篇文章主要为大家详细介绍了Android自定义WheelView地区选择三级联动的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android学习项目之简易版微信为例(二)

    Android学习项目之简易版微信为例(二)

    这篇文章主要以简易版微信为例,实现简易版微信的登陆、注册界面的编写与简单交互,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Android快速分析apk工具aapt的使用教程

    Android快速分析apk工具aapt的使用教程

    这篇文章主要介绍了Android快速分析apk工具aapt的使用教程,本文讲解了什么是aapt、主要用法、使用aapt、查看apk的基本信息、查看基本信息、查看应用权限等内容,需要的朋友可以参考下
    2015-04-04
  • Android开发Jetpack组件ViewModel使用讲解

    Android开发Jetpack组件ViewModel使用讲解

    这篇文章主要介绍了Android Jetpack架构组件 ViewModel详解,ViewModel类让数据可在发生屏幕旋转等配置更改后继续存在,ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据,感兴趣可以来学习一下
    2022-08-08
  • Android中Service的全面总结

    Android中Service的全面总结

    这篇文章主要全面总结了Android中Service的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Android入门之onTouchEvent触碰事件的示例详解

    Android入门之onTouchEvent触碰事件的示例详解

    今天给大家带来的是TouchListener与OnTouchEvent的比较,以及多点触碰的知识点! 文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-12-12

最新评论