2016-09-18 16 views
0

Firemonkey(Delphi XE6)を搭載した基本的なMP3プレーヤーのAndroidアプリを開発しています。そこでは、MP3ファイルがインストール後のSDカード(外部)に追加されます。したがって、ユーザーがデバイスでアプリケーションを起動/開くと、これらの特定のMP3ファイルを検索できるようにするためにはアプリが必要です。FiremonkeyでAndroidデバイス上の特定のファイルを検索するにはどうすればよいですか?

ファイル検索のコードは問題ありませんが、私の問題はファイルをSDカードに保存する場所とコード内のフォルダ/ディレクトリの場所を見つける方法です。

概念は非常にシンプルであるべきですが、Firemonkeyは(一見)これをはるかに難しくしています。ここで

は、私のファイル検索コードです:

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; 

私が知って欲しいのは、私が検索を指します良いと純粋であることを、すべての愛のために、ありますか?上記の場所は、どんな喜びも提供しないし、一般的なGetMusicPath結果でもありません。私は実際にディレクトリパスをハードコードすることはできません。なぜなら、これは1つのアンドロイドデバイスでしか動作しないからです。私はこれをすべてのアンドロイドデバイスで一般的に動作させる必要があります。

TPath.GetDocumentsPath、TPAth.GetMusicPathなど、すべての種類の神を忘れた場所がありますが、これはファイルエクスプローラでも見つかりません。たとえば、私が使用したいと思う私の「一般的な」音楽の場所は、このパスを返します:/storage/emulated/0/Android/data/com.embarcadero./files/Music。

何か間違っていますか? - ヘルプファイルのアドバイスは何

答えて

0

はこれを使用することです:

shStorage:= TPath.Combine(TPath.GetSharedMusicPath、 '* .MP3');

しかし、単純にエミュレートパスでより高いレベルでそれを置くことを...

すなわち/ストレージ/エミュレート/ 0 /音楽

取得ESExplorerと内部ストレージの下に見える - ミュージックフォルダを...上記を使用してファイルを含んでいるでしょう

その他賢明にそれが表示されます。お探しの方に役立つこと /storage/emulated/o/Android/data/com.Your_Domain_ID.YOURPROGID/files/Music

・ホープこの情報のために。