1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ID3 Android

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von atoml, 25.05.2010.

  1. atoml, 25.05.2010 #1
    atoml

    atoml Threadstarter Junior Mitglied

    Beiträge:
    39
    Erhaltene Danke:
    0
    Registriert seit:
    18.02.2010
    Hi,

    Ich wollt Titel etc. über ID3 auslesen.

    Ich wollte sie über JAudioTagger ausleses.

    Code:
    package com.android.id3;
    
    import java.io.File;
    
    import org.jaudiotagger.audio.AudioFile;
    import org.jaudiotagger.audio.AudioFileIO;
    import org.jaudiotagger.audio.AudioHeader;
    import org.jaudiotagger.tag.Tag;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.EditText;
    
    public class Main extends Activity {
        /** Called when the activity is first created. */
    
        String song, artist, album; // Song, Artist, Album
        String datei = "/sdcard/testmusic/aaa.mp3";
    
        EditText Text;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            File testFile = new File(datei);
            AudioFile audioFile = AudioFileIO.read(new File("/sdcard/testmusic/aaa.mp3"));
            Tag tag = audioFile.getTag();
            AudioHeader header = audioFile.getAudioHeader();
    
            String Songlänge = "" + header.getTrackLength();
    
            Text = (EditText) this.findViewById(R.id.EditText01);
            Text.setText("Songlänge : ");
    
        }
    }
    
    
    Leider bekomm ich bei "AudioFile audioFile = AudioFileIO.read(new File("/sdcard/testmusic/aaa.mp3"));" immer einen Fehler, kann also leider nicht den Titelnamen o.ä. auslesen.

    Könnte mir jemand helfen, mit Android hab ich zZ leider noch sehr viel Probleme :D
     
  2. mago, 25.05.2010 #2
    mago

    mago Junior Mitglied

    Beiträge:
    33
    Erhaltene Danke:
    4
    Registriert seit:
    30.04.2010
    Phone:
    HTC Desire
    Welchen Fehler? Ein Blick ins Log wird es Dir verraten.
     
  3. atoml, 26.05.2010 #3
    atoml

    atoml Threadstarter Junior Mitglied

    Beiträge:
    39
    Erhaltene Danke:
    0
    Registriert seit:
    18.02.2010
    [​IMG]
     
    Zuletzt bearbeitet: 26.05.2010
  4. the_alien, 26.05.2010 #4
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Log! Findeste unter DDMS in Eclipse oder auf der Konsole "adb logcat".
    Da gibts den ganzen Stacktrace!
     
  5. FelixL, 26.05.2010 #5
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    Ich denke er meinte Logcat, mach dich mal darüber schlau. Bringt dir immer viel, wenn du z.B. die Berechtigung zum lesen der SD-Karte vergessen hast, wird er dir das dort sagen.
    Hab leider gerade keine Schritt-für-Schritt-Anleitung zu Logcat hier, aber du findest vielleicht hier im Forum oder über Google was dazu.

    Kann sein das ich was vergessen habe, aber es müsste so gehen:
    Handy über USB anschließen, debugging in den Einstellungen aktivieren. Alternativ Emulator benutzen, ich benutz aber halt immer mein Hero :p.
    In der Eingabeaufforderung im SDK-Verzeichnis in den Unterordner /tools navigieren.
    Da dann adb logcat oder, besser noch, ddms eingeben.
    ddms beinhaltet logcat (im unteren Bereich) und ein paar weitere praktische Funktionen.
    Dann die App starten und den Fehler verursachen. Text lesen und nachdenken, wenn da nichts eindeutiges steht, hier den Text reinstellen.

    Edit: Langsamer, aber ausführlicher :p

    Zusatz:
    http://developer.android.com/guide/developing/tools/ddms.html
     
    Zuletzt bearbeitet: 26.05.2010
  6. atoml, 26.05.2010 #6
    atoml

    atoml Threadstarter Junior Mitglied

    Beiträge:
    39
    Erhaltene Danke:
    0
    Registriert seit:
    18.02.2010
    Ich kann das Programm wegen diesem Fehler garnicht starten...
     
  7. mago, 26.05.2010 #7
    mago

    mago Junior Mitglied

    Beiträge:
    33
    Erhaltene Danke:
    4
    Registriert seit:
    30.04.2010
    Phone:
    HTC Desire
    ...und mit logcat kannst Du dann den gesamten Stacktrace sehen.

    Aber aus den Exceptions in Deinem Screenshot wird auch so schon klar, dass die Datei nicht gelesen werden kann. That's it.
    Es wird so sein, wie FelixL schon schrieb - deine Anwendung hat vermutlich nicht die Berechtigung von der SD-Karte zu lesen.
     
  8. MetBo, 26.05.2010 #8
    MetBo

    MetBo Fortgeschrittenes Mitglied

    Beiträge:
    264
    Erhaltene Danke:
    4
    Registriert seit:
    14.05.2010
    schreibe in die androidmanifest.xml unter
    Code:
    </application>
    folgendes
    Code:
    <uses-permission android:name="android.permission-group.STORAGE" />
    Damit setzt du die Berechtigungen.

    Grüße
     
  9. FelixL, 26.05.2010 #9
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    Damit meinte ich dann in deinem Fall: die App versuchen zu starten ;)
    Halt einfach wie vorher auch einen Testlauf machen, ich kann das nicht noch "einfacher" formulieren ;)
     
  10. atoml, 26.05.2010 #10
    atoml

    atoml Threadstarter Junior Mitglied

    Beiträge:
    39
    Erhaltene Danke:
    0
    Registriert seit:
    18.02.2010
    So siehts aus, wenn ich es starten will:

    [​IMG]




    Und so, wenn ich alles ab "AudioFile audioFile = AudioFileIO.read(new File("/sdcard/testmusic/aaa.mp3"));" auskommentiere.

    [​IMG]




    Hab bei beiden die Storage permission hinzugefüght
     
    Zuletzt bearbeitet: 26.05.2010
  11. FelixL, 26.05.2010 #11
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    Neben der Zeile mit dem Problem ist so eine Glühbirne mit rotem Kreuz. Da gibt dir Eclipse mehr Infos...hast du schon mal was mit Eclipse gemacht?

    Edit: Bin gerade in der Uni, sonst würde ich es auch mal in Eclipse eingeben.
    Naja, jedenfalls dachten wir alle, dass es ein Problem zur Laufzeit geben würde, nicht davor ;)
     
    Zuletzt bearbeitet: 26.05.2010
  12. atoml, 26.05.2010 #12
    atoml

    atoml Threadstarter Junior Mitglied

    Beiträge:
    39
    Erhaltene Danke:
    0
    Registriert seit:
    18.02.2010
    Jop, er will nen try/catch Block machen...

    Ich hatte es schonmal so versucht...

    oh mein Gott, wie peinlich jetzt klappt es, danke nochmal für eure Hilfe.

    Code:
    
    package com.android.id3;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.jaudiotagger.audio.AudioFile;
    import org.jaudiotagger.audio.AudioFileIO;
    import org.jaudiotagger.audio.AudioHeader;
    import org.jaudiotagger.audio.exceptions.CannotReadException;
    import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
    import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
    import org.jaudiotagger.tag.Tag;
    import org.jaudiotagger.tag.TagException;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.EditText;
    
    public class Main extends Activity {
        /** Called when the activity is first created. */
    
        String song, artist, album; // Song, Artist, Album
        AudioFile audioFile;
    
        EditText Text;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        
            try {
                audioFile = AudioFileIO.read(new File("/sdcard/testmusic/aaa.mp3"));
            } catch (CannotReadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (TagException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ReadOnlyFileException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InvalidAudioFrameException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Tag tag = audioFile.getTag();
            AudioHeader header = audioFile.getAudioHeader();
    
            String Titel = "" + tag.getFirstTitle();
    
            Text = (EditText) this.findViewById(R.id.EditText01);
            Text.setText("Titel : " + Titel);
    
        }
    }
    
    
    
    hat vorher bestimmt noch die permission gefehlt...
     
  13. Fr4gg0r, 26.05.2010 #13
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009

    Wenn ein Problem zur Laufzeit auftritt, so wird dieses nicht in Problems abgebildet, sondern stattdessen im Logcat.:)
     

Diese Seite empfehlen