今天本来想写一篇关于百度地图定位SDK的文章的,无奈根据官网提供的例子编写的程序始终无法运行,所以这个计划只能落空。那么今天要与大家分享的是Camera,即照相机。随着硬件能力的大幅提升,手机上各种依托硬件的应用层出不群。在所有硬件中,照相机功能无疑是最常用的功能。那么,我们今天就来做一个简单的照相机吧。这个例子在很多场景中都会用到,比如在QQ空间里拍照然后分享给好友,在有道云笔记里拍照完成图像笔记的编辑等。在Android中,我们有两种方式来开发照相机的应用。一种是采用Camera类,进行原生应用的开发,这种开发方式涉及的技术相对较多,开发难度相对较大;一种是调用系统内置的照相机应用,然后和我们自己的应用完成交互,这种方式显然简单地多。所以,今天我们在这里选择后一种方式,即调用系统内置的照相机来完成拍照。通过对Android的了解,我们知道,所有对于系统内置的应用都可以通过意图的方式来实现,如发短信、发邮件、打电话等常用的操作。这告诉两了我们一个道理,很多时候,当系统已经有这样的功能时,最简单的方式就是去调用它,而不是去开发它,除非你想做一个完全和系统不一样的应用。

首先,布局代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/ImageView"
android:layout_width="match_parent"
android:layout_height="390dp"
android:contentDescription="@string/Description"
android:scaleType="fitXY"
android:src="@drawable/view" />
<Button
android:id="@+id/BtnPlay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/BtnPlay" />
</LinearLayout>

在这里我们使用一个ImageView来显示我们拍摄的照片,使用一个Button来触发拍照的事件。后台代码如下:

package com.Camera.camera;

import android.os.Bundle;
import android.provider.MediaStore;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast; public class MainActivity extends Activity { ImageView iv;
Button BtnPlay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView)findViewById(R.id.ImageView);
BtnPlay=(Button)findViewById(R.id.BtnPlay);
BtnPlay.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
try
{
Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
}
catch(Exception e)
{
Log.e("Exception", e.getMessage());
}
}
});
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode==0)
{
super.onActivityResult(requestCode, resultCode, data);
Bundle Extras = data.getExtras();
Bitmap mBitmap = (Bitmap)Extras.get("data");
iv.setImageBitmap(mBitmap);
}
else
{
Toast.makeText(this, "您没有拍摄照片!", Toast.LENGTH_SHORT).show();
}
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

首先我们为Button注册Click事件,在Click事件中我们定义了一个调用拍照意图的Intent,然后调用这个Intent。因为这里需要返回一个值,即我们拍的照片,所以徐雅使用startActivityForResult()方法。于此同时,我们覆盖Activity的onActivityResult()方法,来处理返回值,即根据返回的值来生成一个Bitmap以填充ImageView,完成整个拍照的过程。运行结果如图(哈哈,V粉不解释,拍得太难看就不上传了)

今天的内容就是这样啦,有时间再研究下百度定位SDK的例子。话说百度写的例子我还真看不懂啊,那个语音识别的SDK就搞的得云里雾里的,唉,继续努力吧!

Android开发学习之Camera的更多相关文章

  1. Android开发之初识Camera图像采集

    /* * Android开发之初识camera图像采集 * 北京Android俱乐部群:167839253 * Created on: 2011-8-24 * Author: blueeagle * ...

  2. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  3. Android开发学习路线图

    Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...

  4. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

  5. Android开发学习总结(一)——搭建最新版本的Android开发环境

    Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...

  6. Android开发学习之LauncherActivity开发启动的列表

    Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果:   建立主Activity:OtherActivity.java [jav ...

  7. 最实用的Android开发学习路线分享

    Android开发学习路线分享.Android发展主导移动互联发展进程,在热门行业来说,Android开发堪称火爆,但是,虽然Android有着自身种种优势,但对开发者的专业性要求也是极高,这种要求随 ...

  8. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

  9. Android开发学习之路--基于vitamio的视频播放器(二)

      终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...

随机推荐

  1. Windows XP CD 函数不正确

    参考这篇文章:http://support.hp.com/cn-zh/document/c00760286 一,在设备管理中查看,如果刻录机名称中含 ROM,则需确认设备是否可写 二,若确定设备可写, ...

  2. Android开发手记(16) 数据存储一 SharedPreferences

    Android为数据存储提供了五种方式: 1.SharedPreferences 2.文件存储 3.SQLite数据库 4.ContentProvider 5.网络存储 SharedPreferenc ...

  3. c-函数指针(求奇数偶数的和)

    #include <stdio.h> /* 编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n,当输入 n 为奇数时,调用函数1/1+1/3+...+1/n(利用 ...

  4. iOS开发知识点:理解assign,copy,retain变strong

    一..h和.m文件的变化说明 1.对于.h头文件,主要是将属性定义由retain变为strong @property (retain, nonatomic) 变为 @property (strong, ...

  5. 【转】iOS申请发布证书-图文详解

    摘要 发布产品到App Store所需证书,2013年5月26日测试 IOS 发布证书 distribution 打包程序 真机调试证书 本文讲述发布证书的申请,申请真机调试证书请参考:http:// ...

  6. Hive学习之七《 Sqoop import 从关系数据库抽取到HDFS》

    一.什么是sqoop Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL ...

  7. uva 11673 Garbage Remembering Exam (概率)

    题目链接: http://vjudge.net/problem/viewProblem.action?id=42000 该过程为随即过程,因此总期望值等于个单词对应的期望值,即它们wasted的概率 ...

  8. 【USACO 2.1.5】海明码

    [题目描述] 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个 ...

  9. Android学习----Android Studio 技巧汇总

    关于快捷键 The File Structure Popup ctrl+f12此快捷键可以调出当前文件的大纲,并通过模糊匹配快速跳转至指定的方法.勾选上“show anonymous classes” ...

  10. js中的 window.location、document.location、document.URL 对像的区别(转载)

    原文:http://www.cr173.com/html/18417_1.html 当我们需要对html网页进行转向的时候或是读取当前网页的时候可以用到下面三个对像: window.location. ...