How to read MP3 file tags

后端 未结 3 1480
花落未央
花落未央 2020-12-01 04:40

I want to have a program that reads metadata from an MP3 file. My program should also able to edit these metadata. What can I do?

I got to search out for some open

3条回答
  •  臣服心动
    2020-12-01 04:59

    For J2ME(which is what I was struggling with), here's the code that worked for me..

    import java.io.InputStream;
    import javax.microedition.io.Connector;
    import javax.microedition.io.file.FileConnection;
    import javax.microedition.lcdui.*;
    import javax.microedition.media.Manager;
    import javax.microedition.media.Player;
    import javax.microedition.media.control.MetaDataControl;
    import javax.microedition.midlet.MIDlet;
    
    public class MetaDataControlMIDlet extends MIDlet implements CommandListener {
      private Display display = null;
      private List list = new List("Message", List.IMPLICIT);
      private Command exitCommand = new Command("Exit", Command.EXIT, 1);
      private Alert alert = new Alert("Message");
      private Player player = null;  
    
      public MetaDataControlMIDlet() {    
        display = Display.getDisplay(this);
        alert.addCommand(exitCommand);
        alert.setCommandListener(this);
        list.addCommand(exitCommand);
        list.setCommandListener(this);
        //display.setCurrent(list);
    
      }
    
      public void startApp() {
          try {
          FileConnection connection = (FileConnection) Connector.open("file:///e:/breathe.mp3");
          InputStream is = null;
          is = connection.openInputStream();
          player = Manager.createPlayer(is, "audio/mp3");
          player.prefetch();
          player.realize();
        } catch (Exception e) {
          alert.setString(e.getMessage());
          display.setCurrent(alert);
          e.printStackTrace();
        }
    
        if (player != null) {
          MetaDataControl mControl = (MetaDataControl) player.getControl("javax.microedition.media.control.MetaDataControl");
          if (mControl == null) {
            alert.setString("No Meta Information");
            display.setCurrent(alert);
          } else {
            String[] keys = mControl.getKeys();
            for (int i = 0; i < keys.length; i++) {
              list.append(keys[i] + " -- " + mControl.getKeyValue(keys[i]), null);
            }
            display.setCurrent(list);
          }
        }
      }
    
      public void commandAction(Command cmd, Displayable disp) {
        if (cmd == exitCommand) {
          notifyDestroyed();
        }
      }
    
      public void pauseApp() {
      }
    
      public void destroyApp(boolean unconditional) {
      }
    
    }
    

提交回复
热议问题