Android Camera
Android调用系统api使用照相机功能,实现拍照获取图片以及从照相机库中获取指定图片的功能。
下面是演示样例代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView android:layout_width="match_parent"
android:layout_height="100dip"
android:id="@+id/image"
/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="testPopupWindow"
android:layout_below="@id/image"
/> </RelativeLayout>
/**
* 实现Popup弹出窗体并实现调用系统照相机功能
* @author dream
*
*/
public class TestPopupWindow extends Activity {
private SelectPopupWindow popupWindow;
private ImageView image;
private Button btn;
private Uri fileUri; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
init();
} private void init(){
image = (ImageView) findViewById(R.id.image);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(onClickListener);
fileUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")); //图片存放路径
} View.OnClickListener onClickListener = new View.OnClickListener() { @Override
public void onClick(View v) {
switch(v.getId()){
case R.id.btn:
test();
break;
case R.id.takephoto:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, 100);
break;
case R.id.selectfromalbum:
Intent intent1 = new Intent(Intent.ACTION_PICK);
intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent1, 200);
break; }
}
}; @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 100 && resultCode == RESULT_OK){
int width = image.getWidth();
int height = image.getHeight();
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(fileUri.getPath(), opts);
int w = opts.outWidth;
int h = opts.outHeight;
int factor;
if(w>width && h>height){
factor = Math.min(w/width, h/height); //依据ImageView的大小按一定比例缩小图片
}else {
factor = 1;
}
opts.inSampleSize = factor;
opts.inJustDecodeBounds = false;
Bitmap bm = BitmapFactory.decodeFile(fileUri.getPath(), opts);
image.setImageBitmap(bm);
} else if(requestCode == 200 && resultCode == RESULT_OK){
int width = image.getWidth();
int height = image.getHeight();
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
Uri uri = data.getData();
try {
InputStream in = getContentResolver().openInputStream(uri);
BitmapFactory.decodeStream(in, null, opts);
int w = opts.outWidth;
int h = opts.outHeight;
int factor;
if(w>width && h>height){
factor = Math.min(w/width, h/height); //依据ImageView的大小按一定比例缩小图片
}else {
factor = 1;
}
opts.inSampleSize = factor;
opts.inJustDecodeBounds = false;
in = getContentResolver().openInputStream(uri); //须要再次获取,由于前面流已经改变了
Bitmap bm = BitmapFactory.decodeStream(in, null, opts);
image.setImageBitmap(bm);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } } public void test(){
popupWindow = new SelectPopupWindow(this, onClickListener);
popupWindow.showAtLocation(findViewById(R.id.main),
Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
} }
执行结果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Android Camera的更多相关文章
- 【Android】Android Camera原始帧格式转换 —— 获取Camera图像(一)
概述: 做过Android Camera图像采集和处理的朋友们应该都知道,Android手机相机采集的原始帧(RawFrame)默认是横屏格式的,而官方API有没有提供一个设置Camera采集图像的 ...
- android camera setMeteringArea详解
摘要: 本文为作者原创,未经允许不得转载:原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/5802814.html setMeteringArea() ...
- Android — Camera聚焦流程
原文 http://www.cnphp6.com/archives/65098 主题 Android Camera.java autoFocus()聚焦回调函数 @Override public v ...
- android camera setParameters failed 类问题分析总结
在 monkey test 测试中出现了一例 RuntimeException ,即 setParameters failed. LOG显示为:09-01 18:47:17.348 15656 156 ...
- Android Camera 相机程序编写
Android Camera 相机程序编写 要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置,在AndroidManifest.xml中加上使用设备相机的权限: <uses-per ...
- Android Camera 使用小结
Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Inten ...
- Android Camera拍照 压缩
http://www.linuxidc.com/Linux/2014-12/110924.htm package com.klp.demo_025; import java.io.ByteArrayI ...
- Android Camera 流程梳理
毕业已经快两年了,一直没有写博客的习惯,这是第一篇,以后要慢慢养成这个习惯.毕业之后一直在做相机,先简单的梳理下Android Camera的流程. Android Camera 是一个client/ ...
- 【转】android camera(四):camera 驱动 GT2005
关键词:android camera CMM 模组 camera参数 GT2005 摄像头常见问题 平台信息: 内核:linux系统:android 平台:S5PV310(samsung exyn ...
- 【转】android camera(三):camera V4L2 FIMC
关键词:android camera CMM 模组 camera参数 CAMIF V4L2 平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos ...
随机推荐
- [Everyday Mathematics]20150131
在 $\bbR^4$ 中定义如下有界区域 $\Omega$: $$\bex \Omega=\sed{(x,y,z,w)\in\bbR^4;\ |x|+|y|+\sqrt{z^2+w^2}\leq 1} ...
- TOAD FOR MYSQL 进行数据插入时乱码的解决办法---MariaDB 5.5
最近使用mysql是发现插入的数据乱码,几经周折终于找到的解决方法,特作备忘. 开始有将mysql的字符集全部设置成utf8,如下: SHOW VARIABLES LIKE 'character_se ...
- asp调用.net xml web services
来源:http://www.cnblogs.com/notus/archive/2006/08/10/473000.html#2662503 (是不是实际上可以用这个办法调用任何xml web ser ...
- C/C++:作用域、可见性与生存期
作用域 作用域是用来表示某个标识符在什么范围内有效. C++的作用域主要有四种:函数原型作用域.块作用域.类作用域和文件作用域. 由大到小:文件作用域>类作用域>块作用域>函数原型作 ...
- bzoj 3884 上帝与集合的正确用法(递归,欧拉函数)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3884 [题意] 求2^2^2… mod p [思路] 设p=2^k * q+(1/0) ...
- bzoj 1025 [SCOI2009]游戏(置换群,DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1025 [题意] 给定n,问1..n在不同的置换下变回原序列需要的不同排数有多少种. [ ...
- c++ 概念及学习/c++ concept&learning(二)
上篇内容讲述了整个语言的发展[为什么会产生编程语言],以及学习C++所需要掌握的内容.这节开始认识第一部分最基本的内容:C++的内建类型,也就是基本类型. 在这些知识之前留一个问题:为什么基本所有语言 ...
- DWZ使用笔记
DWZ使用笔记 一.前言 在最近的一个项目中,引入了DWZ这个富客户端框架,算是一次尝试吧.期间也遇到不少问题,总算一一解决了.特以此文记之. 本人用的是dwz-ria-1.4.5+A ...
- String比较
String str1 = "abc"; String str2 = "abc"; String str3 = new String("abc&quo ...
- ESXI安装
1.设置从USB启动 按DEL进入BIOS设置 参考http://www.upanok.com/jiaocheng/68.html 先插入USB,在选择ADVANCAED BIOS FEATURES ...