背景 こんにちは、私はコードで自分自身を実装したカメラを持っています。これは、カメラのハードウェアにアクセスして制御し、それを使用して写真を保存することを意味します。カメラの実行中に Camera.takePicture() 関数を使用して画像を保存できます。実行中は Camera.startPreview(); を意味します。
問題私の問題は、カメラ画像がフリーズ しているときにも画像を保存できるようにしたいということです。フリーズすると、レイアウトに画像が表示されますが、どうすればアクセスできますか? 後で変更できるように、画像はどこに保存されますか?
前もって感謝します!
------------------アップデート1
jpeg bla;
public class jpeg implements PictureCallback{
public void onPictureTaken(byte[] data, Camera camera) {
g_data = data;
}
}
これは私のコードの一部です。ここでは、もともとグローバル変数に保存されるデータを書き込もうとしています。ただし、g_data の値は null のままで、onPictureTaken() コールバック関数内にブレークポイントを設定できません。
------------------アップデート2
FileOutputStream outStream = null;
try {
// generate the folder
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MirrorMirror");
if( !imagesFolder.exists() ) {
imagesFolder.mkdirs();
}
// generate new image name
SimpleDateFormat formatter = new SimpleDateFormat("HH_mm_ss");
Date now = new Date();
String fileName = "image_" + formatter.format(now) + ".jpg";
// create outstream and write data
File image = new File(imagesFolder, fileName);
outStream = new FileOutputStream(image);
outStream.write(data);
outStream.close();
Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
} catch (FileNotFoundException e) { // <10>
//Toast.makeText(ctx, "Exception #2", Toast.LENGTH_LONG).show();
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {}
以前、このコードを使用して、カメラの onPictureTaken() 関数からファイルを保存しました。ここで重要なのは、保存して後で保存する必要がある byte[] データです。ただし、先ほど言ったように、デバッガーでチェックすると null が返されます。