Beiträge von kodela

    Hallo Christopher,


    die Sache hat sich für mich erledigt. Das mit dem Abbruch der Eingabe nach 100 Zeichen ist wohl auf einen Fehler von mir zurückzuführen. Eigenartig ist höchstens, dass es mir zweimal hintereinander passierte. Ich habe es aber auch mit einem Galaxy S3 mini versucht. Da wurde die Eingabe angenommen, aber auch hier kam die Fehlermeldung, dass diese MRL nicht abgespielt werden könne.


    Darauf versuchte ich die Eingabe mit dem Galaxy A3 noch einmal über die Tastatur und kam bis zum Ende. Also auch hier funktioniert die Eingabe, aber die MRL kann nicht wiedergegeben werden.


    Daraufhin habe ich mit den beiden Smartphones noch eine Reihe weiterer Tests gemacht, alle mit MRLs für Internetradio. Alle kürzeren MRLs funktionierten bei beiden Geräten, alle langen nicht, wobei ich die Grenze bei einer Stringlänge von 100 Zeichen vermute. Leider habe ich keine MRLs gefunden, deren Länge genau in diesem Grenzbereicht liegt, aber alle meine Radiostreams unter 100 Zeichen funktionieren mit den beiden Smartphones, alle mit mehr als 100 Zeichen funktionieren nicht. Mit dem Tablet Galaxy Tab A funktionieren alle MRLs, ob kurz oder lang.


    Wie gesagt, die Sache hat sich für mich erledigt, sie ist es mir nicht Wert, noch mehr Zeit dafür aufzuwenden.
    Ich bedanke mich nochmals für Dein Interesse und die Hinweise, die Du mir gegeben hast.


    MfG, kodela

    Hallo,


    das Problem könnte ja grundsätzlich auch an fehlenden Rechten liegen, was aber im konkreten Fall meiner Ansicht nach auszuschließen ist, denn die VLC-App hat bei mir folgende Rechte:

    • SD-Karteninhalte lesen, ändern oder löschen
    • Netzwerkstatus anzeigen
    • Vollständiger Internetzugriff
    • Ruhezustand deaktivieren
    • Vibrationsfunktion steuern
    • Audioeinstellungen ändern
    • Globale Systemeinstellungen ändern

    Das sind die selben Rechte wie die VLC.App auf dem Tablet hat und da gibt es kein Problem.


    Nochmals zum Gerät: Samsung Galaxy A3, Android 5.0.2


    MfG, kodela

    Hallo Christopher,


    seit meinem letzten Beitrag hat sich bei mir einiges getan und für mein bisher geschildertes Problem habe ich eine Lösung gefunden. Wie es aber meistens ist, war das eine Loch gestopft und schon tauchte das nächste auf. Doch ich will der Reihe nach schildern, um was es mir geht und wo ich noch hänge.


    Zuerst danke für Deine Antwort. Leider kann ich keinen Code hier zeigen, denn es gibt keinen. Also, um was geht es dann.


    Seit einiger Zeit kann man über DAB+ zumindest in Bayern den Sender "Bayern Heimat" des Bayerischen Rundfunks mit einem digitalen Rundfunkgerät empfangen. Dieses Programm wird auch unter folgender MRL als Livestream im Internet angeboten:


    Code
    http://br-mp3-brheimat-m.akacast.akamaistream.net/7/738/326703/v1/gnl.akacast.akamaistream.net/br_mp3_brheimat_m

    Es ist ist vor allem bei älteren Semestern sehr beliebt.


    Meine Frau hat nun in ihrem Arbeitszimmer einen "normalen" Rundfunkempfänger stehen und würde mit diesem "Bayern Heimat" gerne hören. Zumindest ist es nicht möglich, diesen digitalen Sender über den analogen Tuner zu empfangen. Da aber über das Smartphon Galaxy A3 meiner Frau und dem WLAN-Router in meinem Arbeitszimmer der Internetzugriff möglich ist, möchte ich meiner Frau auf diesem Wege das Hören von "Bayern Heimat" ermöglichen.


    Zunächst versuchte ich es erst einmal über mein Tablet Galaxy Tab A. Damit kam es zu dem geschilderten Eingabeproblem. Auch die Versuche, die MRL über eine Wiedergabelistendatei zu starten, scheiterten. Also schrieb ich die MRL in eine Datei und kopierte diese auf die SD-Karte meines Tablets. Von dort öffnete ich die Datei mit dem ES Datei Explorer, kopierte die MRL in die Zwischenablage und fügte sie von dort im VLC ein. Das klappte und nachdem das Tablet mit dem Radiogerät verbunden war, wurde der Sender einwandfrei wiedergegeben.


    Jetzt brauche ich das selbe Prozedere nur noch mit dem Smartphon meiner Frau zu machen, dann kann einer Wiedergabe des gewünschten digitalen Senders über das analoge Rundfunkgerät nichts mehr im Wege stehen - dachte ich mir. Es ließ sich alles gut an und sehr schnell konnte ich der VLC-App auf dem Smartphone meiner Frau die MRL aus der Zwischenablage vorsetzen. Ja, und jetzt bekam ich die Meldung, dass die MRL nicht abgespielt werden könne.


    Da dies mit dem Smartphon meiner Frau mein erster Versuch war, Mediadaten über WLAN mit dem VLC zu empfangen, testete ich einen anderen Stream, welcher von meinem Tablet einwandfrei zu empfangen ist. Doch auch damit bekam ich die besagte Meldung. Was kann dafür der Grund sein. Auf beiden Geräten ist die selbe VLC-App installiert. Die Tatsache, dass mit dem einen Gerät die Wiedergabe möglich ist, mit dem anderen nicht, spricht eigentlich nicht dafür, dass die Ursache bei der VLC-App zu suchen ist. Die Verbindung mit dem Netz funktioniert jedenfalls.


    Leider fehlt mir jede Erfahrung mit Smartphones und Tablets, da ich mich bis vor kurzer Zeit gewehrt hatte, dieses "Spielzeug" zu verwenden. Vielleicht fällt Dir oder jemand anderen etwas zu meinem neuerlichen Problem ein. Auf jeden Fall werde ich selbst weiter nach der Ursache suchen.


    MfG, kodela

    Hallo Christopher,


    ja, ich benutze eine URI, genauer gesagt, die vorstehend schon angeführte MRL. Diese MRL habe ich von der Page, die Du angeführt hast. Es ist also der originale Stream des Bayerischen Rundfunks.


    Was meinst Du mit: "Ansonsten ein String hat keine 100er Länge..."? Ich meine selbstverständlich den Begriff "String" im Sinne einer Zeichenkette und die MRL, um die es geht, ist zweifelsfrei eine Zeichenkette, also ein String und hat eine Länge von 112 Zeichen. Angenommen wurden davon nur genau 100 und als ich das nächste Zeichen eingeben wollte, einen Unterstrich, wurde die Eingabe abgebrochen.


    Ich habe auch die indirekte Eingabe über eine Wiedergabeliste ausprobiert und zwar mit den beiden Formaten m3u und xspf. Beide werden derzeit von Android allem Anschein nach nicht unterstützt.


    MfG, kodela

    Hallo,


    ich wollte für den VLC eine MRL eingeben. Dabei wurde nach genau 100 Zeichen meine Eingabe verworfen. Sie war einfach weg.


    Gibt es irgend welche Beschränkungen für die Länge einer solchen Eingabe? Kann ich mir eigentlich nicht vorstellen.


    So weit kam ich mit meiner Eingabe:


    http://br-mp3-brheimat-m.akacast.akamaistream.net/7/738/326703/v1/gnl.akacast.akamaistream.net/br_mp


    und so wollte ich sie:


    http://br-mp3-brheimat-m.akacast.akamaistream.net/7/738/326703/v1/gnl.akacast.akamaistream.net/br_mp3_brheimat_m


    Bevor ich die Eingabe noch öfters pobiere, wollte ich vorher lieber hier einmal fragen, ob das überhaupt Sinn macht.


    MfG, kodela

    kurze frage, was machst du wenn die nutzer deiner app keine externe speicherkarte haben?

    Hallo ChampS,


    Deine Frage ist berechtigt, die Antwort für mich eigentlich blamabel. Als absolut Ahnungsloser in Sachen Android hatte ich mir darüber keine Gedanken gemacht. Jetzt, da meine Mini-App fertig ist und bereits auf fünf sehr unterschiedlichen Geräten mit und ohne externer Speicherkarte einwandfrei funktioniert, frage ich mich, warum sie auch ohne externe Speicherkarte funktioniert. Ich weiß es nicht.


    MfG, kodela

    Hallo,


    danke an alle, die sich an dieser Diskussion beteiligt haben.


    Wenn ich für mich das Fazit daraus ziehe, komme ich zu dem Ergebnis, dass es auf meine Frage keine einfache Antwort gibt und letztlich die alte Regel gilt, dass Probieren über Studieren geht.


    MfG, kodela

    Danke Christopher,


    mit dem Thema "Hochladen bei Google" habe ich mich noch nicht beschäftigt. Dafür ist meine App wohl zu bescheiden. Sie macht nichts anderes, als eine im reinen Textformat erstellte Liste mit besonderen Tagen, die man nicht vergessen möchte, zum Beispiel Geburts-, Namens- oder Hochzeitstage, auszuwerten und anzuzeigen. Dabei werden auch bewegliche Tage berücksichtigt, zum Beispiel ist der Namenstag für die Patronin Maria Dolores am Freitag vor dem Karfreitag (in Spanien, wo ich viele Freunde habe, sehr wichtig).


    Da diese Liste ja immer wieder überarbeitet werden muss, habe ich sie auf die SD Karte ausgelagert. Von dort kann man sie "ausschneiden" bearbeiten und wieder einfügen. Damit muss man sich bei der Bearbeitung nicht so sehr mit den kleinen Schriftzeichen auf einem Handy herumquälen. Diese Liste wird beim ersten Start der App angelegt. Sie ist zunächst bis auf eine Headerzeile mit dem Defaultwert für die Anzahl der Vorschautage, leer.


    Die Reihenfolge der Eintragungen in der Liste ist beliebig, da die auszugebenden Ereignisse zeitlich sortiert werden.


    Wie gesagt, ist es ein sehr bescheidenes Werk, das ich vor vielen Jahren einmal für meine Bekannten und mich in VB geschrieben und jetzt als App umgesetzt habe. An ein Hochladen bei Google habe ich nicht gedacht, also wird es sich durch Ausprobieren zeigen, bei wem die App funktioniert und bei wem nicht.


    Ich bedanke mich noch einmal für Deine Hilfe zu einer Reihe von aufgetauchten Problemen. Ohne Dich wäre ich sicher noch längst nicht fertig.


    MfG, kodela

    Hallo,


    Ich habe jetzt meine erste kleine und simple App fertig, die auf allen mir bis jetzt zugänglichen Geräten funktioniert. Darunter ist aber kein Galaxy Ace S8530i mit Android 2.3.


    Wie kann ich herausfinden, ob meine App für dieses Gerät geeignet ist?


    MfG, kodela

    Hallo Christopher,


    danke für Deine großartige Hilfe. Ich habe jetzt die benötigten Schreibrechte und kann diese auch für eine reine Textdatei anwenden.


    Dein Hinweis auf <uses-permission> hat mir die Tür zum Verständnis mit dem Umgang der Schreibrechte einen Spalt weit geöffnet. Jetzt habe ich auch die zugehörige Dokumentation gefunden.


    Wegen des Zugriffs auf eine nicht spezialisierte Datei sind die Beispiele in der Dokumentation vielleicht nicht gerade glücklich gewählt worden. "DemoFile.jpg" hier und "DemoPicture.jpg" dort, was macht das für einen Unterschied. Aber auch hier hast Du mir durch den Verzicht auf InputStream als Quelle den richtigen Weg gewiesen.


    Nochmals danke für Deine Hilfe.


    MfG, kodela

    Hallo Christopher,


    danke für Deine Hinweise, die mich leider nicht weiter gebracht haben.


    Ich muss die Bedingungen, unter denen meine App funktionieren soll, noch einmal kurz beschreiben:

    • Die App soll eine Textdatei, welche auf der externen SD Karte gespeichert ist, einlesen und auswerten.
    • Der Anwender soll die Möglichkeit haben, über den PC diese Textdatei zu modifizieren.

    Das funktioniert bereits jetzt einwandfrei, vorausgesetzt ich habe diese Textdatei manuell auf der SD gespeichert, zum Beispiel unter "/Android/data/user.name/files/Download/name.txt".


    Jetzt wollte ich aber, dass die App, wenn beim ersten Start diese Textdatei nicht angelegt ist, den Pfad dafür und die Datei selbst (mit der Headerzeile) erzeugt. Den Java-Quellcode dafür habe ich in meinem ersten Beitrag gezeigt.


    Leider scheitert mein Vorhaben an fehlenden Schreibrechten, so dass ich schon den Pfad für die Datei nicht anlegen kann (Zeile 9 im Quellcode). Es wird weder der Pfad angelegt noch eine Exception ausgelöst.


    Du schlägst nun vor, es mal mit android.permission.WRITE_EXTERNAL_STORAGE zu versuchen. Ja, so ähnlich habe ich mir das auch gedacht, aber es ist mir bisher, trotz Deines Hinweise nicht gelungen, diese Berechtigung richtig in der AndroidManifest.xml einzufügen.


    So wie Du diesen Eintrag geschrieben hast ("android.permission.WRITE_EXTERNAL_STORAGE") wird er an jeder Stelle als "Unbekanntes Attribut" abgelehnt. Auch wenn ich den ersten Punkt durch einen Doppelpunkt ersetze, ändert das nichts.


    Ich habe es mit android:permission="WRITE_EXTERNAL_STORAGE" versucht. Damit wird MainActivity.onCreate() überhaupt nicht mehr aufgerufen.


    Ich habe es mit <android.permission.WRITE_EXTERNAL_STORAGE /> in <intent-filter> versucht, auch mit Doppelpunkt, ohne dass ich eine Wirkung feststellen konnte.


    Kurzum, mit Deinem ersten Vorschlag erreiche ich nichts. Der Pfad wird nicht angelegt.


    Bleibt Dein zweiter Vorschlag, getExternalFilesDir(java.lang.String) zu nutzen. Dazu habe ich auf der Seite http://developer.android.com/r…roid/content/Context.html Beispiele gefunden, die ich aber leider nicht umsetzen konnte.


    Die Beispiele createExternalStoragePrivateFile() oder createExternalStoragePrivatePicture() setzen eine vorhandene Resourcen-Datei in R.drawable voraus. Also fügte ich in R.drawable eine Datei name.txt hinzu. Erkannt werden aber nur Resourecen Dateien, aber keine Textdateien. Also geht es auch damit wieder nicht.


    Könntest Du mir bitte eine aus Deiner Sicht mögliche Konkrete Lösungsvariante aufzeigen?


    MfG, kodela

    Hallo,


    ja, es gibt eine sehr simple Möglichkeit, man muss nur nach dem Verbinden mit dem PC über die Schnelleinstellung (keine Ahnung, ob diese Bezeichnung richtig ist, man erreicht sie jedenfalls durch ein Wischen vom oberen Rand nach unten) darauf achten, dass hier "Als Mediengerät verbunden" und nicht "Als Kamera verbunden" angezeigt wird. Erforderlichenfalls kann diese Einstellung geändert werden.


    MfG, kodela

    Hallo,


    wenn ich mein Galaxy A3 oder S3 mini per USB mit dem PC verbinde, werden vom Inhalt der SD Karte nur Bilddateien (png oder jpg) angezeigt. Ich muss dort auch eine Textdatei platzieren. Die sieht man im Moment, aber spätestens nach einem erneuten Anschluss wird der betreffende Ordner als leer angezeigt. Die Datei ist jedoch mit Sicherheit in diesem Ordner vorhanden. Das betrifft nun nicht nur einen bestimmten sondern alle Ordner.


    Gibt es die Möglichkeitm zum Beispiel einen Filter für die Dateien zu setzen, die angezeigt werden sollen. Wenn ja, wo?


    MfG, kodela

    Hallo,


    meine erste App läuft nun. Es bleibt noch ein Problem. Die App greift auf ein Textdatei zu und wertet deren Inhalt aus.


    Bis jetzt habe ich diese Datei und den Pfad dafür manuell angelegt. Das soll anders werden. Wenn die App diese Datei nicht findet, soll sie angelegt werden. Das ist mir bisher nicht gelungen. Mein Vorhaben scheitert an der Anlage des Ordners für diese Datei.


    Hier der Code in der MainActivity, den ich dafür verwenden möchte:


    Das erste Problem liegt in der Zeile 9. Der Pfad wird nicht erzeugt und es wird auch keine Exception ausgelöst. Ob es noch weitere Probleme gibt, weiß ich noch nicht. Grundsätzlich müsste alles funktionieren, denn ich habe den Code in einem Javaprojekt unter Windows erfolgreich getestet.


    Warum funktioniert dieser Code unter Android nicht? Was mache ich falsch, oder was müsste ich anders oder noch zusätzlich machen.


    MfG, kodela

    Hallo Christopher,


    Dank Deiner Hinweise ist das Problem gelöst.


    Hier der komplette Code für das Herausfinden des Pfades für die auszuwertende Datei, der Aufruf der Java-Datei für die Auswertung und schließlich noch die Anzeige:

    Java
    File f = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
    Jubeltage jubeltage = new Jubeltage(f.getPath()+"/jubeltage.txt");
    String ausgabe = jubeltage.getAusgabe();
    TextView txt_view = (TextView) findViewById(R.id.anzeige_text);
    txt_view.setText(ausgabe);

    Rein durch Zufall habe ich entdeckt, dass ohne mein Zutun auf der SD Karte unter /Android/data folgender Pfad angelegt war: /kodelasjubeltage.vier/files/Download - allgemeiner, /mein_package/files/Download.


    Entdeckt hatte ich dies, da mir mit Ausnahme vom /Download Ordner in keiner der übrigen Ordner, auch nicht in dem von mir angelegten, im Windows Explorer die Datei angezeigt wurde, worauf ich aber, wie bereits erwähnt, nicht verzichten wollte. Mit dem S3 mini wurde die Datei dort problemlos gefunden, mit dem A3 jedoch nicht und deshalb versuchte ich es über den Aufruf von getExternalFilesDir() mit dem Parameter Environment.DIRECTORY_DOWNLOADS und war sehr erstaunt, was ich damit zurück bekam:


    /storage/emulated/0/Android/data/kodelasjubeltage.vier/files/Download


    Unter Windows fand ich diesen Pfad nicht, wohl aber über meine beiden Dateimanager auf dem Gerät. Der komplette Pfad war bereits angelegt. Jetzt musste nur noch die Datei selbst rein, was mit Hilfe des ES Datei Explorers schließlich auch gelang und nach einer Codeanpassung beim nächsten Versuch sofort zum lange erstrebten Ergebnis führte.


    Trotzdem, ein Wermutstropfen bleibt, der oben gezeigte Quellcode funktioniert nur für das A3 Gerät. Für das S3 mini muss, wie bisher auch schon, der Code so aussehen:

    Java
    File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
    Jubeltage jubeltage = new Jubeltage(f.getPath()+"/Download/jubeltage.txt");
    String ausgabe = jubeltage.getAusgabe();
    TextView txt_view = (TextView) findViewById(R.id.anzeige_text);
    txt_view.setText(ausgabe);

    Besteht die Möglichkeit, durch eine Versionsabfrage den Code so zu schreiben, dass er für alle Android Versionen unverändert eingesetzt werden kann? Dafür müsste man natürlich wissen, ab welcher Version diese Änderung erfolgte und wie man die Version abfragen kann, letzteres vermutlich die leichtere Übung.


    MfG, kodela

    Hallo,


    ich habe jetzt auf den SD Karten beider Geräte direkt unter Root einen eigen Ordner für die auszuwertende Datei angelegt. Auch damit funktioniert es unter dem S3 mini. Unter dem A3 wird jedoch nach wie vor an der Stelle, an der diese Datei geöffnet werden soll, eine Exception ("java.io.FileNotFoundException: /storage/emulated/0/jubeltage/jubeltage.txt: open failed: EACCES (Permission denied)") ausgelöst.


    "/storage/emulated/0/" ist der von Environment.getExternalStorageDirectory().getAbsolutePath() gelieferte Root Pfad, "jubeltage/jubeltage.txt" der von mit im Root Pfad angelegte Ordner mit der auszuwertenden Datei.


    Die Datei ist unter Windows und unter zwei Filemanager (Eigene Dateien und ES Datei Explorer) zu sehen, zu öffnen und auch zu editieren. Warum kann dann von der App aus dieser Datei nicht einmal gelesen werden? Alle Suche im Internet half mir bisher auch nicht weiter.


    MfG, kodela

    Hallo Christopher,


    so wie ich es heute Nacht versucht habe, kann es nicht funktionieren, da müsste die Textdatei ja im Rootverzeichnis der SD-Karte liegen, denn der Code dieser Zeile


    File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + fileName);


    sucht mir ja nicht den Ort, an dem die Datei fileName gespeichert ist. Wenn ich es richtig verstanden habe, dann wird hier nur der Rootpath für die Speicherkarte zurückgegeben, an den dann nach einem Seperator der Dateiname angehängt wird.


    Ich habe das deshalb einmal so versucht:

    Java
    File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
    String pfad = f.getPath() + "/Download/dateiName.txt";

    Das ergibt dann zum Beispiel diesen Pfadbezeichner: "/storage/emulated/0/Download/dateiName.txt"


    Aber auch damit funktioniert es mit dem Samsung Galaxy A3 nicht.


    Beim Galaxy S3 mini funktionieren "/sdcard/Download/dateiName.txt" (wie bisher) und "/storage/emulated/0/Download/dateiName.txt" gleichermaßen.


    Es muss also noch irgend einen anderen Grund geben, vermutlich in den Einstellungen des Galaxy A3, durch den der Zugriff auf die Datei verhindert wird. Was kommt hierfür in Frage?


    MfG, kodela



    PS:


    Bei Android-Hilfe habe ich im Thema Bilder und Musik werden nicht mehr von der SD Karte erkannt etwas gefunden, das meinem Problem ziemlich ähnlich ist.


    Frage: Wie kann ich auf der SD Karte ein neues Verzeichnis anlegen? Weder vom PC aus noch über den ES Datei Explorer will mir das gelingen.