Android照相机应用

前言

Android在设计架构的时候,采用了mashup(混搭)的设计理念,也就是说一切都是组建,自己写的是组件,别人提供的也是组件,使用的时候只要符合相关协议就可以把他们当作自己的组件。比如系统提供的照相机、通讯录等等都可以直接拿来用。今天就看下照相机的相关内容。

简单调用照相机

如果我们的需求只是直接调用照相机,而不用做任何后续处理,那么这个就很简单了,通过传递一个intent对象,就可以直接调用照相机组件,如下所示:  

Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
mContext.startActivity(intent);

这样我们就把照相机组件给调出来了,然后就正常使用照相机就可以了。

获取照相机的内容

上一节我们简单的使用了照相机,同时照下来的内容存储到了默认路径中了,但是更多的时候我们不仅需要调用照相机进行拍照,同时还需做后续处理,
比如把照下来的内容放到我们指定的内容区域中,这样的需求就稍微麻烦一点。这时候调用照相机的时候就需要启动一个带有返回值的照相机Activity,
然后在接收接口中处理返回照片,如下所示:
    调用代码

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

通过上面的代码就启动了一个带返回值的照相机Activity,完成照相后会调用返回接口,我们处理照片内容就在这个接口里面了。如下所示
   返回代码

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case 1:
            //获取照片
             Bundle extras = data.getExtras();
             Bitmap bitmap = (Bitmap) extras.get("data");
            break;

        default:
            break;
        }

    }

通过上面的代码我们就可以获取到照相机拍下来的内容了,是一个Bitmap对象,然后就可以使用这个对象,用这个对象时候我们发现这张照片并不是原始照片,而是经过压缩后的照片,如果能满足我们的需求那就ok了,如果我们需要获取到原始照片,就需要用到下面的内容了

获取原始照片

如果想获取原始照片,那么在传递intent对象的时候就需要进行进一步的设置了,需要把指定原始照片保存到指定路径,如下所示

    File file = new File("/sdcard/demo/temp");
    if(!file.exists()){
        file.mkdirs();
    }

    File imgFile = new File(tempDir,"test");

    Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    Uri u=Uri.fromFile(imgFile);
    //指定路径那个
    intent.putExtra(MediaStore.EXTRA_OUTPUT, u); 

这样调用代码就写好了,照相机会把原始照片输出到/sdcard/demo/temp/test文件中

使用原始照片

  这就很简单了,知道了路径我们可以通过各种方式来访问并处理它,下面是其中的一种方式。

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case 1:
            //获取照片
            Uri uri = data.getData();     //获取到是图片路径
            ContentResolver cr = this.getContentResolver();
            Bitmap bitmap=null;
            try {
                bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            break;
        default:
            break;
    }

这样我们有拿到了这个bitmap,后续就随意使用了。

后记

这篇文章简单介绍了下照相机的使用情况,当然还可以自定义照相机界面来完成,等等吧,相信有了这篇文章的简单介绍会有一个大概的轮廓,至于
    使用到什么程度还需要看具体需求,然后根据api进行进一步的定制。
    Uri:统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。它可以标识各种类型的资源,比如我们常见的http资源,以及ftp资源,在这篇文章中是表示一个路径资源。

原文地址:http://www.cnblogs.com/luoaz/p/4148851.html

时间: 2024-10-06 06:52:27

Android照相机应用的相关文章

Android照相机模块编程 照片颠倒问题及查询摄像头参数问题的解决

这两天编程弄Android照相机模块,设置好各种参数后,发现预览的时候,照片是颠倒了,不是上下颠倒而是颠倒90°. 我的手机是华为U9200,用的Android4.0.3,后来看到http://www.cnblogs.com/skyseraph/archive/2012/03/26/2418665.html这篇文章,增加代码:myCamera.setDisplayOrientation(90); 然后预览就正常了.但是拍摄的照片在电脑上打开一看,仍然是倾斜的.倾斜了90°,后来加上这句:myPa

Android 照相机拍摄照片,压缩后储存于SD卡

一般相机拍摄的照片大小为3-4M左右,这里因为需要完成将拍摄好的照片上传到服务器功能,所以需要将得到的照片进行压缩.这里演示就直接存放在SD卡中. 网上搜索了不少资料,得知可以使用:inSampleSize 设置图片的缩放比例. 但是,这里需要注意: 1)inJustDecodeBounds = true; 需要先设置为真,表示只获得图片的资料信息.如果此时检验bitmap会发现bitmap==null; 2)如果需要加载图片的时候,必须重新设置inJustDecodeBounds = fals

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

【Mood-12】Android开发相关书籍推荐

新年伊始,找到Android进阶干货若干,2015拜读. 1.Android应用UI设计模式 目前,谷歌Android操作系统在移动市场中风头正劲,并且未来发展势不可挡.<Android应用UI设计模式>面向Android 4.0+操作系统,是市面上第一本深入解析Android界面设计的佳作.<Android应用UI设计模式>从适用于移动设备和平板的通用模式以及 Android UI设计指南出发,深入探讨了58种重要的Android交互设计模式及其应用.每种模式登场之前,先用基本知

Android硬件学习-照相机

学习Android不能不学习照相机,现在各种美容相机,微信朋友圈发图,现在升级之后直接下拉就可以照相了,各种艳照的的源头也是照相机,扯远了,有点邪恶了,还是简单学习一下Android中照相机的使用,Android中照相机的使用一般分为两种使用已有的照相App(可以理解为系统内置的照相机)和单独创建一个照相App,第一种方式简单易懂,第二种方式如果做的好的话可以养活一个公司~今天就简单的描述一下第一种的调用~ 基础工作 调用照相机需要照相,照相就需要存储,存在外部存储中需要设置权限,本次设置的三个

Android自定义照相机注意事项

1.设置预览方向myCamera.setDisplayOrientation(90) 2.设置照片方向parameters.setRotation(90); 3.设置预览显示和照片的分辨率 // 设置照片分辨率 List<Camera.Size> previewSizeList = parameters .getSupportedPreviewSizes(); int previewWidth = 0; int previewHeight = 0; for (int i = 0; i <

Android摄像头照相机技术-android学习之旅(八)

简介 Android SDK支持Android设备内置的照相机.从Android2.3开始支持多个摄像头(主要指前置摄像头和后置摄像头).通过照片相可以拍照和录像. 需要考虑的问题 是否支持照相机 快速拍照还是定制拍照 存储问题 照相机涉及的主要API Intent听过action来启动系统的相机 Camera SurfaceView MediaRecorder(录像) 权限 "android.permission.CAMERA" "android.permission.WR

Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)

Android自定义照相机实现 近期小巫在学校有一个创新项目,也不是最近,是一个拖了很久的项目,之前一直没有去搞,最近因为要中期检查,搞得我跟小组成员一阵忙活,其实开发一款照相机软件并不太难,下面就是通过自定义的方式来实现手机照相的功能. 创建一个项目:FingerTakePicture 首先来搞一下界面: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&qu

android 调用系统的照相机和图库

android手机有自带的照相机和图库,我们做的项目中有时用到上传图片到服务器,今天做了一个项目用到这个功能,所以把我的代码记录下来和大家分享,第一次写博客希望各位大神多多批评. 首先上一段调用android相册和相机的代码: 代码如下: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//调用android自带的照相机 photoUri = MediaStore.Images.Media.EXTERNAL_CONTENT_