现在的App不可避免的要使用到手机的相机功能

首先我们先来介绍下最简单的一个实现方式,启动系统自带的Activity

上代码:

public void openCamera() {
Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
path=getOutputMediaFile();
i.putExtra(MediaStore.EXTRA_OUTPUT,path);//使用自定义的路径进行保存图片
startActivityForResult(i,FLAG_CAMERA_RESULT);
}
private Uri getOutputMediaFile(){ 
      File path= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
      File file=new File(path,"App_Note");
      if(!file.exists()){
          boolean flag= file.mkdirs();
       }
      String timestamp=new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
      File mediaFile=new File(file.getAbsolutePath()+File.separator+"img_"+timestamp+".jpg");
      return Uri.fromFile(mediaFile);
}
    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==FLAG_CAMERA_RESULT){
if(resultCode==RESULT_OK){
Bitmap bitmap= BitmapFactory.decodeFile(path.getPath());
list.add(bitmap);
adapter.notifyDataSetChanged();
}
}else if(requestCode==FLAG_GALLERY_RESULT){
if(resultCode==RESULT_OK){ try {
InputStream is= getContentResolver().openInputStream(data.getData());
Bitmap bitmap= BitmapFactory.decodeStream(is);
list.add(bitmap);
adapter.notifyDataSetChanged(); } catch (FileNotFoundException e) {
e.printStackTrace();
}
Log.i("com.loo",data.getData()+"");
} }
}

注意:

如果不设置MediaStore.EXTRA_OUTPUT,系统将会在默认的地址进行保存,并在onActivityResult的data数据中返回,

 Bitmap bm= (Bitmap) data.getExtras().get("data");//bitmap是被压缩过的

暂时不知道怎么获取存储的地址:试过使用data.getData()还是返回null。。。。。坑啊

如果设置了,返回的data即为NULL。

打开相册代码:

public  void openGallery(){
Intent i=new Intent(Intent.ACTION_GET_CONTENT);
i.setType("image/*");
startActivityForResult(i,FLAG_GALLERY_RESULT);
}

注意:一定要设置type,否则会报错。

android Camera使用(一)的更多相关文章

  1. 【Android】Android Camera原始帧格式转换 —— 获取Camera图像(一)

     概述: 做过Android Camera图像采集和处理的朋友们应该都知道,Android手机相机采集的原始帧(RawFrame)默认是横屏格式的,而官方API有没有提供一个设置Camera采集图像的 ...

  2. android camera setMeteringArea详解

    摘要: 本文为作者原创,未经允许不得转载:原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/5802814.html setMeteringArea() ...

  3. Android — Camera聚焦流程

    原文  http://www.cnphp6.com/archives/65098 主题 Android Camera.java autoFocus()聚焦回调函数 @Override public v ...

  4. android camera setParameters failed 类问题分析总结

    在 monkey test 测试中出现了一例 RuntimeException ,即 setParameters failed. LOG显示为:09-01 18:47:17.348 15656 156 ...

  5. Android Camera 相机程序编写

    Android Camera 相机程序编写 要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置,在AndroidManifest.xml中加上使用设备相机的权限: <uses-per ...

  6. Android Camera 使用小结

    Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Inten ...

  7. Android Camera拍照 压缩

    http://www.linuxidc.com/Linux/2014-12/110924.htm package com.klp.demo_025; import java.io.ByteArrayI ...

  8. Android Camera 流程梳理

    毕业已经快两年了,一直没有写博客的习惯,这是第一篇,以后要慢慢养成这个习惯.毕业之后一直在做相机,先简单的梳理下Android Camera的流程. Android Camera 是一个client/ ...

  9. 【转】android camera(四):camera 驱动 GT2005

    关键词:android  camera CMM 模组 camera参数  GT2005 摄像头常见问题 平台信息: 内核:linux系统:android 平台:S5PV310(samsung exyn ...

  10. 【转】android camera(三):camera V4L2 FIMC

    关键词:android  camera CMM 模组 camera参数  CAMIF   V4L2  平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos ...

随机推荐

  1. SIP 状态码

    SIP应答消息状态码 与功能 类型 状态码 状态说明临时应答(1XX) 100 Trying 正在处理中180 Ringing 振铃181 call being forwarder 呼叫正在前向182 ...

  2. 单源最短路径——Floyd算法

    正如我们所知道的,Floyd算法用于求最短路径.Floyd算法可以说是Warshall算法的扩展,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3). Floyd算法的基本思想如下:从任意 ...

  3. (C#) 调用执行批处理文件

    Task:  在Windows的Service里面定时的调用执行一个批处理文件. private ApplicationOutput RunCommandOnPC(string executableP ...

  4. 由csdn开源项目评选中闹出刷票问题想到投票程序的设计

    帖子<#CSDN刷票门# 有没有人在恶意刷票?CSDN请告诉我!用24小时监控数据说话!> http://www.cnblogs.com/sanshi/p/3155946.html 网站投 ...

  5. 玩转sublime(一)——玩转全局文件搜索/替换

    这个快捷键好记,一般的搜索是Ctrl+f,多了一个Shift就是全局搜索

  6. [Android Studio 1A] – 插件

    关于android studio插件的使用,一直没有好的机会来研究,最近项目开发中需要统计项目的代码行数,所以就需要一个代码统计的插件.我选择的是 Statistic,下载地址是:https://pl ...

  7. C++ 常见崩溃问题分析

    一.前言 从事自动化测试平台开发的编程实践中,遭遇了几个程序崩溃问题,解决它们颇费了不少心思,解决过程中的曲折和彻夜的辗转反侧却历历在目,一直寻思写点东西,为这段难忘的经历留点纪念,总结惨痛的教训带来 ...

  8. Spark1.6 DataSets简介

    Apache Spark提供了强大的API,以便使开发者为使用复杂的分析成为了可能.通过引入SparkSQL,让开发者可以使用这些高级API接口来从事结构化数据的工作(例如数据库表,JSON文件),并 ...

  9. Linux命令(15)查看系统版本信息

    一,查看Linux内核版本命令(两种方法) 1.cat /proc/version [user@fgejjw7Z home]$ cat /proc/version Linux version -.el ...

  10. git的使用(3) 多分支情况下的pull

    当你存在多个分支的时候,你需要pull下来分支上面的内容,你需要指定分支进行同步命令: git pull origin branch (branch 是你的分支的名字)