博客
关于我
安卓手机直接调用拍照
阅读量:416 次
发布时间:2019-03-05

本文共 1651 字,大约阅读时间需要 5 分钟。

安卓直接原生调用拍照方法

今天,我遇到了一个让人头疼的需求:在H5页面中直接调用手机的原生相机功能。作为一名前端开发人员,我必须承认,这个问题让我一度陷入了苦恼。虽然最终通过朋友的帮助找到了解决方案,但整个过程确实让我感到相当吃力。

需求背景

前几天,我遇到了一个项目需求:在H5页面中直接调用手机的原生相机功能。听起来并不复杂,但实际操作起来却让我脑袋疼痛不已。作为一个前端开发人员,我对安卓开发一窍不通,更遑论直接调用原生功能了。更有甚者,公司目前没有专职的安卓开发人员,这让我感到更加无助和压力重重。

问题分析

这个需求的提出确实让我感到困惑。作为一个前端开发人员,我习惯于使用前端框架和技术来实现各种功能。但是,直接调用原生相机功能显然超出了我的能力范围。我不知道该如何开始,更不知道该用什么方法来实现这个功能。于是,我只能向朋友求助,希望能从他们那里获取一些线索。

解决方法

经过一番调研和朋友的帮助,我终于找到了一个可行的解决方案。具体来说,我需要使用安卓的原生API来实现相机功能。这意味着我需要编写一些安卓代码来调用相机应用程序,并将获取到的图片数据返回到前端进行显示。

以下是实现过程的关键步骤:

  • 创建Intent:首先,我需要创建一个Intent对象,指定使用MediaStore.ACTION_IMAGE_CAPTURE动作。这将用于启动相机应用程序。

  • 检查相机应用:在启动相机之前,我需要检查是否有相机应用可用。如果没有相机应用,直接返回即可避免应用闪退。

  • 启动相机:如果相机应用存在,我将启动相机应用,并指定一个返回代码。

  • 处理返回数据:当用户从相机返回时,我需要检查返回的数据是否包含图片。如果包含,我将从返回的intent中提取图片数据,并将其显示在页面上。

  • 代码示例

    以下是实现相机调用功能的关键代码示例:

    // 打开相机IntentIntent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 检查是否有相机应用if (takePhotoIntent.resolveActivity(getPackageManager()) != null) {    startActivityForResult(takePhotoIntent, REQ_CODE);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == REQ_CODE && resultCode == RESULT_OK) {        Bundle extras = data.getExtras();        Bitmap bitmap = (Bitmap) extras.get("data");        mPicture.setImageBitmap(bitmap);    }}

    运行结果

    经过上述代码的实现,我成功地将原生相机功能接入到H5页面中。用户点击按钮后,相机应用将自动启动,并返回截取的图片数据。图片数据通过intent传递回前端,然后通过JavaScript接口将其显示在页面上。

    总结

    通过这次项目,我学到了许多宝贵的经验。首先,我认识到作为一名前端开发人员,了解和学习安卓开发的基础知识也是至关重要的。其次,我也明白了,面对技术难题时,向身边有经验的朋友求助是非常重要的。

    然而,最终的结果并没有达到领导的预期。他们希望通过H5页面直接调用原生相机功能,而不是简单地提供一个拍照按钮和一个图片展示区域。这个需求的落地过程让我感到相当吃力,但也让我对安卓开发有了更深入的了解。

    总之,这次经历让我意识到,作为一名全栈开发人员,不仅要掌握前端技术,还需要对后端和移动开发有所了解。只有这样,才能更好地应对各类开发需求。

    转载地址:http://zgiwz.baihongyu.com/

    你可能感兴趣的文章
    Mysql 分页
    查看>>
    Mysql 分页语句 Limit原理
    查看>>
    MySql 创建函数 Error Code : 1418
    查看>>
    MySQL 创建新用户及授予权限的完整流程
    查看>>
    mysql 创建表,不能包含关键字values 以及 表id自增问题
    查看>>
    mysql 删除日志文件详解
    查看>>
    mysql 判断表字段是否存在,然后修改
    查看>>
    MySQL 到底能不能放到 Docker 里跑?
    查看>>
    mysql 前缀索引 命令_11 | Mysql怎么给字符串字段加索引?
    查看>>
    mysql 协议的退出命令包及解析
    查看>>
    mysql 取表中分组之后最新一条数据 分组最新数据 分组取最新数据 分组数据 获取每个分类的最新数据
    查看>>
    mysql 四种存储引擎
    查看>>
    MySQL 基础模块的面试题总结
    查看>>
    MySQL 备份 Xtrabackup
    查看>>
    mysql 多个表关联查询查询时间长的问题
    查看>>
    mySQL 多个表求多个count
    查看>>
    mysql 多字段删除重复数据,保留最小id数据
    查看>>
    MySQL 多表联合查询:UNION 和 JOIN 分析
    查看>>
    MySQL 大数据量快速插入方法和语句优化
    查看>>
    mysql 如何给SQL添加索引
    查看>>