2

後でアップロードする写真を撮って保存するために、アプリからカメラアクティビティを開始しようとしています。このコードを使用してカメラを起動し、ファイルを保存します。

public Bitmap photo;  //the var the captured picture gets saved in.

//Inside the onCreate.
cameraButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, CAMERA_REQUEST);
    }
});

//The onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    //Gets the photo
    photo = (Bitmap) data.getExtras().get("data");
} 


//this is called from the donebutton's onClickListener
protected void savePicture(String name, Bitmap picture)
{
    try
    { 
        FileOutputStream fOut = new FileOutputStream( Menu.savePath + TransServActivity.fileName + "/" + name + "Problem.png");
        picture.compress(Bitmap.CompressFormat.PNG, 90, fOut);
    }

    catch(Exception e)
    {
        //Puts the error in an error log.
        //TODO put in error log
        Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

アクティビティは Manifest.xml で縦向きにロックされており、写真を縦向きでキャプチャして保存すると、コードは魅力的に機能します。ただし、デバイスが横向きのときに写真をキャプチャして保存すると、このアクティビティは横向きモードで再開され、その後強制的に縦向きになります。

これにより、ビットマップを保存する変数がnullになり、完了ボタンをクリックしても保存されません。そして、 onActivityResult() が呼び出されるかどうかさえわかりません。

これを修正する方法についてのアイデアはありますか?

どうもありがとう、私が得ることができる助けに感謝します//デビッド

4

0 に答える 0