2012-03-14 24 views
18

मैं ID3 टैग को बदलने के लिए काम कर रहा हूँ, इस तरह के रूप ऑडियो फ़ाइलें, में मेटाडाटा:ऑडियो फ़ाइलों के आईडी 3 टैग (मेटाडाटा) को कैसे प्राप्त करें और सेट करें (बदलें)?

  • कलाकार
  • शीर्षक
  • एल्बम
  • आदि

और कोर बिंदु, । संपादित आईडी 3 टैग केवल मेरे ऐप में दिखाया जाना चाहिए।

उत्तर

25

मुझे लगता है कि आप MyID3 library को मीडिया फ़ाइल के लिए टैग सेट करने और प्राप्त करने के लिए देख रहे हैं।

इस जार फ़ाइल को डाउनलोड करें MyID3_for_android और इसे अपने प्रोजेक्ट के निर्माण पथ में जोड़ें। यहां नमूना कोड है। यहां pathdata ऑडियो फ़ाइल का फ़ाइल पथ है।

  File src = new File(pathdata); 
      MusicMetadataSet src_set = null; 
      try { 
       src_set = new MyID3().read(src); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } // read metadata 

      if (src_set == null) // perhaps no metadata 
      { 
       Log.i("NULL", "NULL"); 
      } 
      else 
      { 
       try{ 
        IMusicMetadata metadata = src_set.getSimplified(); 
        String artist = metadata.getArtist(); 
        String album = metadata.getAlbum(); 
        String song_title = metadata.getSongTitle(); 
        Number track_number = metadata.getTrackNumber(); 
        Log.i("artist", artist); 
        Log.i("album", album); 
       }catch (Exception e) { 
        e.printStackTrace(); 
       } 
       File dst = new File(pathdata); 
       MusicMetadata meta = new MusicMetadata("name"); 
       meta.setAlbum("Chirag"); 
       meta.setArtist("CS"); 
       try { 
        new MyID3().write(src, dst, src_set, meta); 
       } catch (UnsupportedEncodingException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (ID3WriteException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } // write updated metadata 
      } 

मुबारक कोडिंग :)

+3

जब मैं id3 टैग बदलता हूं, तो यह एमपी 3 फ़ाइल को दूषित करता है और इसे मानेन के रूप में खेलने योग्य नहीं बनाता है। –

+0

@MKJParekh आपका उत्तर इतने सारे कोडर की मदद कर रहा है और मैं उनमें से एक हूं लेकिन मुझे अलग समस्या है, हो सकता है कि आपके पास जवाब हो।मैं कई एमपी 3 फाइलों को जोड़ना चाहता हूं। क्या MyID3 के साथ हासिल करना संभव है। यदि आपके पास जवाब है तो मैं एक प्रश्न पोस्ट कर सकता हूं। आपकी सभी मदद के लिए Thanx – Harsh

+0

स्पष्ट रूप से @ हर्ष बोलते हुए, मैंने उस आईडी 3 लाइब्रेरी पर काम नहीं किया है .. मित्र ने इस समस्या को हल करने के लिए इसका इस्तेमाल किया है, लेकिन मैं आपको सुझाव देता हूं कि आपको पूरी तरह से एसओ में एक प्रश्न शुरू करना चाहिए आपकी समस्या का और मुझे यकीन है कि आपको अपना जवाब दुनिया के किसी भी कोने से प्राप्त होगा। – MKJParekh

4

और सबसे महत्वपूर्ण बात यह है कि संपादित आईडी 3 टैग केवल मेरे ऐप में दिखाए गए थे।

यदि आप फ़ाइल संपादित करते हैं तो कोई भी इसे देखेगा। आप मीडियाफाइल का अपना डेटाबेस बना सकते हैं (जैसे Android's database) और केवल संशोधित डेटा स्टोर करें।

+0

तो तुम क्या कह रहे हैं मैं मूल डेटा परिवर्तन नहीं होना चाहिए, बजाय उन्हें SQLite DB में जगह है, और प्रदर्शन कि संग्रहीत डेटा –

+0

यदि आप नहीं चाहते हैं कि कोई अन्य ऐप आपके संशोधित आईडी 3 टैग देख सके तो एकमात्र तरीका यह है कि आप स्थानीय रूप से जानकारी संग्रहीत कर सकते हैं जैसे कि एक डेटाबेस यदि आप फ़ाइल को संशोधित करते हैं, तो प्रत्येक ऐप इसे देख सकता है क्योंकि केवल एक ही फ़ाइल है। Mediaplayers में आप जो आईडी 3 टैग देखते हैं वह तुरंत नहीं बदलेगा क्योंकि अन्य ऐप्स या एंड्रॉइड के मेडियास्कैनर को पहले फाइलों को पुन: स्कैन करना होगा, लेकिन संभवतया यह – zapl

+0

@zapl हां में कुछ समय पर ऐसा करेगा, लेकिन मुझे सोनी के जवाब में बेहतर समाधान मिला। –

14

वास्तव में, FasteKerinns के कोड काफी अच्छा है। आपको बस

नया MyID3() लिखना चाहिए (src, dst, src_set, meta); ।

नई MyID3() अद्यतन (src, src_set, मेटा) करने के लिए;

जिसका अर्थ है कि आपको डीएसटी वैरिएबल की आवश्यकता नहीं है।

Additionaly, मैं कोड के इस टुकड़े जो गीत कि Mediastore में संशोधित किया गया है ताज़ा करता है:

scanner=new MediaScannerConnection(getApplicationContext(), 
      new MediaScannerConnectionClient() {  

     public void onScanCompleted(String path, Uri uri) { 
       scanner.disconnect(); 
     } 

     public void onMediaScannerConnected() { 
       scanner.scanFile(path, "audio/*");  
     } 
    }); 

    scanner.connect(); 
+0

+1 अपडेट के साथ प्रयास करेगा – MKJParekh