Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将文件传递给JNI以便在OpenSL ES AudioPlayer中播放?_Java_C_Android Ndk_Java Native Interface_Opensl - Fatal编程技术网

Java 如何将文件传递给JNI以便在OpenSL ES AudioPlayer中播放?

Java 如何将文件传递给JNI以便在OpenSL ES AudioPlayer中播放?,java,c,android-ndk,java-native-interface,opensl,Java,C,Android Ndk,Java Native Interface,Opensl,我尝试创建AudioPlayer(根据本机Audio NDK示例),但不使用AssetManager,因为要播放的文件是动态下载的,因此不会打包为ASSET 因此,我想知道是否可以将FileDescriptor从Java传递到JNI,以便在以下示例JNI代码中使用(不使用AssetManager): 任何帮助都将不胜感激 不确定这是否准确地回答了这个问题,但下面是我找到的一些从sd卡读取文件的代码。如果您要将文件下载到外部存储器,这应该适用于您: SLchar path[] = "/sdcard

我尝试创建AudioPlayer(根据本机Audio NDK示例),但不使用AssetManager,因为要播放的文件是动态下载的,因此不会打包为ASSET

因此,我想知道是否可以将FileDescriptor从Java传递到JNI,以便在以下示例JNI代码中使用(不使用AssetManager):


任何帮助都将不胜感激

不确定这是否准确地回答了这个问题,但下面是我找到的一些从sd卡读取文件的代码。如果您要将文件下载到外部存储器,这应该适用于您:

SLchar path[] = "/sdcard/audio/my_audio.mp3" ;
SLDataLocator_URI loc_uri = {SL_DATALOCATOR_URI, path};
SLDataFormat_MIME format_mime = {SL_DATAFORMAT_MIME, NULL,
        SL_CONTAINERTYPE_UNSPECIFIED};
SLDataSource audioSrc = {&loc_uri, &format_mime};

你有没有想过?想发布答案吗?我没有,不幸的是,我们只是在JNI端将声音文件硬编码为字节数组。
/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */ typedef struct SLDataLocator_AndroidFD_ {
    SLuint32        locatorType;
    SLint32         fd;
    SLAint64        offset;
    SLAint64        length; } SLDataLocator_AndroidFD;
SLchar path[] = "/sdcard/audio/my_audio.mp3" ;
SLDataLocator_URI loc_uri = {SL_DATALOCATOR_URI, path};
SLDataFormat_MIME format_mime = {SL_DATAFORMAT_MIME, NULL,
        SL_CONTAINERTYPE_UNSPECIFIED};
SLDataSource audioSrc = {&loc_uri, &format_mime};