0
我一直在研究一個應用程序,需要我從本機代碼播放適當的鈴聲。直到現在,我發現我的問題沒有解決方案。是否有任何已知的方式獲取鈴聲字節解碼和播放它們:即OpenSL ES?從Android上的本機代碼讀取鈴聲文件
我現在的感覺是,這些文件中,一般情況下,保護和需要被訪問超級用戶或其他一些見不得人的機制。它是否正確?
在此先感謝。
我一直在研究一個應用程序,需要我從本機代碼播放適當的鈴聲。直到現在,我發現我的問題沒有解決方案。是否有任何已知的方式獲取鈴聲字節解碼和播放它們:即OpenSL ES?從Android上的本機代碼讀取鈴聲文件
我現在的感覺是,這些文件中,一般情況下,保護和需要被訪問超級用戶或其他一些見不得人的機制。它是否正確?
在此先感謝。
我已經爲這個問題找到了一個可行的解決方案,它包含1個JNI調用以獲得ParcelFileDescriptor
,以便獲得本地可用於OpenSLES的相應FD。 只需要記住保存ParcelFileDescriptor
爲末收盤的FD和沒有得到垃圾收集。
注:所需要的API級別是12拿到FD
注2:如果Wnt信號可以detachFd()
,然後你必須關閉FD上的原生代碼,並不需要保持基準。
static public ParcelFileDescriptor getFileDescriptor(Context context) {
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
ContentResolver contentResolver = context.getContentResolver();
ParcelFileDescriptor openFileDescriptor;
try {
openFileDescriptor = contentResolver.openFileDescriptor(uri, "r");
} catch (FileNotFoundException e) {
return null;
}
return openFileDescriptor;
}
http://stackoverflow.com/questions/3289038/play-audio-file-from-the-assets-directory – 2013-03-04 17:22:11