Bagaimana cara menyimpan gambar dari Kamera di Android ke folder tertentu?

Pada dasarnya, yang ingin saya lakukan adalah mengizinkan pengguna membuat folder mereka sendiri dan kemudian pergi ke activity yang berisi button untuk meluncurkan camera.

Dari sana saya ingin meluncurkan camera dan menyimpan gambar camera ke dalam folder yang baru dibuat.

Saya mengalami masalah dengan bagian terakhir menyimpan gambar camera ke dalam folder yang baru dibuat.

Ini Code saya :

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(new OnClickListener() {


        EditText text = (EditText)findViewById(R.id.editText1); 
        EditText text2 = (EditText)findViewById(R.id.editText2);



        @Override
        public void onClick(View v) {

            final String name = text.getText().toString();
            final String placeName = text2.getText().toString(); 

            String place = placeName.substring(0,3);
            String direct = name + place ;

            File folder = new File("/sdcard/CameraTest/" + direct + "/");
            folder.mkdirs();

            Intent myIntent = new Intent(CameraTestActivity.this, Press.class);
            myIntent.putExtra("key", "/sdcard/CameraTest/" + direct + "/");
            startActivity(myIntent);

        }
    });

Dari sini saya beralih ke aktivitas ini:

public class Press extends Activity {


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.afterenter);
        final String direct = this.getIntent().getStringExtra("key");


        // TODO Auto-generated method stub
        Button p = (Button) findViewById(R.id.button2);
        p.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent camera= new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

                startActivityForResult(camera, 1);

            }
        });



    Button np = (Button) findViewById(R.id.button3);
    np.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent next = new Intent(Press.this, CameraTestActivity.class);
            startActivity(next);
        }
    });         
    }
}

Tolong beri tahu saya cara menyimpan gambar dari camera ke dalam folder yang baru dibuat.

Saya ingin pengguna dapat mengambil beberapa gambar dan kemudian menyimpan beberapa gambar tersebut ke dalam folder tertentu.


person Adi Ten    schedule 01.09.2011    source sumber


Jawaban (3)


tambahkan kode ini sebelum memanggil aktivitas kamera,

Uri uriSavedImage=Uri.fromFile(new File("/sdcard/flashCropped.png"));
camera.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
startActivityForResult(camera, 1);
person ilango j    schedule 01.09.2011
comment
Apa keluarannya dan mengapa hal itu harus berhasil? Haruskah seseorang tidak menggunakan semacam konstanta? - person Andrew S; 27.05.2013
comment
MediaStore.EXTRA_OUTPUT adalah konstanta - person Teodor; 05.06.2013
comment
Tidak bekerja. Pasti ada yang salah dengan EXTRA_OUTPUT. - person stdout; 30.10.2015
comment
Edit jawaban Anda dari Masalah yang membingungkan . katakanlah camera adalah variabel intent dalam kode Anda. - person hossein masomzadeh; 21.04.2018

Anda harus menambahkan lokasi file ke maksud pengambilan gambar. Misalnya:

camera.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, [file location]);

Lihat di sini

person Lior Ohana    schedule 01.09.2011

Cobalah ini....

path = Environment.getExternalStorageDirectory() + "/photo1.jpg";
File file = new File(path);
Uri outputFileUri = Uri.fromFile(file);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY);

dan Anda belum menerapkan onActivityResult() Cobalah ini mungkin membantu Anda.

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    System.gc();
    if (requestCode == CAPTURE_IMAGE_ACTIVITY) {
        if (resultCode == Activity.RESULT_OK) {
            try {
                // Call function MakeFolder to create folder structure if
                // its not created
                if(imageBitmap != null) {
                    imageBitmap = null;
                    imageBitmap.recycle();
                }
                MakeFolder();
                // Get file from temp1 file where image has been stored
                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inSampleSize = 3;
                imageBitmap = BitmapFactory.decodeFile(path, options);
                imgForPhotograph.setImageBitmap(imageBitmap);
                isImageTaken = true;
                // Name for image
                IMAGEPATH = getString(R.string.chassisImage)
                        + System.currentTimeMillis();
                SaveImageFile(imageBitmap,IMAGEPATH);
            } catch (Exception e) {
                Toast.makeText(this, "Picture Not taken",
                                Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }
        }
    }
person Richa    schedule 01.09.2011
comment
CAPTURE_IMAGE_ACTIVITY tidak lain hanyalah bilangan bulat, Anda dapat menggunakan nilai interger sederhana pilihan Anda, katakanlah 99/7/67 apa pun. Ini digunakan untuk memeriksa kode permintaan. Misalnya 1 aktivitas dapat memulai banyak aktivitas lainnya tetapi setiap permintaan harus memiliki kode permintaan unik, yang dapat diperiksa saat kembalinya setiap aktivitas di dalam onActivityResult aktivitas utama Anda. Periksa kode permintaan untuk mengetahui aktivitas mana yang telah kembali. - person Kuntal Basu; 27.11.2013