यह एंड्रॉइड मंचों पर एक सामान्य उपयोगकर्ता प्रश्न के रूप में शुरू हुआ। हालांकि यह एक प्रोग्रामिंग सवाल, आवश्यकता के अनुसार बन गया है। मेरी समस्या यहाँ है।मैं एंड्रॉइड पर मीडियास्टोर को रीफ्रेश कैसे कर सकता हूं?
एंड्रॉइड की एक सेवा है - मीडियास्केनर - जो किसी भी समय पृष्ठभूमि में चलता है (मुझे विश्वास है) एसडी कार्ड अन-घुड़सवार और फिर से घुड़सवार है। यह सेवा कार्ड पर सभी मीडिया फ़ाइलों पर डेटा एकत्र करती है, और एक SQLite डीबी प्रदान करती है जिसे संगीत अनुप्रयोगों द्वारा पूछताछ की जा सकती है। अधिकांश संगीत अनुप्रयोग इस सेवा का उपयोग करते हैं क्योंकि यह एसडी कार्ड स्कैनिंग से जुड़े बैटरी-नाली पर बचाता है।
चूंकि मैंने एंड्रॉइड का उपयोग शुरू किया है, इसलिए मुझे लगातार एक समस्या है जिससे एसडी कार्ड से हटाए जाने के बाद भी इस SQLite डीबी में डिवाइस में सिंक्रनाइज़ एम 3 यू प्लेलिस्ट रहती है। यह उस बिंदु पर पहुंच गया है जहां मेरे पास अब तक किसी भी संगीत ऐप में दिखाई देने वाली लगभग 40 प्लेलिस्ट का संग्रह है, कार्ड के लगभग 10 एम 3 यू फाइलें होने के बावजूद। शेष प्लेलिस्ट नहीं खेलती हैं, और खाली हैं। मैं उन्हें संगीत ऐप से हटाकर मैन्युअल रूप से हटा सकता हूं, लेकिन मैं ऐसा करने में बीमार हूं। इन भूत प्लेलिस्ट को हटाने के लिए एक बेहतर तरीका होना चाहिए।
एंड्रॉइड मार्केट - एसडीआरस्कैन और म्यूजिक स्कैनर पर दो ऐप्स हैं, जो वास्तव में ऐसा करते हैं लेकिन उनमें से कोई भी काम नहीं करता है।
मैंने मीडियास्टोर डेटाबेस को रीफ्रेश या डिलीट करने और स्क्रैच से शुरू करने के लिए अपना स्वयं का ऐप लिखने के बारे में सेट किया है, लेकिन मुझे बहुत दूर नहीं मिल रहा है। मैं जो निम्नलिखित कोड चलाता है एक Android एप्लिकेशन मिल गया है:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));
मैं स्कैन करने के लिए एसडी कार्ड के लिए एक रास्ता के रूप में ऑनलाइन इस कोड के कुछ उदाहरण मिल गया है, लेकिन मैं जो भी इसके साथ किसी भी नसीब होने नहीं कर रहा हूँ । कोई सुझाव?
पूर्ण कोड:
package com.roryok.MediaRescan;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
public class MediaRescan extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));
setContentView(R.layout.main);
}
//Rescan the sdcard after copy the file
private void rescanSdcard() throws Exception{
Intent scanIntent = new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory()));
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED);
intentFilter.addDataScheme("file");
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));
}
}
हाय, तुम्हें पता है अगर sendBroadcast (नई आशय (Intent.ACTION_MEDIA_MOUNTED, Uri.parse (करो "file: //" + Environment.getExternalStorageDirectory()))); एसडीकार्ड के लिए काम करेगा जो अतिरिक्त स्लॉट कार्ड हैं? दूसरे शब्दों में getExternalStorageDirectory() sdcard का पथ देता है जो आंतरिक है लेकिन निर्माता को बाहरी कार्ड प्रदान किया जा सकता है? ऐसे कार्ड के लिए मीडिया स्कैनर कैसे शुरू किया जा सकता है? – Ahmed
इस समय ऐसा करने का कोई तरीका नहीं प्रतीत होता है। यह धागा देखें: http://stackoverflow.com/questions/5453708/android-how-to-use-environment-getexternalstoragedirectory – roryok