您好我使用SurfaceView并通过以下代码拍照
首先我通过此代码开始活动
startActivityForResult(new Intent(PictureEditor.this, CustomCamera.class), CAMERA_REQUEST3);
然后从此代码中获取结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == CAMERA_REQUEST3) {
BitmapFactory.Options abc = new BitmapFactory.Options();
abc.inJustDecodeBounds = true;
BitmapFactory.decodeFile((Environment.getExternalStorageDirectory() + File.separator + "tester.png"), abc);
abc.inSampleSize = calculateInSampleSize(abc, w, h) + 1;
abc.inJustDecodeBounds = false;
view.setBackBitmap(BitmapFactory.decodeFile((Environment.getExternalStorageDirectory() + File.separator + "tester.png"), abc));
}
现在,CustomeCamera类的代码位于
之下 // / Handles when mTakePicture is clicked
private OnClickListener mTakePictureAction = new OnClickListener() {
@Override
public void onClick(View v) {
if (mCamera != null)
mCamera.takePicture(CustomCamera.this);
}
};
然后
@Override
public void takePicture(Activity activity) {
if (mCamera != null)
mCamera.takePicture(shutterCallback, rawCallback, jpegCallback);
Intent returnIntent = new Intent();
activity.setResult(mActivity.RESULT_OK, returnIntent);
activity.finish();
}
问题是图像被捕获但活动没有完成!任何人都可以建议我做什么!
答案 0 :(得分:3)
您需要在此活动开始的先前活动中为onActivityResult()编写完成活动的代码。
所以你以前的活动结束了。 。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case YOUR_REQUEST_CODE:
finish();
}
}
修改:
首先更改此代码。
Intent returnIntent = new Intent();
activity.setResult(Activity.RESULT_OK, returnIntent);
activity.finish();
然后在onActivityResult()中首先检查请求代码条件然后在请求代码条件检查结果代码条件之后。
答案 1 :(得分:0)
我强烈感觉主(UI)线程被卡住了
@Override
public void takePicture(Activity activity) {
if (mCamera != null)
mCamera.takePicture(shutterCallback, rawCallback, jpegCallback);
Intent returnIntent = new Intent();
activity.setResult(mActivity.RESULT_OK, returnIntent);
activity.finish();
}
我不太确定卡在哪里(从上面的代码示例), 可能性
1)图片无法保存
2)图片无法编码
等
您可以通过运行调试器
来测试它