您好!欢迎来到源码码网

Android调用相机进行拍照

  • 源码教程
  • 来源:源码码网
  • 编辑:admin
  • 时间:2021-01-13 17:34
  • 阅读:686

Android开发中,借助于 Intent可以方便地调用 Android 系统的照相机程序进行拍照。但是需要声明摄像头的使用权限,即在 AndroidManifest.xml 文件中添加如下代码:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera"/>

实例 CameraDemo 演示了通过 Intent 调用系统的拍照程序并返回照片的过程,该实例运行效果如图 1 所示。

CameraDemo实例运行效果

图 1  CameraDemo实例运行效果

当单击“启动摄像头”按钮时,启动 Android系统自带的照相机应用程序进行拍照,并将拍摄的照片显示到 ImageView 组件中。

实例 CameraDemo 中的 main.xml 代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  3. android:layout_width="fill_parent"

  4. android:layout_height="fill_parent"

  5. android:orientation="vertical">


  6. <Button

  7. android:id="@+id/button1"

  8. android:layout_width="wrap_content"

  9. android:layout_height="wrap_content"

  10. android:text="@string/camera" />


  11. <ImageView

  12. android:id="@+id/imageview"

  13. android:layout_width="wrap_content"

  14. android:layout_height="wrap_content" />

  15. </LinearLayout>

在实例 CameraDemo 中的 AndroidManifest.xml 代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  3. package="introduction.android.receivemessagedemo"

  4. android:versionCode="1"

  5. android:versionName="1.0">


  6. <uses-sdk android:minSdkVersion="14" />


  7. <uses-permission android:name="android.permission.CAMERA" />

  8. <uses-feature android:name="android.hardware.camera" />

  9. <application

  10. android:allowBackup="true"

  11. android:icon="@mipmap/ic_launcher"

  12. android:label="@string/app_name"

  13. android:roundIcon="@mipmap/ic_launcher_round"

  14. android:supportsRtl="true"

  15. android:theme="@style/AppTheme">

  16. <activity android:name=".MainActivity">

  17. <intent-filter>

  18. <action android:name="android.intent.action.MAIN" />

  19. <category android:name="android.intent.category.LAUNCHER" />

  20. </intent-filter>

  21. </activity>

  22. </application>


  23. </manifest>

在实例 CameraDemo 中的 CameraDemoActivity.java 代码如下:


  1. import android.app.Activity;

  2. import android.content.Intent;

  3. import android.graphics.Bitmap;

  4. import android.os.Bundle;

  5. import android.provider.MediaStore;

  6. import android.util.Log;

  7. import android.view.View;

  8. import android.view.View.OnClickListener;

  9. import android.widget.Button;

  10. import android.widget.ImageView;


  11. public class MainActivity extends Activity {

  12. /**

  13.     * Called when the activity is first created.

  14.     */

  15. private ImageView imageview;

  16. private Button btn;


  17. @Override

  18. public void onCreate(Bundle savedInstanceState) {

  19. super.onCreate(savedInstanceState);

  20. setContentView(R.layout.activity_main);

  21. imageview = (ImageView) findViewById(R.id.imageview);

  22. btn = (Button) findViewById(R.id.button1);

  23. btn.setOnClickListener(new OnClickListener() {

  24. public void onClick(View v) {

  25. // TODO Auto-generated method stub

  26. try {

  27. Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

  28. startActivityForResult(i, 1);

  29. } catch (Exception e) {

  30. Log.d("cameraDemo", e.toString());

  31. }

  32. }

  33. });

  34. }


  35. protected void onActivityResult(int requestcode, int resultCode, Intent data) {

  36. try {

  37. if (requestcode != 1) {

  38. return;

  39. }

  40. super.onActivityResult(requestcode, resultCode, data);

  41. Bundle extras = data.getExtras();

  42. Bitmap bitmap = (Bitmap) extras.get("data");

  43. imageview.setImageBitmap(bitmap);

  44. } catch (Exception e) {

  45. Log.d("cameraDemo", e.toString());

  46. }

  47. }

  48. }

在启动摄像头程序时,因为要传回拍摄的图像,所以调用了 Activity.startActivityForResult(Intent intent, int requestCode) 方法。

当 startActivityForResult() 方法启动的 Activity 正常结束时,会自动返回发出请求的 Activity,并且该方法会返回对应的 requestCode 值给 onActivityResult(int requestcode, int resultCode,Intent data) 方法,借此可以在请求 Activity 和发出请求的 Activity 之间进行数据传递。本实例借助于这一特点传回了 Android 系统照相机程序拍摄的照片。

特别声明:
1、如无特殊说明,内容均为本站原创发布,转载请注明出处;
2、部分转载文章已注明出处,转载目的为学习和交流,如有侵犯,请联系客服删除;
3、编辑非《源码码网》的文章均由用户编辑发布,不代表本站立场,如涉及侵犯,请联系删除;
全部评论(0)
推荐阅读
  • 常用测试压力工具使用介绍
  • 常用测试压力工具使用介绍
  • ab 是 ApacheBench 工具的缩写,它是一个HTTP压力测试工具。让我详细说明如何测试:1. 安装ApacheBenchWindows系统:方法一:安装XAMPP或WAMP(自带ab)下载地址:https://www.apachefriends.org/zh_cn/index.html安装后,ab工具在:C:xamppapacheinab.exe方法二:使
  • 开发工具
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-01-13 20:27
  • 阅读:59
  • 工程项目一体化自动管理软件解决方案
  • 工程项目一体化自动管理软件解决方案
  • 1.项目概述1.1项目背景在工程建设行业数字化转型浪潮下,传统项目管理面临信息孤岛、协同困难、进度不可控、成本超支等痛点。本方案旨在构建一个覆盖工程项目全生命周期、全参与方、全业务流程的一体化智能管理平台。1.2解决方案愿景打造数据驱动、智能协同、风险预警、自动执行的工程大脑,实现:管理流程自动化率≥80%项目协同效率提升40%成本偏差率降低至±3%以内安全事故发生率降低60%1.3目标用户矩阵┌───────────────┬
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-01-09 11:26
  • 阅读:169
  • 车辆管理系统需求文档与技术架构PC端+小程序
  • 车辆管理系统需求文档与技术架构PC端+小程序
  • 第一部分:需求文档1.项目概述1.1项目背景为企事业单位、车队运营商、租赁公司等提供一套完整的车辆全生命周期管理解决方案,实现车辆管理数字化、智能化。1.2项目目标建立车辆从购置到报废的全流程管理体系实现用车申请、调度、监控、结算的闭环管理通过数据分析优化车辆使用效率降低车辆运维成本20%以上1.3用户角色矩阵┌──────────────┬─────────────────────────────┬──────────────
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-01-09 11:11
  • 阅读:157
  • 智慧农业/渔业物联网系统需求文档
  • 智慧农业/渔业物联网系统需求文档
  • 智慧农业/渔业物联网系统需求文档文档版本: V1.0项目目标: 构建一个集环境智能监测、设备自动化控制、生长模型分析、溯源管理与远程指挥于一体的综合物联网管理平台,实现降本增效、提质增产、风险预警与品牌增值。1.系统总体概述1.1核心价值: 数据驱动决策,解放人力,实现农业/渔业生产的精准化、自动化与智能化。1.2用户角色:生产员/养殖员: 现场巡视、接收告警、执行设备手动控制、查看实时环境
  • 行业资讯
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-01-09 11:04
  • 阅读:68
  • 程序员AI编程工具推荐
  • 程序员AI编程工具推荐
  • AI编程工具是当前开发者的“副驾驶”,能够极大提升开发效率。以下我将从通用型、代码专用型、垂直领域型以及开源/自部署型几个维度为您分类推荐,并附上它们的核心特点和适用场景,帮助您选择。一、通用型AI对话助手(编程是核心能力之一)这类工具本质是“更懂代码的ChatGPT”,适合处理广泛的编程问题、解释代码、生成文档等。ChatGPT(GPT-4/4o)简介:行业标杆,尤其在GPT-4版本下,代码理解和生成能力极强。优点:上下文能力强,
  • 源码教程
  • 来源:源码码网
  • 编辑:源码码网
  • 时间:2026-01-09 10:56
  • 阅读:96
联系客服
源码代售 源码咨询 技术开发 联系客服
029-84538663
手机版

扫一扫进手机版
返回顶部