私はカメラのオーバーレイを完成させるためにプログラムを書いていましたが、onPictureTaken()で変数 "image_data"を設定したときに値がすぐに変わらず、私は再びonPictureTakenを呼び出すときに値 私はそれを解決することはできません、誰も私を助けることができますか?カメラのプレビューonPictureTakenはアンドロイドの間違ったデータを返します
private PictureCallback jpegCallback = new PictureCallback()
{public void setImageData(byte[] b) {
image_data = b;
}
@Override
public void onPictureTaken(byte[] data, Camera camera)
{
if (mCamera != null){
mCamera.startPreview();}
FileOutputStream outStream = null;
try {
// Write to SD Card
outStream = new FileOutputStream(String.format("/sdcard/%d.jpg",
System.currentTimeMillis()));
outStream.write(data);
outStream.close();
Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
Log.d(TAG, String.valueOf(data));
image_data = data;
setImageData(data); //neither direct assign nor setImageData are invalid
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
Log.d(TAG, "onPictureTaken - jpeg");
}
};
CameraTestActivityコード
mCamera.takePicture();
Toast toast = Toast.makeText(CameraTestActivity.this,
"PhotoTaken"+mCamera.getImageData(), Toast.LENGTH_LONG);
toast.show();
と最初の写真撮影したトーストショー "が撮影さヌル" 二次出力が "撮影さBする@ c4f05e2"
は、以下では、logcatデータで
12-03 22:19:20.416 21589-21589/com.example.acer.camerapreview
D/CameraTest.VersionedCamera: onPictureTaken - wrote bytes: 1644369
12-03 22:19:20.416 21589-21589/com.example.acer.camerapreview
D/CameraTest.VersionedCamera: [[email protected]
12-03 22:19:29.631 21589-21589/com.example.acer.camerapreview
D/CameraTest.VersionedCamera: onPictureTaken - wrote bytes: 1622238
12-03 22:19:29.631 21589-21589/com.example.acer.camerapreview
D/CameraTest.VersionedCamera: [[email protected]
'私はobPictureTaken(コール1回目)には、nullを返しました。 '??? onPictureTaken()は呼び出されません。あなたもいません。それはvoid関数なのでnullを返すことはできません。あなたの言葉はまったく意味がありません。 – greenapps
トーストをonPictureTakenに置く必要があります。可能であれば。 – greenapps
私の英語はうまくいきません。気にしないでください。私はonPictureTaken()で変数 "image_data"を設定するとすぐに値を変更しません。 –