歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android圖像處理簡介の使用內置Camera應用程序進行圖像捕獲

Android圖像處理簡介の使用內置Camera應用程序進行圖像捕獲

日期:2017/3/1 10:33:14   编辑:Linux編程

Android中可以簡單直接地使用intent來獲取已安裝應用軟件提供的功能,它是Android的關鍵組件之一,主要作用有兩個:一是觸發其他應用程序提供的功能;二是在單個應用程序中實現Activity之間的切換。

軟件開發人員使用intent filter來聲明應用程序提供某種特定功能,這個聲明是在AndroidManifest.xml中進行的,例如,內置的Camera應用在它的manifest文件中的"Camera"標簽下進行了如下聲明:

[html]
  1. <intent-filter>
  2. <action android:name="android.media.action.IMAGE_CAPTURE" />
  3. <action android:name="android.intent.category.DEFAULT"/>
  4. </intent-filter>

要通過intent來使用Camera應用,我們只需創建一個Intent來捕獲上面聲明的filter就行,代碼如下:

[java]
  1. Intent it = new Intent("android.media.action.IMAGE_CAPTURE");

但上面代碼顯然屬於硬編碼,字符串"android.media.action.IMAGE_CAPTURE"將來如果改變了,我們的代碼也得跟著修改,不利於維護,好在MediaStore類提供常量ACTION_IMAGE_CAPTURE供開發人員使用,這樣字符串名稱變動就在Android內部自己解決,對外的接口ACTION_IMAGE_CAPTURE不變,改進後的代碼如下:

[java]
  1. Intent it = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  2. startActivity(it);

1)從Camera應用返回數據

只捕獲圖像而不進行存儲或其他處理是沒有任何意義的,為了獲得Camera應用捕獲到的圖像,我們只需使用startActivityForResult函數代替startActivity,同時重載Activity的函數onActivityResult即可,從Camera返回的數據我們當作Bitmap來處理,代碼如下:

[java]
  1. package hust.iprai.asce1885.promedia;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.graphics.Bitmap;
  5. import android.os.Bundle;
  6. import android.widget.ImageView;
  7. public class ImageCaptureActivity extends Activity {
  8. final static int CAMERA_RESULT = 0;
  9. ImageView iv = null;
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. Intent it = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
  15. startActivityForResult(it, CAMERA_RESULT);
  16. }
  17. @Override
  18. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  19. super.onActivityResult(requestCode, resultCode, data);
  20. if (RESULT_OK == resultCode) {
  21. // Get Extra from the intent
  22. Bundle extras = data.getExtras();
  23. // Get the returned image from extra
  24. Bitmap bmp = (Bitmap) extras.get("data");
  25. iv = (ImageView) findViewById(R.id.ReturnedImageView);
  26. iv.setImageBitmap(bmp);
  27. }
  28. }
  29. }
Copyright © Linux教程網 All Rights Reserved