2011-12-14 20 views
8

मुझे पता है कि किसी विशेष गीत की शैली को कैसे प्राप्त किया जाए, (getting the genres देखें), लेकिन मैं किसी विशेष शैली के सभी गीतों को पुनर्प्राप्त करना चाहता हूं। चूंकि "शैली" मीडिया आइटम के लिए कॉलम में से एक प्रतीत नहीं होता है, इसलिए मुझे नहीं पता कि कलाकार या एल्बम के विपरीत, एक ही क्वेरी में इसे कैसे किया जाए। क्या कोई कुशल विधि है? Thanx!एंड्रॉइड मेडियास्टोर: एक निश्चित शैली के सभी गाने को कुशलतापूर्वक कैसे प्राप्त करें?

+0

जब तक संगीत की सूची राक्षसी है, मुझे नहीं लगता कि आप सभी गाने प्राप्त करके प्रदर्शन प्रदर्शन के बहुत से पीड़ित होंगे, फिर वहां शैली की जांच करेंगे और एक सूची में सही जोड़ देंगे। – AedonEtLIRA

+0

मेरे पास 2 के गाने हैं, और मेरे सामान्य तेज़ सैमसंग चार्ज पर भी एक प्रगति संवाद डालना चाहते हैं। यह मेरे 600 मेगाहर्ट्ज सस्ता टैबलेट पर बहुत धीमा है (किसी कारण से, धीमी गति से दोगुनी से अधिक)। यदि आवश्यक हो तो मैं यही करूँगा, लेकिन मैं उम्मीद कर रहा था कि एक चाल है जो मुझे याद आ रही है। – MBro

उत्तर

1

आप सामग्री यूआरआई को एक साथ रखकर और मीडियास्टोर से पूछकर ऐसा कर सकते हैं।

String [] cols = new String [] {MediaStore.Audio.Genres.NAME}; 
Cursor cursor = MusicUtils.query(this, 
       ContentUris.withAppendedId(MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI, Long.valueOf(mGenre)), 
       cols, null, null, null); 

यह MusicUtils में कोड है: यहाँ कुछ Android संगीत प्लेयर से उधार कोड है (30k गाने +)

public static Cursor query(Context context, Uri uri, String[] projection, 
     String selection, String[] selectionArgs, String sortOrder, int limit) { 
    try { 
     ContentResolver resolver = context.getContentResolver(); 
     if (resolver == null) { 
      return null; 
     } 
     if (limit > 0) { 
      uri = uri.buildUpon().appendQueryParameter("limit", "" + limit).build(); 
     } 
     return resolver.query(uri, projection, selection, selectionArgs, sortOrder); 
    } catch (UnsupportedOperationException ex) { 
     ErrorReporter.getInstance().putCustomData("UnsupportedOperationException", "true"); 
     return null; 
    } 

} 
13
Uri uri = Audio.Genres.Members.getContentUri("external", genreID); 

String[] projection = new String[]{Audio.Media.TITLE, Audio.Media._ID}; 

Cursor cur = contentResolver.query(uri, projection, null, null, null); 
+0

क्या आप कुछ पाठ जोड़ सकते हैं जो आपने यहां समझाया है? – Flexo

+0

Audio.Genres.Members.getContentUri ("बाहरी", genreID) यूरी बनाता है, जैसे (सामग्री: // मीडिया/बाहरी/ऑडियो/शैलियों/2/सदस्य) जहां "बाहरी" का अर्थ है, हम बाहरी सामग्री के माध्यम से खोज करेंगे, और "2" शैली आईडी है। ContentResolver.query (...) दिए गए यूरी से पूछताछ करें और परिणाम सेट पर एक कर्सर देता है। –

+0

@AlexanderMikhalevich क्या आप कृपया इस http://stackoverflow.com/questions/25235127/cleanest-method-to-play-songs-from-album-artist-genre-in-android –