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自定义View弧线进度控件

    Android自定义View弧线进度控件

    这篇文章主要为大家详细介绍了Android自定义View弧线进度控件,点击开始按钮时,逐渐的出现进度,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Android PickerView滚动选择器的使用方法

    Android PickerView滚动选择器的使用方法

    这篇文章主要为大家详细介绍了Android PickerView滚动选择器的使用方法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • Android实现可播放GIF动画的ImageView

    Android实现可播放GIF动画的ImageView

    这篇文章主要为大家详细介绍了Android实现可播放GIF动画的ImageView,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 在Android中使用Anntation来代替ENUM的方法

    在Android中使用Anntation来代替ENUM的方法

    本篇文章主要介绍了在Android中使用Anntation来代替ENUM的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Android利用Badge组件实现未读消息小红点

    Android利用Badge组件实现未读消息小红点

    在 App 的运营中,活跃度是一个重要的指标,日活/月活……为了提高活跃度,就发明了小红点。这一篇,来介绍一个徽标(Badge)组件,能够快速搞定应用内的小红点,希望对大家有所帮助
    2023-01-01
  • Android 实现桌面未读角标

    Android 实现桌面未读角标

    本文主要介绍了Android实现桌面未读角标的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • Android模糊处理实现图片毛玻璃效果

    Android模糊处理实现图片毛玻璃效果

    这篇文章主要介绍了Android模糊处理实现图片毛玻璃效果,需要的朋友可以参考下
    2016-02-02
  • Android开发中synchronized的三种使用方式详解

    Android开发中synchronized的三种使用方式详解

    这篇文章主要介绍了Android开发中synchronized的三种使用方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-04-04
  • 使用genymotion访问本地上Tomcat上数据的方法

    使用genymotion访问本地上Tomcat上数据的方法

    下面小编就为大家带来一篇使用genymotion访问本地上Tomcat上数据的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Android实现手写签名

    Android实现手写签名

    这篇文章主要为大家详细介绍了Android实现手写签名的具体实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04

最新评论