【发布时间】:2016-06-02 23:34:53
【问题描述】:
场景:
我有一个 Activity (A),它调用另一个 Activity (B) 拍照并将Byte[] 发送回“A”。
Activity B 有一个 Button 用来拍照:
public void onClick(View v) {
//get the current image from the camera
mCamera.takePicture(null, null, mPicture);
Intent data1 = new Intent();
data1.putExtra("byte_array",dataPic);
if (getParent() == null) {
setResult(Activity.RESULT_OK, data1);
} else {
getParent().setResult(Activity.RESULT_OK, data1);
}
finish();
}
这是我的 PictureCallback:
private Camera.PictureCallback mPicture = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE);
if (pictureFile == null){
Log.d(TAG, "Error creating media file, check storage permissions: " +
"no exception written by a boss");
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
dataPic = data;
} catch (FileNotFoundException e) {
Log.d(TAG, "File not found: " + e.getMessage());
} catch (IOException e) {
Log.d(TAG, "Error accessing file: " + e.getMessage());
}
mCamera.stopPreview();
mCamera.release();
}
};
我用startActivityForResult 启动了活动B,并在活动A 中实现了onActivityResult。
问题:
我调试了我的代码并注意到onActivityResult 在onPictureTaken 之前被调用。所以逻辑上Byte[] 为空:(
我还尝试将onClick函数内的代码添加到onPictureTaken函数中(当然没有mCamera.takePicture),
无济于事,仍然为空。
也许我没有看到非常明显的东西,但我就是找不到解决方案。我尝试在这里寻找合适的问题,但找不到任何有用的东西。
问题:
有没有办法等待回调?或者也许是解决问题的另一种方法?
旁注:
请不要建议使用相机意图。
【问题讨论】:
-
也许把
setResult(Activity.RESULT_OK, data1);放在onPictureTaken里面。
标签: android android-activity android-camera