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就搞的得云里雾里的,唉,继续努力吧!



  • 相关阅读:
    函数式宏定义与普通函数
    linux之sort用法
    HDU 4390 Number Sequence 容斥原理
    HDU 4407 Sum 容斥原理
    HDU 4059 The Boss on Mars 容斥原理
    UVA12653 Buses
    UVA 12651 Triangles
    UVA 10892
    HDU 4292 Food
    HDU 4288 Coder
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3459159.html
Copyright © 2011-2022 走看看