android摄像头获取图像——第一弹
http://www.cnblogs.com/mengyan/archive/2012/09/01/2666636.html
安卓读取视频的几种方式:
详细讲述请参考网址:http://www.cnblogs.com/over140/archive/2011/11/16/2251344.html
一、准备工作
1.用户权限
首先要确保在manifest中声明了对摄像头的使用及其他相关的feature;
manifest中定义:
(1)Camera权限——应用程序必须对请求摄像头的使用权限,代码:
<uses-permission android:name="android.permission.CAMERA" />
(2) Camera Feature——应用程序必须同时声明对camera feature的使用,代码:
<uses-feature android:name="android.hardware.camera" />
(3)以上是两个主要的设置,如果有其他额外功能,比如使用自动对焦,还需要使用:
<uses-feature android:name="android.hardware.camera.autofocus" />
详细内容可以参考文章前面的网站内容;
二、实现方法
1.使用intent通知安卓操作系统
(1)在主activity中使用intent通知内置的摄像机应用;用户在使用摄像进行拍照过后返回主activity图片数据,在主activity
中加入接收数据的方法,对返回的图像进行操纵;
优点:这种方法比较简单,且利用了android内置的应用,使用于一般性的应用程序开发;
缺点:不够灵活,不适用自定义的方法,可扩展性较差;
(2)调用步骤
通常按以下步骤来提交一个摄像头 intent:
首先,构建一个摄像头 Intent —— 用以下意图类型之一,创建一个请求图像或视频的Intent,
MediaStore.ACTION_IMAGE_CAPTURE —— 向内置摄像头程序请求图像的意图活动类型。
MediaStore.ACTION_VIDEO_CAPTURE —— 向内置摄像头程序请求视频的意图活动类型。
然后,启动摄像头 Intent ——用startActivityForResult()方法执行摄像头 intent。启动完毕后摄像头应用的用户界面就会显
示在屏幕上,用户就可以拍照或摄像了。
最后,接收Intent结果 —— 在应用程序中设置onActivityResult()方法,用于接收从摄像头 intent返回的数据。当用户拍摄完
毕后(或者取消操作),系统会调用此方法。
(3)实例
详细代码可见文章顶部网站,本文提供了一个简单的程序:
package cn.edu.zjut.androidcam; import android.os.Bundle;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
/**
*
* @ClassName: MainActivity
* @Description:通过intent调用android内置的摄像应用程序
* @author Alfred.M
* @date 2012-9-1 下午2:35:12
*
*/
public class MainActivity extends Activity {
private static final int CAMERA_REQUEST = 1888;
private ImageView imageView; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.imageView = (ImageView) this.findViewById(R.id.imageView1);
Button photoButton = (Button) this.findViewById(R.id.button1); Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
photoButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//构造intent
startActivityForResult(cameraIntent, CAMERA_REQUEST);//发出intent,并要求返回调用结果
}
});
} /**
* 接收intent传回的信息
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST) {
//System.exit(0);
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
}
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" > <TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
tools:context=".MainActivity" /> <ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/app_name" >
</ImageView> <Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/text2"
android:layout_below="@+id/imageView1"
android:layout_marginRight="14dp"
android:layout_marginTop="79dp"
android:text="@string/button" />
</RelativeLayout>
android摄像头获取图像——第一弹的更多相关文章
- android摄像头获取图像——第二弹
使用android内的Camera对象 (1)Camera是控制着摄像头的api,拥有一系列控制摄像头的上层方法:camera类能够调用底层的摄像头接口,完成启动摄像头.预 览摄像头图像.拍照等功能: ...
- android摄像头获取图像——第三弹
相机获取图像的格式问题 android中承认的格式的参考网址为 :http://developer.android.com/reference/android/graphics/ImageFormat ...
- ant android打包--学习第一弹
1. 准备工作 用eclipse创建一个android项目 安装ant和SDK,并且添加到系统环境变量 2.ant 使用 2.1 ant简单的帮助命令 ant -p 2.2 创建ant配置文件%AND ...
- GC那些事儿--Android内存优化第一弹
引言 接App优化之内存优化(序), 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Andro ...
- ROS 教程之 vision : 用各种摄像头获取图像
可能有很多人想在ROS下学习视觉,先用摄像头获取图像,再用opencv做相应算法处理,可是ROS下图像的采集可不像平常的read一下那么简单,需要借助外部package的使用.而摄像头即可以用笔记本自 ...
- Android开源项目第一篇——个性化控件(View)篇
本文为那些不错的Android开源项目第一篇——个性化控件(View)篇,主要介绍Android上那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Ga ...
- Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整(原理:底层SurfaceView+上层绘制ImageView)
Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整实现(原理:底层SurfaceView+上层绘制ImageView) 分类: Android开发 Androi ...
- 如何使用 OpenCV 打开摄像头获取图像数据?
OpenCV 如何打开摄像头获取图像数据? 代码运行环境:Qt 5.9.1 msvc2015 32bit OpenCV 3.3.0 #include "include/opencv2/ope ...
- 我的长大app开发教程第一弹:Fragment布局
在接下来的一段时间里我会发布一个相对连续的Android教程,这个教程会讲述我是如何从零开始开发“我的长大”这个Android应用. 在开始之前,我先来介绍一下“我的长大”:这是一个校园社交app,准 ...
随机推荐
- commons io上传文件
习惯了是用框架后,上传功能MVC框架基本都提供了.如struts2,springmvc! 可是假设项目中没有使用框架.而是单纯的使用jsp或servlet作为action,这时我们就能够使用commo ...
- Python数据分析简介
1,Python作为一门编程语言开发效率快,运行效率被人诟病,但是Python核心部分使用c/c++等更高效的语言来编写的还有强大的numpy, padnas, matplotlib,scipy库等应 ...
- js怎么select 选中的值
var obj = document.getElementById(”SelectID”); var index = obj.selectedIndex; // 选中索引var text = obj. ...
- 九度OJ 1100:最短路径 (最短路径)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4185 解决:619 题目描述: N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的 ...
- 九度OJ 1095:2的幂次方 (递归)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:913 解决:626 题目描述: Every positive number can be presented by the exponent ...
- Oracle Meger into 函数
Oracle 在 9i 引入了 merge 命令, 通过这个 merge 能够在一个SQL 语句中对一个表同时执行 inserts 和 updates 操作.Merge into 可以实现用 B 表来 ...
- vue组件挂载到全局方法
在最近的项目中,使用了bootstrap-vue来开发,然而在实际的开发过程中却发现这个UI提供的组件并不能打到我们预期的效果,像alert.modal等组件每个页面引入就得重复引入,并不像eleme ...
- APP测试走过的那些坑
我现在的工作有一大部分也是app测试,虽然自己是app开发出身,但是在测试上还是跌入了很多大坑,毕竟二者还是有很大不同,所处的角度也是不一样的.而开发转测试中,我认为较难的也是一个角度的转换,以一个开 ...
- 图片预览JavaScript方法
实现要点 ● 对于 Chrome.Firefox.IE10 使用 FileReader 来实现. ● 对于 IE6~9 使用滤镜 filter:progid:DXImageTransform.Mi ...
- ORA-03113: end-of-file on communication channel (通信通道的文件结尾)
今天有现场反应:数据库连不上了,提示什么归档日志有问题:又问了现场有做过什么特别操作,答曰没有,出问题后,只是重启了操作系统. 现场环境oracle11.0.2.3. 于是远程查看数据库状态,发现数据 ...