1

こんにちは、私は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();
    }

問題は画像がキャプチャされていることですが、アクティビティが完了していません! 誰が私に何をすべきかを提案できますか!

4

2 に答える 2

3

you need to write code for finish activity in onActivityResult() in previous activity from where this activity starts.

So your previous activity finish . . .

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode)
    {
         case YOUR_REQUEST_CODE:
                               finish();
    }
}

Edit :

First change this code.

Intent returnIntent = new Intent();
activity.setResult(Activity.RESULT_OK, returnIntent);
activity.finish();

then in onActivityResult() first check the request code condition then after in request code condition check result code condition.

于 2012-12-20T11:06:17.673 に答える
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) 画像をエンコードできません

や。。など

デバッガーを実行してテストできます

于 2012-12-20T11:16:01.480 に答える