0

私は、ImageView を介してドローアブル フォルダーから画像ファイルを読み取るプロジェクトに取り組んでおり、正常にロードされました。

ImageView view = (ImageView) findViewById(R.id.imageView);
view.setOnTouchListener(this);
buttonTakePicture = (Button) findViewById(R.id.takepicture);
buttonTakePicture.setOnClickListener(new Button.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        camera.takePicture(myShutterCallback, myPictureCallback_RAW,
            myPictureCallback_JPG);

takePictureボタンを押した後、画像はsdcardに保存されます。スナップショットを撮っていますが、それで画像を保存していません。コードは以下のとおりです

File file = new File(mScreenshotPath + "/" + System.currentTimeMillis() + ".jpg");
FileOutputStream fos;
try {
    imageFileOS = getContentResolver().openOutputStream(uriTarget);
    imageFileOS.write(arg0);
    imageFileOS.flush();
    imageFileOS.close();
    fos = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    fos.close();
    Toast.makeText(AndroidCamera.this,
            "Image saved: " + uriTarget.toString(),
            Toast.LENGTH_LONG).show();

この問題について私を助けてください....よろしくお願いします

4

2 に答える 2

3

OutputStream やそれに付随するその他すべてのロジックを必要とせずに、Android に写真を保存できます。これは、あなたが達成しようとしていると私が思うことを行う簡単なレシピです. Intent と、それを使用して画像の保存を設定する方法に特に注意してください。これは、どこが間違っていると思いますか。

public class PhotoActivity extends Activity implements OnClickListener {

private Button takePicture;
private String path;
private File imageFile;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);
    takePicture = (Button) findViewById(R.id.button1);
    takePicture.setOnClickListener(this);

    path = Environment.getExternalStorageDirectory() + "/my_image.png";
    imageFile = new File(path);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.button1:
        Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        Uri uri = Uri.fromFile(imageFile);
        i.putExtra(MediaStore.EXTRA_OUTPUT, uri);

        startActivity(i);
        break;
    }
}
}
于 2012-04-18T01:25:59.663 に答える
1
  private static final int CAMERA_REQUEST = 1888;  
    buttonTakePicture.setOnClickListener(new Button.OnClickListener() {
                @Override
                public void onClick(View arg0) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());

    startActivityForResult(intent, CAMERA_REQUEST);

                    }

            });

    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);

            if (requestCode == CAMERA_REQUEST) {

                    photo = (Bitmap) data.getExtras().get("data");



                }
    }

    private Uri getImageUri() {


            File file1 = new File(Environment.getExternalStorageDirectory() + "/Camerafolder");
            if (!file1.exists())
            {
                file1.mkdirs();
            }

            File file = new File(Environment.getExternalStorageDirectory() + "/Camerafolder/"+"img"+".png");

    Uri imgUri = Uri.fromFile(file);

            return imgUri;
        }
于 2012-04-18T05:12:53.657 に答える