2012-03-14 8 views

risposta

25

Penso che questo sia quello che stai cercando MyID3 library per impostare e ottenere tag per il file multimediale.

Scarica questo file jar MyID3_for_android e aggiungilo al percorso di creazione del tuo progetto. qui è il codice di esempio. qui pathdata è il percorso del file audio.

  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 
      } 

Felice Coding :)

+3

quando cambio il tag id3, corrompe il file mp3 e non lo rende riproducibile come dice Manan. –

+0

@MKJParekh La tua risposta sta aiutando tanti programmatori e io sono uno di loro Ma ho un problema diverso, forse hai una risposta.Voglio concatenare più file mp3. È possibile ottenere con MyID3. Se hai una risposta, posso pubblicare una domanda. Grazie per il vostro aiuto – Harsh

+0

Francamente @Harsh, non ho lavorare su quella libreria ID3 ..just usato per risolvere questo problema di un amico, ma vi suggerisco che si dovrebbe subito iniziare una domanda a SO con dettaglio completo del tuo problema e sono sicuro che otterrai la tua risposta da qualsiasi angolo del mondo. – MKJParekh

4

E, cosa più importante punto è che i tag ID3 modificati sono stati mostrati solo nella mia app.

Se si modifica il file, chiunque lo vedrà. È possibile creare il proprio database di file multimediali (come Android's database) e memorizzare lì i dati modificati.

+0

così il livello qualitativo che stai dicendo che non dovrei modificare i dati originali, invece metterli in SQLite db, e la visualizzazione che dati memorizzati –

+0

Se non si desidera che le altre app possano vedere i tag ID3 modificati, l'unico modo per farlo è archiviare localmente le informazioni ad es. un database. Se modifichi il file, ogni app può vederlo perché esiste solo quel file. Il tag ID3 che vedi nei mediaplayer non cambierà immediatamente perché altre app o mediascanner di Android dovranno prima riesaminare i file, ma probabilmente lo faranno ad un certo punto nel tempo – zapl

+0

@zapl sì, ma ho trovato una soluzione beter nella risposta di Soni. –

14

In realtà, il codice di FasteKerinns è abbastanza buona. Si dovrebbe solo cambiare

nuova MyID3() scrivere (src, dst, src_set, meta).;

a

nuova MyID3() aggiornamento (src, src_set, meta).;

che significa che non è necessaria la variabile dst.

Additionaly, ho questo pezzo di codice che rinfresca canzone che viene modificato in 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 Proveremo con l'aggiornamento – MKJParekh