博客
关于我
安卓手机直接调用拍照
阅读量: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 Order By实现原理分析和Filesort优化
    查看>>
    mysql problems
    查看>>
    mysql replace first,MySQL中处理各种重复的一些方法
    查看>>
    MySQL replace函数替换字符串语句的用法(mysql字符串替换)
    查看>>
    Mysql Row_Format 参数讲解
    查看>>
    mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
    查看>>
    MySQL Server 5.5安装记录
    查看>>
    mysql slave 停了_slave 停止。求解决方法
    查看>>
    MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
    查看>>
    mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
    查看>>
    mysql Timestamp时间隔了8小时
    查看>>
    Mysql tinyint(1)与tinyint(4)的区别
    查看>>
    mysql union orderby 无效
    查看>>
    mysql where中如何判断不为空
    查看>>
    mysql workbench6.3.5_MySQL Workbench
    查看>>
    MySQL Workbench安装教程以及菜单汉化
    查看>>
    MySQL Xtrabackup 安装、备份、恢复
    查看>>
    mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
    查看>>
    MySQL _ MySQL常用操作
    查看>>
    MySQL – 导出数据成csv
    查看>>