热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android开发照相功能实例详解

这篇文章主要介绍了Android开发照相功能实例详解的相关资料,需要的朋友可以参考下

Android 照相

在android中,照相功能系统已经提供,在app中可以直接使用。当手机从android play里面下载有照相功能的应用时, 会判断手机是否支持。不支持,不给予下载。

照相有几个步骤:

1. 声明权限
2. 使用Camera照相
3. 显示图片

1. 声明权限

在manifest里面声明使用Camera:

 

2. 使用Camera照相

在Activity中,调用Camera应用

private void dispatchTakePictureIntent(int actionCode) { 
  Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
  startActivityForResult(takePictureIntent, actionCode); 
} 

3. 显示图片

在使用Camera照相成功之后,会返回回来,要显示图片就必须先获取图片,然后显示出来。

在onActivityResult方法中取得

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
    Bundle extras = intent.getExtras(); 
    Bitmap mImageBitmap = (Bitmap) extras.get("data"); 
    mImageView.setImageBitmap(mImageBitmap); 

想要保存图片到制定目录,启动Camera应用时,需要指定文件

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
File f = null; 
       
      try { 
        f = setUpPhotoFile();  
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); 
      } catch (IOException e) { 
        e.printStackTrace(); 
        f = null; 
      } 

private File createImageFile() throws IOException { 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "IMG_"+ timeStamp + "_"; 
    File albumF = getAlbumDir(); 
    File imageF = File.createTempFile(imageFileName, "jpg", albumF); 
    return imageF; 
  } 
 
 
  private File setUpPhotoFile() throws IOException { 
     
    File f = createImageFile(); 
    mCurrentPhotoPath = f.getAbsolutePath(); 
     
    return f; 
  } 
private File getAlbumDir() { 
    File storageDir = null; 
 
 
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { 
       
      storageDir = mAlbumStorageDirFactory.getAlbumStorageDir(getAlbumName()); 
 
 
      if (storageDir != null) { 
        if (! storageDir.mkdirs()) { 
          if (! storageDir.exists()){ 
            Log.d("CameraSample", "failed to create directory"); 
            return null; 
          } 
        } 
      } 
       
    } else { 
      Log.v(getString(R.string.app_name), "External storage is not mounted READ/WRITE."); 
    } 
     
    return storageDir; 
  } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


推荐阅读
  • 解决Ant编译时出现的非法字符错误
    在进行Java项目的Ant构建过程中,有时会遇到由平台差异引发的编译错误。本文将详细探讨一种常见的错误——'error: illegal character'及其解决方案。 ... [详细]
  • 本文详细介绍如何在iOS项目中集成和使用KTVHTTPCache音视频缓存插件,包括Podfile配置、初始化设置及实际应用中的使用方法。 ... [详细]
  • 深入探讨PHP中的输出缓冲技术(Output Buffering)
    本文深入解析了PHP中输出缓冲(Output Buffering)的原理及其在Web开发中的应用,特别是如何通过输出缓冲技术有效管理HTTP头部信息,提高代码的灵活性与健壮性。 ... [详细]
  • 深入理解Java NIO:基础概念与原理
    本文介绍了Java NIO(New Input/Output)的基本概念,包括同步与异步、阻塞与非阻塞等核心理念,以及NIO相对于传统IO的优势和应用场景。通过详细解析这些概念,帮助读者更好地理解和掌握NIO的使用。 ... [详细]
  • 本问题涉及对一个非负整数数组执行加一操作。数组以最高位数字在前的方式存储,每个数组元素仅包含一位数字。假设该整数没有前导零,除非该整数为0。 ... [详细]
  • 本文详细介绍了 Freemarker 模板引擎中的 include 指令,以及如何利用该指令从其他文件中引入内容,以增强页面的模块化和可维护性。 ... [详细]
  • 本文提供了关于如何在 Java 中使用 `com.amazonaws.services.kinesis.model.StreamDescription.getRetentionPeriodHours()` 方法的详细说明,并附带了多个实际代码示例。 ... [详细]
  • 本文介绍了两种有效的方法来检查Android应用是否拥有特定权限,如媒体读写权限(media_rw)。通过这些方法,开发者和安全人员可以更好地了解应用的行为,确保其不会滥用权限。 ... [详细]
  • 深入理解Kafka架构
    本文将详细介绍Kafka的内部工作机制,包括其工作流程、文件存储机制、生产者与消费者的具体实现,以及如何通过高效读写技术和Zookeeper支持来确保系统的高性能和稳定性。 ... [详细]
  • 本文详细介绍了ejabberd中的验证码服务、接收器以及服务器间通信的监督者和工作进程,包括它们的启动方式和主要功能。 ... [详细]
  • 解决Android测试包与正式版APK冲突的方法
    本文介绍了一种有效的方法来避免Android测试包APK覆盖正式版APK的问题,主要通过调整build.gradle文件中的applicationId以及修改APK名称来实现。这种方法特别适用于需要频繁进行小范围功能更新的项目。 ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 深入解析Android多媒体框架
    本文详细探讨了Android多媒体框架的构成及其各组件的功能,旨在为开发者提供深入理解与应用的指导。 ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
  • 本文介绍了ThinkPHP框架的基本概念及其主要特性。作为一款遵循Apache许可证的开源框架,ThinkPHP不仅支持多种平台和Web服务器,还提供了丰富的功能以适应不同的开发需求。 ... [详细]
author-avatar
sa沙沙ssa
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有