Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發學習之Camera

Android開發學習之Camera

編輯:關於Android編程

今天本來想寫一篇關於百度地圖定位SDK的文章的,無奈根據官網提供的例子編寫的程序始終無法運行,所以這個計劃只能落空。那麼今天要與大家分享的是Camera,即照相機。隨著硬件能力的大幅提升,手機上各種依托硬件的應用層出不群。在所有硬件中,照相機功能無疑是最常用的功能。那麼,我們今天就來做一個簡單的照相機吧。這個例子在很多場景中都會用到,比如在QQ空間裡拍照然後分享給好友,在有道雲筆記裡拍照完成圖像筆記的編輯等。在Android中,我們有兩種方式來開發照相機的應用。一種是采用Camera類,進行原生應用的開發,這種開發方式涉及的技術相對較多,開發難度相對較大;一種是調用系統內置的照相機應用,然後和我們自己的應用完成交互,這種方式顯然簡單地多。所以,今天我們在這裡選擇後一種方式,即調用系統內置的照相機來完成拍照。通過對Android的了解,我們知道,所有對於系統內置的應用都可以通過意圖的方式來實現,如發短信、發郵件、打電話等常用的操作。這告訴兩了我們一個道理,很多時候,當系統已經有這樣的功能時,最簡單的方式就是去調用它,而不是去開發它,除非你想做一個完全和系統不一樣的應用。

首先,布局代碼如下:


    
    
在這裡我們使用一個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就搞的得雲裡霧裡的,唉,繼續努力吧!



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved