今天本来想写一篇关于百度地图定位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. 大牛对ACM入门菜鸟的一些话

    首先就是我为什么要写这么一篇日志.原因很简单,就是因为前几天有个想起步做ACM人很诚恳的问我该如何入门.其实就现在而言,我并不是很想和人再去讨论这样的话题,特别是当我发现我有很多的东西要学的时候,我实 ...

  2. jquery Tab默认情况下自动切换

    <!DOCTYPE html><html lang="zh-CN"><head><meta http-equiv="Conten ...

  3. 表达式:使用API创建表达式树(1)

    表达式树可使用Expressions类的静态工厂方法来创建.这种用API的方式创建给予我们在编程极大的灵活性,MSDN上关于表达式的例子也不少,但在使用过程中还是会遇到许多麻烦,对有的表达式类,介绍得 ...

  4. NOI 193棋盘分割.cpp

    193:棋盘分割 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分 ...

  5. 你好,C++(35)类是如何藏私房钱的?6.2.4 拷贝构造函数

    6.2.6  类成员的访问控制 类成员包括类的成员变量和成员函数,它们分别用来描述类的属性和行为.而类成员的访问控制决定了哪些成员是公开的,可以被外界访问,也可以被自身访问:哪些成员是私有的,只能在类 ...

  6. Google Calendar(日历)设置农历生日提醒

    Generate birthday dates base on lunar birthdays for google calendar import Can be used for notifying ...

  7. 如何使用LoadRunner监控Windows

    1.监视连接前的准备工作   1)进入被监视windows系统,开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service (开始—)运行 ...

  8. django 内建标签和过滤器参考

    下面的标签和过滤器参考就是为那些没有 admin 站点的可用的人准备的.由于 Django 是高度可定制的,你的 admin 里的关于标签和过滤器的参考可以认为是最可信的. 内建标签参考 block ...

  9. 使用Gson进行json数据转换(list to json 和json to list)

    文章借鉴自:http://blog.csdn.net/binyao02123202/article/details/7540407 下面是一个简单的例子: Java代码 public class Pe ...

  10. 老oj3999孤独一生

    孤独一生 Time Limit:10000MS  Memory Limit:165536KTotal Submit:23 Accepted:11 Case Time Limit:1000MS Desc ...