2011-09-01 29 views
9

अरे मैं एंड्रॉइड के लिए नया हूं और मैं हाल ही में एक ऐप बनाने की कोशिश कर रहा हूं। असल में, मैं जो करना चाहता हूं वह उपयोगकर्ता को अपना फ़ोल्डर बनाने की अनुमति देता है और फिर उस गतिविधि पर जाता है जिसमें कैमरा लॉन्च करने के लिए बटन होता है। वहां से मैं कैमरे को लॉन्च करने और कैमरे की छवियों को नए बनाए गए फ़ोल्डर में सहेजने में सक्षम होना चाहता हूं। मुझे कैमरे की छवियों को नए बनाए गए फ़ोल्डर में सहेजने के आखिरी हिस्से में परेशानी हो रही है।एंड्रॉइड में कैमरे से विशिष्ट फ़ोल्डर में छवियों को कैसे सहेजना है?

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); 

     } 
    }); 

यहाँ से मैं इस गतिविधि में संक्रमण:

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); 
     } 
    });   
    } 
} 

कृपया मुझे बताओ कैसे नव निर्मित फ़ोल्डर में कैमरे से छवियों को बचाने के लिए। मैं चाहता हूं कि उपयोगकर्ता कई चित्रों को लेने में सक्षम हो और फिर इन विशिष्ट चित्रों को उस विशिष्ट फ़ोल्डर में सहेजें। अग्रिम में धन्यवाद!

उत्तर

11

ले लो कैमरा गतिविधि कॉल करने से पहले इस कोड को जोड़ने के लिए,

Uri uriSavedImage=Uri.fromFile(new File("/sdcard/flashCropped.png")); 
camera.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 
startActivityForResult(camera, 1); 
+0

क्या है पाने की कोशिश "आउटपुट "और यह क्यों काम करना चाहिए? क्या किसी को किसी प्रकार का निरंतर उपयोग नहीं करना चाहिए? –

+0

MediaStore.EXTRA_OUTPUT स्थिर – Teodor

+2

काम नहीं कर रहा है। EXTRA_OUTPUT के साथ निश्चित रूप से कुछ गलत है। – zgulser

0

आपको छवि कैप्चर इरादे में फ़ाइल स्थान जोड़ना चाहिए। उदाहरण के लिए:

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

एक नज़र here

1

इस बाहर की कोशिश करो ....

पथ = 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); 

और आप onActivityResult कार्यान्वित नहीं किया .... यह मदद मिल सकती है यू

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(); 
      } 
     } 
    } 

आशा है कि आप यह ..........

+1

CAPTURE_IMAGE_ACTIVITY एक पूर्णांक के अलावा कुछ भी नहीं है, आप अपनी पसंद के सरल अंतराल मूल्य का उपयोग 99/7/67 कुछ भी कह सकते हैं। इसका उपयोग अनुरोध कोड की जांच के लिए किया जाता है। उदाहरण के लिए 1 गतिविधि कई अन्य गतिविधियां शुरू कर सकती है लेकिन प्रत्येक अनुरोध में अनन्य अनुरोध कोड होना चाहिए, जिसे आपकी मुख्य गतिविधि में एक्टिविटी रिसेट के अंदर हर गतिविधि की वापसी पर जांच की जा सकती है। यह जानने के लिए अनुरोध कोड जांचें कि कौन सी गतिविधि वापस आई है। –

+0

@ रिचा क्या है ImageTaken किस तरह का है ImageTaken चर .... – Amitsharma