ID3 Android

A

atoml

Neues Mitglied
1
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
 
Welchen Fehler? Ein Blick ins Log wird es Dir verraten.
 
errorxw.png
 
Zuletzt bearbeitet:
Log! Findeste unter DDMS in Eclipse oder auf der Konsole "adb logcat".
Da gibts den ganzen Stacktrace!
 
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:
Ich kann das Programm wegen diesem Fehler garnicht starten...
 
...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.
 
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
 
Dann die App starten und den Fehler verursachen.
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 ;)
 
So siehts aus, wenn ich es starten will:

2605.jpg





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

sdsss.jpg





Hab bei beiden die Storage permission hinzugefüght
 
Zuletzt bearbeitet:
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:
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...
 
FelixL schrieb:
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 ;)


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

Ähnliche Themen

M
Antworten
4
Aufrufe
1.150
swa00
swa00
5
Antworten
0
Aufrufe
1.117
586920
5
B
Antworten
4
Aufrufe
433
bb321
B
Zurück
Oben Unten