zoukankan      html  css  js  c++  java
  • Android开发学习之Camera

               今天本来想写一篇关于百度地图定位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就搞的得云里雾里的,唉,继续努力吧!



  • 相关阅读:
    面向连接的网络应用程序--服务器端
    使用完整读写函数的网络应用程序
    套接字编程基础
    网络编程基础
    传输控制协议TCP
    UDP协议
    电子词典
    strtok()函数、fseek()函数、fwrite()函数、fread()函数的使用
    指针与数组
    软件推荐----RDO(Remote Desktop Organizer)
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3459159.html
Copyright © 2011-2022 走看看