2016-11-17 13 views
1

私のアプリをorg.blinkenlights.jid3からjaudiotaggerに移行しています。私は正常にmp3タグのほとんどを実装したが、POPMタグで苦労している。私はフレームをゲットしてPOPMを読もうとしています。コードは3つのメソッドをrecongnisesとしてそれは正しい方法であることが表示されます、私はカッコFrameBodyPOPM popmframe = id3v24tag.getFrameに入れておくべきjaudiotagger人気のあるタグ

(Long irating = popmframe.getRating(); 
Long cnt = popmframe.getCounter(); 
String mail = popmframe.getEmailToUser()). 

();. JID3を使用して 次のように私は結果を達成:

try { 

       ID3V2_3_0Tag ID3V2_3_0Tag =  (org.blinkenlights.jid3.v2.ID3V2_3_0Tag) MediaFile.getID3V2Tag(); 
       if (null != ID3V2_3_0Tag) { 
        for (int i = 0; i < ID3V2_3_0Tag.getPOPMFrames().length; i++) { 
         if (ID3V2_3_0Tag.getPOPMFrames()[i] != null) { 
          rating = ID3V2_3_0Tag.getPOPMFrames()[i].getPopularity(); 
          break; 
         } 
        } 
       } 
       rating = rating/50; 
      } catch (ID3Exception e) { 
       e.printStackTrace(); 
      } 

をこれまでに次のコード私が持っているjaudiotaggerを使用して:

  try { 
     MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile); 

     if (musicFile != null && musicFile.hasID3v2Tag()) { 
      ID3v24Tag id3v24tag = musicFile.getID3v2TagAsv24(); 
      FrameBodyPOPM popmframe = id3v24tag.getFrame(??????); 
      Long irating = popmframe.getRating(); 
      Long cnt = popmframe.getCounter(); 
      String mail = popmframe.getEmailToUser(); 

     } 
    } catch (CannotReadException | IOException | TagException 
      | ReadOnlyFileException | InvalidAudioFrameException e5) { 
     throw e5; 
    } 

を質問するためには、私は、このような "などの文字列を入力すると、それは文字列を報告しますが、マークPOPMはそれが必要と報告する:org.jaudiotagger.tag.id3.framebody FramebodyPOPM、見つかったjava.lang.Object

jaudiotaggerライブラリを使用してPOPMタグを読み書きする方法を示すことができる人は誰ですか?

アップデート:私はエラーでとても

FrameBodyPOPM popmframe = (FrameBodyPOPM) id3v24tag.getFrame(ID3v24Frames.FRAME_ID_POPULARIMETER); 

コンパイルが、結果値はフレーム識別子であることを信じている:

java.lang.ClassCastException: org.jaudiotagger.tag.id3.ID3v24Frame cannot be cast to org.jaudiotagger.tag.id3.framebody.FrameBodyPOPM 

しかし、私はID3v24Frameをpopmframe作る場合は、3つの方法があります私はFrameBodyPOPMが正しい方法だと思います。

答えて

0

問題を解決しました。以下のコードは期待通りに動作します。

  try { 
     MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile); 

     if (musicFile != null && musicFile.hasID3v2Tag()) { 
      ID3v23Frame frame = (ID3v23Frame) musicFile.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_POPULARIMETER); 
      FrameBodyPOPM body = (FrameBodyPOPM) frame.getBody(); 
      String mail = body.getEmailToUser(); 
      Long irating = body.getRating(); 
      Long cnt = body.getCounter(); 
     } 
    } catch (CannotReadException | IOException | TagException 
      | ReadOnlyFileException | InvalidAudioFrameException e5) { 
     throw e5; 
    } 
+0

最終的に私はjaudiotaggerを断念しました。いくつかのjava ioファイルが見つからなかったためです。これはgithubのコメント – Theo

+0

を読んだときに繰り返される問題のようです。標準のJava用ではなくAndroid用のJava用に開発されているため、Javaの実装が不完全であるため、現在Androidで動作している問題があります。 –

関連する問題