0

私はこの些細な問題を解決するために多くの時間を費やしてきましたが、多くのチュートリアルや以前に尋ねられた質問を読んだ後でも、輪になって進んでいるようです。私はプログラミングの初心者ですが、より良くなり、間違いを通して学ぶことが最善の方法であると信じたいと思っています。

誰かがこのコードの問題を特定し、デバイスのカメラで撮影した写真を破棄してプレビューするのではなく、後で電話に保存できるようにするために何ができるかを特定するのを手伝ってもらえますか?

前もって感謝します!

関連するクラスのJavaコード:

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;

public class Activity_Camera extends Activity implements View.OnClickListener {

    public static final int cameraData = 1;

    ImageButton ib;
    ImageView iv;
    Intent i;
    Bitmap bmp;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.Info:

            Intent i = new Intent(this, Help.class);
            startActivity(i);

            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_camera);
        initialise();
    }

    private void initialise() {
        iv = (ImageView) findViewById(R.id.ivPicReturn);
        ib = (ImageButton) findViewById(R.id.ibTakePic);

        ib.setOnClickListener(this);
    }

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.ibTakePic:
            i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            //
            i.putExtra(MediaStore.EXTRA_OUTPUT, getOutputMediaFileUri());
            //
            startActivityForResult(i, cameraData);
            break;
        }
    }
    //
    private String getOutputMediaFileUri() {
        File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
        imagesFolder.mkdirs();   
        File image = new File(imagesFolder, "image.jpg");
        Uri uriSavedImage = Uri.fromFile(image);
        Intent imageIntent = null;
        imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);       
        return null;
    }
    //
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            bmp = (Bitmap) extras.get("data");
            iv.setImageBitmap(bmp);

        }

    }

}
4

1 に答える 1

3

return null;あなたはあなたの中でnullを返し ているのでgetOutputMediaFileUri

代わりにこれを試してください

public void onClick(View v) {
    switch (v.getId()) {
    case R.id.ibTakePic:
        i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        i.putExtra(MediaStore.EXTRA_OUTPUT, getOutputMediaFileUri());
        startActivityForResult(i, cameraData);
        break;
    }
}

private Uri getOutputMediaFileUri() {
    File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
    imagesFolder.mkdirs();   
    File image = new File(imagesFolder, "image.jpg");
    return Uri.fromFile(image);
}
于 2013-03-06T02:56:46.463 に答える