android - एंड्रॉइड में कैमरा इन्टेंट से यूरी लें




android-intent camera (2)

सबसे पहले सुनिश्चित करें कि आपकी निर्देशिका बनाई गई है ......

final String dir =  Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ "/Folder/";
     File newdir = new File(dir); 
     newdir.mkdirs();

बटन पर क्लिक करें इस फ़ंक्शन को कॉल करें।

private void capturarFoto() {
 String file = dir+DateFormat.format("yyyy-MM-dd_hhmmss", new Date()).toString()+".jpg";


File newfile = new File(file);
            try {
                newfile.createNewFile();
            } catch (IOException e) {}       

            Uri outputFileUri = Uri.fromFile(newfile);

            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

            startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}

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

    if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
        Log.d("Demo Pic", "Picture is saved");


    }
}

सुनिश्चित करें कि आप मैनिफेस्ट में अनुमति जोड़ते हैं

<uses-permission android:name="android.permission.CAMERA"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

क्लिक पर

 takePic.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent m_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                imageUri = getImageUri();
                m_intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
                startActivityForResult(m_intent, REQUEST_IMAGE_CAPTURE);
            }
        });

परिणाम पर:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_IMAGE_CAPTURE
                    && resultCode == RESULT_OK) {   

                Log.d("test1",""+imageUri);
                Intent shareIntent = new Intent(this, SharePicForm.class);
                shareIntent.putExtra("photo",""+imageUri);
                startActivity(shareIntent);
            }

        }

getImageUri ()

private Uri getImageUri(){
        Uri m_imgUri = null;
        File m_file;
        try {
            SimpleDateFormat m_sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
            m_curentDateandTime = m_sdf.format(new Date());
            m_imagePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + m_curentDateandTime + ".jpg";
            m_file = new File(m_imagePath);
            m_imgUri = Uri.fromFile(m_file);
        } catch (Exception p_e) {
        }
        return m_imgUri;
    }

मैं क्या हासिल करना चाहता हूं, बहुत सरल है, कैमरा कैमरा का इरादा और परिणाम फोटो का यूरी प्राप्त करें। लेकिन ऐसा लगता है कि अलग-अलग डिवाइस के असंगत है और मेरी डिवाइस पर यह बिल्कुल काम नहीं करता है। मैंने एक सार्वजनिक वैरिएबल पर पथ को संग्रहित करने की कोशिश की लेकिन जब मैं इसे प्राप्त करता हूं, तो यह शून्य है, क्या इसे लागू करने का औपचारिक और मानक तरीका है और सभी डिवाइस पर काम करना चाहिए? इसके अलावा, क्या कस्टम पथ प्रदान नहीं करने के लिए कोई तरीका है, लेकिन कैमरा इन्टेंट से डिफ़ॉल्ट यूरी पथ प्राप्त करें?

मदद के लिए धन्यवाद


यदि आपका डिवाइस cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, सम्मान नहीं करता है, तो आप अभी भी उपयोग कर सकते हैं

Uri imageUri = data.getData();

onActivityResult(int requestCode, int resultCode, Intent data) । लेकिन ज्यादातर मामलों में, समस्या यह है कि रैम सीमित है, और सिस्टम आपकी इच्छा को पूरा करने के लिए कैमरा ऐप को पर्याप्त मेमोरी देने के लिए आपकी गतिविधि को नष्ट कर देता है। इसलिए, जब परिणाम वापस आ जाता है, तो आपकी गतिविधि के क्षेत्र को आरम्भ नहीं किया जाता है, और आपको अमित के सुझाव का पालन करना चाहिए और onSavedInstance() और onRestoreInstanceState() onSavedInstance() लागू करना चाहिए।





camera