2011-01-12 6 views
0

저는 현재 간단한 Android 앱을 개발 중입니다. 지금은로드하여 사운드를 재생하려고합니다. 내가 직면 한 문제는 사운드 파일과 같은 이름의 문자열을 기반으로하는 사운드를 원한다는 것입니다. 그 이유는 코드의 단순성과 코드의 추가 때문입니다.Android 로딩 및 소리 재생 (문자열 기반)

이제 불행히도 실제 사운드를 참조하는 대신 문자열을 두드릴 수는 없지만 문자열을 전체 원시 폴더와 비교하여 일치하는 사운드를 찾거나 다른 대안을 사용할 수없는 몇 가지 방법이 있습니다. 수동으로 모든 사운드를 정의합니까?

감사합니다.

+0

그래서 그것을 밖으로 파고하지만 context.getresources() 나는 확신 방법은 그것에 대한 방법, 당신이 찾고있는 것을 수행이 볼 수 없습니다. "R.raw.filename"과 같은 문자열을 생성하고 그것을 반환합니다. – Emile

답변

1

This pagegetresources().getidentifier()을 사용하는 방법을 설명합니다.

+0

이것은 내가 필요한 것처럼 보입니다. Emile 링크를 가져 주셔서 감사 드리며 시간 내 모든 분들께 감사드립니다. – Chance

+0

getIdentifier 결과를 캐시해야 성능을 많이 사용한다고 생각합니다. – Emile

0

왜이 작업을 수행해야합니까? 파일이 이미 원시 파일에 있고 단순히 파일의 이름이 강하게 보이면이 작업을 수행하는 코드의 양은 참조가 단지 다음과 같을 때 파일을 참조하는 데 더 오래 걸릴 것입니다 :

R.raw.file_name

대신 :

FILE_NAME

그게 전부가 아니라 더 많은 입력, 특히 경우 간단한 응용 프로그램.

+0

응용 프로그램은 사운드 보드에 가깝습니다. 내가 언급 한 방식으로하고 싶은 이유는 많은 사운드가 포함될 것입니다. 그리고 모든 사운드를로드하기 위해 많은 라인을 입력하는 것보다, 단순히 해당 문자열을 기반으로 관련 사운드를로드하고 싶습니다. 앱의 다른 부분에서 이미 존재합니다. – Chance

+0

이 당신의 다음 soundpools에 볼 일을하려고 무엇 경우 http://developer.android.com/reference/android/media/SoundPool.html 는 여러 가지 다른 사운드 파일을 관리 할 수있는 좋은 방법입니다. 하지만 어느 시점에서 파일을 가리켜 야 할 때가 있습니다. 내가 원시 폴더 전체를 참조 할 수있는 방법이 없다면 단순히 파일 이름을 참조로 사용하고 실제 파일을 가리켜서는 훨씬 더 많은 입력을 할 수 있습니다. – Stevy888

0

Reflection 패키지를 사용하여 파일이 존재하는지 확인해보십시오.

조각 전화에

try { 
     Class res = R.raw.class; 
     Field field = res.getField(<yourmediafile>); 
     //If the code reach here, that means media file exists. 
    } catch (Exception e) { 
     //No media file with that name 
    }