ボタンを押して撮影してSDカードに保存するだけのソース。
package com.android_test;
import java.io.FileOutputStream;
import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
public class AndroidTestActivity extends Activity {
private String filePath;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// カメラの総数
int numberOfCameras = Camera.getNumberOfCameras();
Log.d("個数", String.valueOf(numberOfCameras));
//保存フォルダの取得
filePath = Environment.getExternalStorageDirectory().getPath();// /mnt/sdcard
Log.d("SDカードのパス", filePath );
}
//ボタンが押された時の処理
public void SetButtonOnClick(View v) {
Camera camera = Camera.open(1);//カメラを開く
//カメラ画像を取得
camera.takePicture(null, null, mPictureListener);
}
// JPEGイメージ生成後に呼ばれるコールバック
private Camera.PictureCallback mPictureListener = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
// SDカードにJPEGデータを保存する
if (data != null) {
FileOutputStream myFOS = null;
try {
myFOS = new FileOutputStream( filePath + "/DCIM/Camera/camera_test.jpg");
myFOS.write(data);
myFOS.close();
} catch (Exception e) {
e.printStackTrace();
}
camera.release();
}
}
};
}
マニフェストファイルに追加
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />
撮影した画像 640x480
USBカメラを接続して撮影した画像
Camera.open(0);


0 件のコメント:
コメントを投稿