2016-09-18 1 views
0

Je développe une application Android de base de lecteur MP3 avec Firemonkey (Delphi XE6), où les fichiers MP3 seront ajoutés à une carte SD (externe), après l'installation. Ainsi, j'ai besoin de mon application pour pouvoir rechercher ces fichiers MP3 spécifiques, une fois que l'utilisateur a activé/ouvert l'application sur leur appareil.Comment trouver des fichiers spécifiques sur un appareil Android avec Firemonkey?

Le code pour la recherche de fichier est très bien, mais mon problème est de savoir où enregistrer les fichiers sur la carte SD et comment trouver l'emplacement du dossier/répertoire dans le code.

Le concept devrait être très simple, mais Firemonkey rend (apparemment) beaucoup plus difficile que ce qui est censé être.

Voici mon code de recherche de fichier:

var 
sr : TSearchRec; 
i : Integer; 
Storage : String; 
begin 
    //List files found on SD Card on device only, for now 
    Storage := TPath.Combine(TPath.GetMusicPath, '*.mp3'); 
    if FindFirst(Storage, faAnyfile, sr) = 0 then 
    begin 
     repeat 
     listSessions.Items.Add(sr.Name); 
     until FindNext(sr) <> 0; 
    end; 
    FindClose(sr); 
end; 

Tout ce que je veux savoir est, pour l'amour de tout ce qui est bon et pur, où dois-je souligner la recherche? L'emplacement ci-dessus ne procure aucune joie, pas plus que le résultat générique de GetMusicPath. Je ne peux pas vraiment coder en dur le chemin du répertoire, car cela ne fonctionnera que sur un appareil Android. J'ai besoin de cela pour travailler de manière générique sur tous les appareils Android. TPath.GetDocumentsPath, TPAth.GetMusicPath et tous les autres semblables me procurent toutes sortes d'emplacements abandonnés, que je ne trouve même pas dans l'explorateur de fichiers. Par exemple, mon emplacement de musique «générique» (qui est celui que je veux utiliser) renvoie ce chemin: /storage/emulated/0/Android/data/com.embarcadero./files/Music.

Est-ce que je fais quelque chose de mal?

Répondre

0

Qu'est-ce que les conseils de fichier d'aide est - est d'utiliser ceci:

shStorage: = TPath.Combine (TPath.GetSharedMusicPath, '* .mp3');

Cependant, qu'il met simplement à un niveau supérieur dans le chemin des émules ...

ie/stockage/émulé/0/Musique

Get ESExplorer et regardez sous stockage interne - le dossier Musique contiendrait le fichier en utilisant ce qui précède ...

Autre sage, il apparaît dans: /storage/emulated/o/Android/data/com.Your_Domain_ID.YOURPROGID/files/Music

Hope qui aide tous ceux qui cherchent pour cette info.