2016-09-18 2 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 결과도 아닙니다. 디렉토리 경로를 하드 코드 할 수 없습니다. 그 이유는이 디렉토리가 하나의 안드로이드 장치에서만 작동하기 때문입니다. 모든 안드로이드 기기에서 일반적으로 작동해야합니다.

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

희망 이 정보.

관련 문제