0

私はより大きなAndroidアプリケーションを作成しており、アプリ内でカメラを使用しています。私がカメラでやりたいのは、ユーザーに写真を撮ってもらい、新しいアクティビティを開始してその画像を表示し、ユーザーが画像を保持するかどうかを決定できるようにすることだけです。次のアクティビティでユーザーに表示できるように、onPictureTakenメソッドからのbyte[]データを単純に保存する方法を理解するのに最も苦労しています。私は多くの異なるルートを試しましたが、どれもうまくいきませんでした。最後に試したのは、Applicationクラスを拡張するglobalsettingsクラスを作成し、その中にbyte []フィールドを作成して、カメラからのbyte []を格納し、別のアクティビティで使用できるようにすることでしたが、グローバル変数はまだありません。設定します。私のCameraActivityコードを以下に示します。

public class CameraActivity extends Activity
{
    CameraPreview Preview;
    Intent intent;
    byte[] image;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cameralayout);
        Preview = new CameraPreview(this);
        ((FrameLayout)findViewById(R.id.uxfmlayPreview)).addView(Preview);
        intent = new Intent(this, PostCaptureActivity.class);
    }

    public void uxbtnCaptureSnap_Click(View v)
    {
        Preview.DeviceCamera.setPreviewCallback(null);
        Preview.DeviceCamera.takePicture(shutterCallback, rawCallback,   jpegCallback);
        startActivity(intent);
        finish();
    }

    public void uxbtnCaptureExit_Click(View v)
    {
        Intent i = new Intent(this, ExploreMenuActivity.class);
        setResult(RESULT_OK);
        startActivity(i);
        finish();
    }

    ShutterCallback shutterCallback = new ShutterCallback()
    {
    public void onShutter() {}
    };

    PictureCallback rawCallback = new PictureCallback() 
    {
    public void onPictureTaken(byte[] data, Camera camera) {}
    };

    PictureCallback jpegCallback = new PictureCallback() 
    {
        public void onPictureTaken(byte[] data, Camera camera)
        {
            ((GlobalSettings)getApplication()).setGlobalImage(data);
            camera.release();
            camera = null;

        }
    };
}

これは、PostCaptureActivity onCreate()メソッドからのコードです。ここでは、画像を変換して、画像ビューのソースとして設定しようとしています。

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.postcapturelayout);
    SnapShot = ((ImageView)findViewById(R.id.uximgSnapshot));
    if(((GlobalSettings)this.getApplication()).getGlobalImage() != null)
    {
        Bitmap b = BitmapFactory.decodeByteArray(((GlobalSettings)this.getApplication()).getGlobalImage(), 0, ((GlobalSettings)this.getApplication()).getGlobalImage().length);
        SnapShot.setImageBitmap(b);
    }
    else
    {
        Toast.makeText(this, "Oops! Picture cannot be saved", Toast.LENGTH_SHORT).show();
    }
}
4

1 に答える 1