Android 开发照相功能实例详解

Android 照相

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

照相有几个步骤:

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

1. 声明权限

在manifest里面声明使用Camera:

<uses-feature android:name="android.hardware.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; }

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

时间: 2024-09-22 19:10:53

Android 开发照相功能实例详解的相关文章

Android拨打电话功能实例详解

本文实例分析了Android拨打电话功能.分享给大家供大家参考,具体如下: 打电话是手机的一个最基本的功能,现在android智能手机非常流行,里面有多种多样的精彩的手机功能,但是android手机如何实现打电话这个基本功能呢?现以实例说明如下.首先呈上程序: import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.content.Int

Java中的instanceof关键字在Android中的用法实例详解_java

在下面介绍Android中如何使用instanceof关键字开发更方便时,先来温习一下java中instanceof的概念. instanceof大部分的概念是这样定义的:instanceof是Java的一个二元操作符,和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据.举个栗子: String s = "I AM an Object!"; boolean isObj

Android的搜索框架实例详解_Android

基础知识 Android的搜索框架将代您管理的搜索对话框,您不需要自己去开发一个搜索框,不需要担心要把搜索框放什么位置,也不需要担心搜索框影响您当前的界面.所有的这些工作都由SearchManager类来为您处理(以下简称"搜索管理器"),它管理的Android搜索对话框的整个生命周期,并执行您的应用程序将发送的搜索请求,返回相应的搜索关键字. 当用户执行一个搜索,搜索管理器将使用一个专门的Intent把搜索查询的关键字传给您在配置文件中配置的处理搜索结果的Activity.从本质上讲

Android的搜索框架实例详解

基础知识 Android的搜索框架将代您管理的搜索对话框,您不需要自己去开发一个搜索框,不需要担心要把搜索框放什么位置,也不需要担心搜索框影响您当前的界面.所有的这些工作都由SearchManager类来为您处理(以下简称"搜索管理器"),它管理的Android搜索对话框的整个生命周期,并执行您的应用程序将发送的搜索请求,返回相应的搜索关键字. 当用户执行一个搜索,搜索管理器将使用一个专门的Intent把搜索查询的关键字传给您在配置文件中配置的处理搜索结果的Activity.从本质上讲

Android编程之SurfaceView实例详解_Android

本文实例讲述了Android编程之SurfaceView用法.分享给大家供大家参考,具体如下: 关于surfaceView相关知识: View和SurfaceView主要区别: 1. View只能在UI线程中刷新,而SurfaceView可以在子线程中刷新 2. SurfaceView可以控制刷新频率 SurfaceView几个重要的方法: 1. 继承SurfaceView 后调用getHolder()方法可以获取到mSurfaceHolder对象这个对于可以控制SurfaceView的绘制 2

《验收测试驱动开发:ATDD实例详解》—第2章2.3节表格化测试

2.3 表格化测试 验收测试驱动开发:ATDD实例详解 现在,随着第一个实例的自动化,Tony可以简单地重用第一个测试的步骤对剩下的经讨论会确定的实例进行自动化.作为第一步,他需要将Valet.feature里的场景转换为一个表格化的实例场景框架.为了完成这个目标,他把30分钟的时长用一个占位符< parking duration >代替,并且把期望的价格用占位符< parking costs >代替,并把这个场景标记为场景框架.Tony把实际数值放在场景框架下记录所有实例数据的表

《验收测试驱动开发:ATDD实例详解》—第2章2.1节第一个测试用例

第2章 代客泊车的测试自动化验收测试驱动开发:ATDD实例详解团队决定从表1-11所示的停车场故事的代客泊车的实例开始做.大家决定使用Cucumber1来实现测试自动化.Cucumber使用Ruby语言将实例的数据表示和被测试系统粘合在一起.在Cucumber中,每个测试集合被称为一个特性(feature),每个特性由一个单独的文本文件来描述. 为了使用Cucumber来实现测试自动化,我们需要一组特性来记录测试数据,一些用来描述与被测应用交互的测试步骤定义,以及一套环境设置信息. Tony脑海

《验收测试驱动开发:ATDD实例详解》目录—导读

版权声明验收测试驱动开发:ATDD实例详解Authorized translation from the English language edition, entitled: ATDD by Example: A Practical Guide to Acceptance Test-Driven Development, 9780321784155 by Markus Gärtner, published by Pearson Education, Inc., publishing as Ad

《验收测试驱动开发:ATDD实例详解》—第1章1.1节代客泊车

第一部分 机场停车场验收测试驱动开发:ATDD实例详解在这一部分,我们来看一个在线应用.通过GUI(图形用户界面)对网页进行自动化测试是当前比较成熟的技术之一,不过这种方法也有缺点.然而无论怎样,大多数从事在线应用开发的团队都能从这本书中找到一些如何驱动其测试的线索. 我们要做的是一个国际机场的停车费计算器.这个国际机场中有几种不同的停车场,而且停车费用随停车时长的不同也有所不同. 停车费计算器的业务规则太复杂,以至于无论团队怎样努力,最终可能也无法完成这个在线应用.团队成员觉得他们以前得到的需