Androidプログラマへの道 〜 Moonlight 明日香 〜 - カメラアプリを呼び出す
インテント(Intent)を利用することで, カメラアプリを呼び出して写真を撮影し, 撮影した画像を取得することができる.



カメラアプリの起動

    • インテントのインスタンスを生成する.
    • Intent#setActionメソッドを使って, アクションに"android.media.action.IMAGE_CAPTURE"を設定する.
    • startActivityメソッドを使って, カメラアプリを起動する.
    • 写真データを受け取るために, onActivityResultメソッドをオーバーライドする.
    • リクエストコードをチェックし, カメラアプリからのイベントか判断する.
    • Intent#getExtras()メソッドを使って, ビットマップデータを取得する.
package com.moonlight_aska.android.intentcamera01;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.widget.ImageView;

public class IntentCamera01 extends Activity {
  private static final int REQUEST_IMAGE_CAPTURE = 0;
  private ImageView imgView;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    imgView = (ImageView)findViewById(R.id.imgview_id);
    // インテントのインスタンス生成
    Intent intent = new Intent();
    // インテントにアクションをセット
    intent.setAction("android.media.action.IMAGE_CAPTURE");
    // カメラアプリ起動
    startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    if(requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
      try {
        // 画像データの取得
        Bitmap img = (Bitmap)data.getExtras().get("data");
        imgView.setImageBitmap(img);
      } catch (Exception e) {

      }
    }
  }
}