Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   .wav auf FM ok, auf Mobile Flop (https://www.delphipraxis.net/185518-wav-auf-fm-ok-auf-mobile-flop.html)

Sel2012 18. Jun 2015 08:02

.wav auf FM ok, auf Mobile Flop
 
Hallo,
unter FireMonkey habe ich den MediaPlayer auf die Form gezogen und mit 'nem Button Musik gestartet:

procedure TForm7.Button1Click(Sender: TObject);
begin
mediaPlayer1.FileName:= 'a.wav';
mediaPlayer1.Play;
end;

Die wav-Datei habe ich den Debug-Ordner kopiert. Klappt problemlos.

Unter FireMonkey Mobile dasselbe "konstruiert", aber zur Überraschung wird die .wav aus <Debug> gelöscht und das Tablet meckert,
weil es die Datei nicht finden kann. Was soll so'n Scheiß?
Hat jemand eine Erklärung oder gar Lösung?

Photoner 18. Jun 2015 08:43

AW: .wav auf FM ok, auf Mobile Flop
 
Was oder wer löscht die Datei?
Wann wird sie gelöscht?

Daniel 18. Jun 2015 08:51

AW: .wav auf FM ok, auf Mobile Flop
 
Zitat:

Zitat von Sel2012 (Beitrag 1305504)
Was soll so'n Scheiß?

Zuerst einmal frage ich mich das bei Deiner Formulierung. Das ist nicht der Stil des Hauses. Wenn Du hilfreiche Antworten haben möchtest, dann reiße ein wenig zusammen und hilf mit, hier eine angenehme Lese-Atmosphäre zu schaffen.

Davon abgesehen:
Du musst die Datei explizit auf das mobile Gerät übertragen lassen, hierfür ist in der IDE der Bereitstellungs-Manager verantwortlich. Dort musst Du die Datei eintragen, ansonsten ist es kein Wunder, dass sie nicht auf dem Tablet erscheint.

Sel2012 18. Jun 2015 10:39

AW: .wav auf FM ok, auf Mobile Flop
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Daniel (Beitrag 1305512)
Zitat:

Zitat von Sel2012 (Beitrag 1305504)
Was soll so'n Scheiß?

Zuerst einmal frage ich mich das bei Deiner Formulierung. Das ist nicht der Stil des Hauses. Wenn Du hilfreiche Antworten haben möchtest, dann reiße ein wenig zusammen und hilf mit, hier eine angenehme Lese-Atmosphäre zu schaffen.

Davon abgesehen:
Du musst die Datei explizit auf das mobile Gerät übertragen lassen, hierfür ist in der IDE der Bereitstellungs-Manager verantwortlich. Dort musst Du die Datei eintragen, ansonsten ist es kein Wunder, dass sie nicht auf dem Tablet erscheint.

Es ist schon ärgerlich, wenn trotz brauchbarer Vorkenntnisse noch keine Einarbeitung in ein neues Programm so aufwändig und frustrierend war wie bei FireMonkey Mobile. Wobei gerade mit der einfachenPortierung geworben wird.

Die Anleitung "ms-help://embarcadero.rs_xe5/rad/Bereitstellungs-Manager.html" ist vorbildlich. Nur das Ergebnis nicht:
Meinen "Auftrag" siehe im Anhang. Warum der Remote-Status "Nicht verbunden" lautet, weiß ich nicht. Jedenfalls finde ich keine der Dateien im Verzeichnis des Tablets. Trotzdem läuft das Programm, aber ohne .wav.

Sel2012 18. Jun 2015 16:54

AW: .wav auf FM ok, auf Mobile Flop
 
1 von 3 Tablets wird ohne Verbindungsprofil in der Projektverwaltung (über eine Verbindungsleitung)als Ziel erkannt. (Die Zielbezeichnung ist die Modellnummer).
Die benötigten Daten werden anscheinend ohne besonderen Auftrag an den PAServer an das Tablet übertragen. Nur finden kann ich dort nix. Ich kann nur spekulieren, ob das in versteckten Dateien liegt. Ich habe "von Hand" die wav-Datei in alle sichtbaren Ordner kopiert. Aber das Programm findet sie nicht und meckert. Für mich sehr sonderbar...

Sir Rufo 18. Jun 2015 17:21

AW: .wav auf FM ok, auf Mobile Flop
 
Es wäre auch schön, wenn du Delphi-Quellcode in die dafür vorgesehenen
Code:
[DELPHI][/DELPHI]
Tags einschliessen könntest, das würde der Lesbarkeit einen gewaltigen Vorschub leisten.

Zum Thema:

Auf Android werden die Daten anders organisiert als unter Windows, bzw. die Pfade sind nicht analog einfach gleich zu verwenden.

Das sieht man, wenn man in die Doku schaut: http://docwiki.embarcadero.com/Libra...th.GetHomePath

Ich gebe gerne zu, dass ich am Anfang auch etwas verwirrt war, aber ich habe hier nicht herumgestänkert, sondern mir einfach von allen
Delphi-Quellcode:
TPath
Verzeichnissen auf dem Device die Inhalte anzeigen lassen und schon wusste ich welchen Pfad ich nehmen muss.

Des Weiteren findet sich genau hierzu (Bereitstellen von Dateien auf Mobile Devices) auch schon mindestens ein Thema (denn dort habe ich auch etwas geschrieben), wo man also nachschauen könnte.

Zu Schluss sei noch gesagt, dass es sich immer gut macht, wenn man sich mit dem Ziel-Betriebssystem (also hier Android) auseinandersetzt. Dann versteht man auf einmal auch warum was wie passiert wie es passiert.

mkinzler 18. Jun 2015 17:35

AW: .wav auf FM ok, auf Mobile Flop
 
Um was für ein Tablet handelt es sich?
Bei Android werden die im Bereitstellungsmanager hinterlegten Dateien in der dort angegeben Verzeichnisatruktur in ein APK verpackt für iOS in eine ipa.
Diese wird dann auf dem Gerät installiert. Es läuft hier kein PAServer.

Es muss, die von der Zielplatform vorgegebenen Pfade verwendet werden.

http://docwiki.embarcadero.com/RADSt...en_von_Dateien

Daniel 18. Jun 2015 18:01

AW: .wav auf FM ok, auf Mobile Flop
 
Zitat:

Zitat von Sel2012 (Beitrag 1305525)
Eine Bereicherung des guten Tons ist das ja wohl nicht. Von mir stammt der Text nicht!!

Da hast Du in beiden Fällen Recht. Ich habe beide Beiträge daher auch mal rausgenommen.

Sel2012 18. Jun 2015 19:30

AW: .wav auf FM ok, auf Mobile Flop
 
Zitat:

Zitat von mkinzler (Beitrag 1305597)
Um was für ein Tablet handelt es sich?
Bei Android werden die im Bereitstellungsmanager hinterlegten Dateien in der dort angegeben Verzeichnisatruktur in ein APK verpackt für iOS in eine ipa.
Diese wird dann auf dem Gerät installiert. Es läuft hier kein PAServer.

Prestigio Multipad 7.0 HD
Die Dateien müssen also irgendwo sein. Eine externe Karte ist nicht vorhanden. Im Explorer ist nichts sichtbar.

mkinzler 18. Jun 2015 19:39

AW: .wav auf FM ok, auf Mobile Flop
 
Die Systempartition ist auch versteckt. Lass die Dateien nach \assets\internal bereitstellen, dann findest Du diese im Programm mit
Delphi-Quellcode:
TPath.Combine(TPath.GetDocumentsPath, 'filename')

Sel2012 18. Jun 2015 20:30

AW: .wav auf FM ok, auf Mobile Flop
 
Zitat:

Zitat von mkinzler (Beitrag 1305609)
Die Systempartition ist auch versteckt. Lass die Dateien nach \assets\internal bereitstellen, dann findest Du diese im Programm mit
Delphi-Quellcode:
TPath.Combine(TPath.GetDocumentsPath, 'filename')

Mit "\assets\internal" hängt alles, mit "assets\internal" läut's wie gehabt.

Mein Code ist:

procedure TForm7.Button1Click(Sender: TObject);
begin
TPath.Combine(TPath.GetDocumentsPath, 'a.wav'); { Internal }
TPath.Combine(TPath.GetSharedDocumentsPath, 'a.wav'); { External }
mediaPlayer1.FileName:= 'a.wav';
mediaPlayer1.Play;
end;

(ich meine, das ist gut lesbar). :-D
Ich kann auch die ersten beiden Zeilen trennen - das Ergebnis bleibt gleich.

mkinzler 18. Jun 2015 20:39

AW: .wav auf FM ok, auf Mobile Flop
 
Du musst die entscheiden, welchen Pfad Du willst (internal/external; \assets\internal ist internal)

Delphi-Quellcode:
mediaPlayer1.FileName := TPath.Combine(TPath.GetDocumentsPath, 'a.wav');

Sir Rufo 18. Jun 2015 20:57

AW: .wav auf FM ok, auf Mobile Flop
 
Zitat:

Zitat von Sel2012 (Beitrag 1305613)
procedure TForm7.Button1Click(Sender: TObject);
begin
TPath.Combine(TPath.GetDocumentsPath, 'a.wav'); { Internal }
TPath.Combine(TPath.GetSharedDocumentsPath, 'a.wav'); { External }
mediaPlayer1.FileName:= 'a.wav';
mediaPlayer1.Play;
end;

(ich meine, das ist gut lesbar). :-D
Ich kann auch die ersten beiden Zeilen trennen - das Ergebnis bleibt gleich.

Wenn du das meinst, dann ist das so ...
Delphi-Quellcode:
procedure TForm7.Button1Click(Sender: TObject);
begin
  TPath.Combine(TPath.GetDocumentsPath, 'a.wav'); { Internal }
  TPath.Combine(TPath.GetSharedDocumentsPath, 'a.wav'); { External }
  mediaPlayer1.FileName:= 'a.wav';
  mediaPlayer1.Play;
end;
Meine Meinung: Freundliche Fragesteller setzen ihren Code in die Delphi-Tags, allen Anderen empfehle ich es, sonst überlese ich einfach deren Beiträge.

Sel2012 19. Jun 2015 08:34

AW: .wav auf FM ok, auf Mobile Flop
 
[QUOTE=Sir Rufo;1305615]
Zitat:

Zitat von Sel2012 (Beitrag 1305613)

(ich meine, das ist gut lesbar). :-D

Meine Meinung: Freundliche Fragesteller setzen ihren Code in die Delphi-Tags, allen Anderen empfehle ich es, sonst überlese ich einfach deren Beiträge.

Tschulligung, als unbedarfter Forenschreiber hatte ich die gewünschte oder auch sinnvolle Etikette des Codes nicht gekannt, bzw. deren Bedeutung falsch eingeschätzt. Ich musste erst einmal suchen, wie das geht. :-D
Das war keine Ignoranz oder böse Absicht.

Der Eintrag des RemotePfades in der Bereitstellung geht nur mit "assets\internal" und nicht mit "\assets\internal".
Meine Abfrage des Tabletpfades steht unten und das Ergebis lautet: /data/data/com.embarcadero.Media2x/files/a.wav
Die Pfadangabe im Tabletexplorer lautet aber: G:\Android\data\com.embarcadero.Media2x\files
Der zweite data-Ordner fehlt dort in der Anzeige. Folglich kann ich auch a.wav nicht finden. Auf jeden Fall ist nix zu hören.

Im Vergleich mit FireMonkey ist dort zwar Musik zu hören, aber nur wenn ich die in Mobile funktionierende Abfrage des Pfades
ausschalte. Sonst kommt dort:"Datei nicht gefunden". Wieso sind die Codes nicht übertragbar? Da kommt man sich immer wieder vor wie in der Geisterbahn - lauter Überraschungen.

FirMonkey Mobile:
Delphi-Quellcode:
procedure TForm7.Button1Click(Sender: TObject);
begin
//TPath.Combine(TPath.GetDocumentsPath, 'a.wav'); { Internal }
//TPath.Combine(TPath.GetSharedDocumentsPath, 'a.wav'); { External }

 mediaPlayer1.FileName := TPath.Combine(TPath.GetDocumentsPath, 'a.wav');
 Label1.Text:= mediaPlayer1.FileName ; //bis hierhin klappt's

 mediaPlayer1.Play; //kein Ton
end;
FireMonkey:
Delphi-Quellcode:
procedure TForm7.Button1Click(Sender: TObject);

begin
 // MediaPlayer1.FileName := 'a.wav'; //das würde funktionieren

  mediaPlayer1.FileName := TPath.Combine(TPath.GetDocumentsPath, 'a.wav');//das bringt die Fehlermeldung
  Label1.Text:= mediaPlayer1.FileName ;

    MediaPlayer1.Play;
end;

Daniel 19. Jun 2015 08:41

AW: .wav auf FM ok, auf Mobile Flop
 
Ehm ... probier das mal mit einer MP3-Datei aus.
Android hat von Haus aus offenbar keine Unterstützung für Wave-Dateien.

Sel2012 19. Jun 2015 09:27

AW: .wav auf FM ok, auf Mobile Flop
 
Zitat:

Zitat von Daniel (Beitrag 1305651)
Ehm ... probier das mal mit einer MP3-Datei aus.
Android hat von Haus aus offenbar keine Unterstützung für Wave-Dateien.

Doch, unkonprimierte .wavs sollen funktionieren. Das erklärt auch nicht, warum der Pfad anders ist als in der Explorer-Anzeige.
Ich vermute, dass "MediaPlayer1.Play" wieder nicht zur Mobile-Syntax passt.

Der schöne Günther 19. Jun 2015 09:35

AW: .wav auf FM ok, auf Mobile Flop
 
Was ist denn eine "Mobile-Syntax"?

Ich will kein Schlaumeier sein, aber nur mal zu TMediaPlayer in die Doku geschaut, und da steht
Zitat:

In order to play an audio file using TMediaPlayer, use the appropriate format:
- .wav on Windows
- .caf on iOS and Mac OS X
- .3GP on Android
Woher nimmst du, dass "unkomprimierte WAVs" auf z.B. Android funktionieren sollen?

Sel2012 19. Jun 2015 10:04

AW: .wav auf FM ok, auf Mobile Flop
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Der schöne Günther (Beitrag 1305662)
Was ist denn eine "Mobile-Syntax"?

Woher nimmst du, dass "unkomprimierte WAVs" auf z.B. Android funktionieren sollen?

Eine Syntax, die in FireMonkey funktioniert und sonst nicht.

Ich finde im Moment nicht die richtige Android-Seite, siehe aber hier:

Mavarik 19. Jun 2015 10:07

AW: .wav auf FM ok, auf Mobile Flop
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1305662)
Woher nimmst du, dass "unkomprimierte WAVs" auf z.B. Android funktionieren sollen?

Ein Blick in den Source FMX.Media.Abdroid.pas

Delphi-Quellcode:
  TMediaCodecManager.RegisterMediaCodecClass('.mov', SVMOVFiles, TMediaType.Video, TAndroidVideoCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.m4v', SVM4VFiles, TMediaType.Video, TAndroidVideoCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.mp4', SVMP4Files, TMediaType.Video, TAndroidVideoCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.3gp', SV3GPFiles, TMediaType.Video, TAndroidVideoCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.mp3', SVMP3Files, TMediaType.Audio, TAndroidMediaCodec);
  TMediaCodecManager.RegisterMediaCodecClass('.caf', SVCAFFiles, TMediaType.Audio, TAndroidMediaCodec);
Und schon ist die Frage beantwortet...

Daniel 19. Jun 2015 10:15

AW: .wav auf FM ok, auf Mobile Flop
 
http://developer.android.com/guide/a...a-formats.html

In der Tat ist es so, dass ab Android 4.1 PCM/WAVE-Dateien unterstützt:
Zitat:

8- and 16-bit linear PCM (rates up to limit of hardware). Sampling rates for raw PCM recordings at 8000, 16000 and 44100 Hz.
Dennoch findet man mit Tante Google eine hinreichende Menge an Einträgen, in denen sich Nutzer von z.B. Samsung-Geraten darüber beklagen, dass das mit den Wave-Dateien genau nicht geht. Jenseits davon, dass FMX dies offenbar eh nicht hergibt, scheint da grundsätzlich etwas im Argen zu sein.

Sel2012 19. Jun 2015 12:41

AW: .wav auf FM ok, auf Mobile Flop
 
Zitat:

Zitat von Daniel (Beitrag 1305667)
http://developer.android.com/guide/a...a-formats.html

In der Tat ist es so, dass ab Android 4.1 PCM/WAVE-Dateien unterstützt:
Zitat:

8- and 16-bit linear PCM (rates up to limit of hardware). Sampling rates for raw PCM recordings at 8000, 16000 and 44100 Hz.
Dennoch findet man mit Tante Google eine hinreichende Menge an Einträgen, in denen sich Nutzer von z.B. Samsung-Geraten darüber beklagen, dass das mit den Wave-Dateien genau nicht geht. Jenseits davon, dass FMX dies offenbar eh nicht hergibt, scheint da grundsätzlich etwas im Argen zu sein.

Wir haben alle recht. Das Thema kann abgeschlossen werden - bis auf die nicht nötige Erklärung, warum der Pfad falsch angezeigt wird.
Theoretisch - lt. Android - soll .wav möglich sein. Mein praktischer Versuch - nur mit Austausch der Datei - klappt mit .mp3!!!

Danke an alle, die mich so engagiert unterstützt haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz