Android调用系统相机获取返回数据

由于项目需要调用相机,实现上传照片,例如微博,微信中功能。Android中可以非常轻松的调用系统相机,并返回Bitmap数据,但有一点不足,它返回的Bitmap尺寸很小,清晰度不够,这问题将稍后解决。下面通过代码演示。

1.界面布局

res/layout 定义一个简单布局,一个Button和ImageView,分别用于跳转系统相机Activity和显示系统相机返回数据。

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6
 7   <Button
 8         android:id="@+id/cap"
 9         android:layout_width="fill_parent"
10         android:layout_height="wrap_content"
11         android:text="摄像" />
12   <ImageView
13         android:id="@+id/image"
14         android:layout_width="fill_parent"
15         android:layout_height="fill_parent"
16         />
17 </Linea

2.Intent实现跳转系统相机

Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 1);

3.覆写onActivityResult方法

该方法用于接收系统相机返回数据,并显示图片

 1  @Override
 2     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 3         if(requestCode==1){
 4             if(resultCode==RESULT_OK){
 5             Bitmap bitmap=(Bitmap) data.getExtras().get("data");
 6             image.setImageBitmap(bitmap);
 7             SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmssSSS");
 8             String dir=Environment.getExternalStorageDirectory().getAbsolutePath()+
 9                       File.separator + "Cap";
10             String path=dir+File.separator+sdf.format(new Date())+".JPEG";
11             File directionary=new File(dir);
12             if(!directionary.exists()){
13                 directionary.mkdir();
14             }
15             File pic=new File(path);
16             FileOutputStream fos=null;
17             try {
18                 fos=new FileOutputStream(pic);
19                 sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path)));
20                 bitmap.compress(CompressFormat.JPEG,100, fos);
21                 Toast.makeText(getApplicationContext(), "照片生成\n"+path, Toast.LENGTH_LONG).show();
22             } catch (FileNotFoundException e) {
23
24                 e.printStackTrace();
25             }finally{
26                 if(fos!=null){
27                     try {
28                         fos.close();
29                     } catch (IOException e) {
30                         // TODO Auto-generated catch block
31                         e.printStackTrace();
32                     }
33                 }
34             }
35
36             }
37         }
38         super.onActivityResult(requestCode, resultCode, data);
39     }

时间: 2024-12-06 21:33:47

Android调用系统相机获取返回数据的相关文章

android 调用系统相机获取图片、调用系统相册获取图片,并对图片进行截取

打开系统相册获取图片并截取,代码相对简单 1 Intent intent = new Intent(Intent.ACTION_GET_CONTENT,null); 2 intent.setType("image/*"); 3 intent.putExtra("crop", "true"); 4 5 //WIDTH 和 HEIGHT指的是截取框的宽高比例,如设WIDTH = 1,HEIGHT = 1,截取框就为正方形 6 intent.putEx

android调用系统相机拍照并保存在本地

import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Calendar; import java.util.Locale; import android.annotation.SuppressLint; import android.app.Activity; import an

Android调用系统相机、自定义相机、处理大图片

Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理(避免OOM),还有简要提一下有些人SurfaceView出现黑屏的原因. Android应用拍照的两种方式,下面为两种形式的Demo展示出来的效果.    知识点: 一.调用系统自带的相机应用 二.自定义我们自己的拍照界面 三.关于计算机解析图片原理(如何正确加载图片到Android应用中) 所需

Android 调用系统相机以及相册源码

Android 调用系统相机拍照.以及相册.完成之后图片是上传到app上.前面的功能已经测试过了.没有上传到服务器,因为我没服务器测试.但项目里面有个类可以参考上传图片到服务器,我就没测试了.接下来看代码,虽然注释写得少,但其作用看英文单词意思,又在或是查看调用. 项目源码下载地址:http://download.csdn.net/detail/qq_16064871/8585169 转载请注明出处: http://blog.csdn.net/qq_16064871 package com.ex

Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题

版权声明:本文为博主原创文章,未经博主允许不得转载. 正常情况下调用系统相机拍照: 如果拍照后点击的是“确定”图标,返回的resultCode = -1(Activity.RESULT_OK): 如果点击的是底部的“返回”键,返回的resultCode = 0(Activity.RESULT_CANCELED). 简单的调用系统相机的写法: //调用系统拍照 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); String p

Android 调用系统相机拍照保存以及调用系统相册的方法

系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的.下面讲讲调用系统相机拍照并保存图片和如何调用系统相册的方法. 首先看看调用系统相机的核心方法: Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera, CAMERA); 相机返回的数据通过下面的回调方法取得,并处理: public static final int CAMERA  = 0x01; @Over

Android调用系统相机拍照保存照片很小解决方案

保存图片小的一般操作步骤: 1. 调用系统相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 1); 2. 保存照片 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {  // TODO Auto-generated method s

android 调用系统相机

// 调用相机拍照的请求码 public static final int REQUEST_TAKE_PHOTO_CODE = 1; public static final int REQUEST_TAKE_PHOTO_CODE2 = 2; // 拍照后显示图片的ImageView private void startTakePhoto2() { // 启动系统相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 启

Android调用系统相机功能

在常规应用开发过程中,我们经常会使用到手机的相机功能,通过调用系统相机方便快捷的帮助我们实现拍照功能,本篇我将带领大家实现一下,如何通过调用系统相机实现拍照. 第一种:调用系统相机拍照,通过返回的照片缩略图展示我们的拍照图片 打开系统相机: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, TAKE_PICTURE);// 如果用Activity.RESULT_O