2010-11-11 11 views
7

क्या रनटाइम पर गैलरी विजेट में नए छवि संसाधन (एसडी कार्ड से) जोड़ने का कोई अच्छा तरीका है?गतिशील रूप से गैलरी विजेट में चित्र जोड़ें

+0

क्या आप किसी भी साइट को पार्स कर रहे हैं और छवियों को गतिशील रूप से जोड़ना चाहते हैं? –

+0

बिल्कुल एक एसडी कार्ड से नहीं। – eyecreate

उत्तर

25

"नया छवि संसाधन"?

छवि संसाधन आपके .apk एप्लिकेशन पैकेज के अंदर/res/drawable फ़ोल्डर का हिस्सा हैं। आप रनटाइम के दौरान "नया" छवि संसाधन नहीं जोड़ सकते हैं।

क्या आपके मन में कुछ अन्य उपयोग केस है?

संपादित के बाद पोस्टर स्पष्टीकरण:

आप क्रम में मीडिया की दुकान करने के लिए मीडिया फ़ाइलों को जोड़ने के लिए गैलरी विजेट के द्वारा देखा जा करने के लिए है। MediaScanner का प्रयोग करें। मैं अपने कोड में यह सुविधाजनक आवरण का उपयोग करें:

public class MediaScannerWrapper implements 
MediaScannerConnection.MediaScannerConnectionClient { 
    private MediaScannerConnection mConnection; 
    private String mPath; 
    private String mMimeType; 

    // filePath - where to scan; 
    // mime type of media to scan i.e. "image/jpeg". 
    // use "*/*" for any media 
    public MediaScannerWrapper(Context ctx, String filePath, String mime){ 
     mPath = filePath; 
     mMimeType = mime; 
     mConnection = new MediaScannerConnection(ctx, this); 
    } 

    // do the scanning 
    public void scan() { 
     mConnection.connect(); 
    } 

    // start the scan when scanner is ready 
    public void onMediaScannerConnected() { 
     mConnection.scanFile(mPath, mMimeType); 
     Log.w("MediaScannerWrapper", "media file scanned: " + mPath); 
    } 

    public void onScanCompleted(String path, Uri uri) { 
     // when scan is completes, update media file tags 
    } 
} 

फिर MediaScannerWrapper का दृष्टांत और scan() के साथ शुरू करते हैं। उस समय आप एक से अधिक फाइलों को संभालने के लिए इसे ट्विक कर सकते हैं। संकेत: फ़ाइल पथों की सूची पास करें, और फिर mConnection.scanFile के आसपास लूप करें।

+0

हाँ, मैं बाहरी भंडारण पर संग्रहीत छवियों के बारे में बात कर रहा हूं। – eyecreate

+0

तो, यह प्रदर्शित करने के लिए गैलरी विजेट से कैसे जुड़ता है? – eyecreate

+0

गैलरी विजेट मीडिया स्टोर में जोड़े गए सभी फ़ाइलों को प्रदर्शित करता है। –

1

संदेश MediaStore Content Provider प्रसारण जब आप किटकैट से पहले एक फाइल

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAdded))); 

उपकरणों के लिए कार्य करना जोड़ने

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
       Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 

इसके अलावा Lolipop में कार्य करना this

पर एक नजर है और किटकैट मुद्दों को भी हल करना चाहिए।

ContentValues values = new ContentValues(); 
values.put(MediaStore.Images.Media.DATA,"file path"); 
values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg"); 
mContext.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values); 

अनुमति जोड़ें।

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
संबंधित मुद्दे