// 在CMakeLists.txt
在nvtive-lib.cpp中
// 1. 创建一个 jni 函数
public native String playPcm(String url);
// 2.实现它
/* 回调函数 获取具体pcm 并播放 */
void pcm_CallBack(SLAndroidSimpleBufferQueueItf bq, void * context)
{
int len = fread(buf, 1, 44100 * 2, fp);
if (len > 0)
(*bq)->Enqueue(bq, buf, len);
}
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_jnitest_MainActivity_playPcm(JNIEnv *env, jobject instance, jstring url_) {
const char *url = env->GetStringUTFChars(url_, 0);
// TODO
fp = fopen(url, "r");
LOGD("%s", url);
if (!fp)
{
return env->NewStringUTF("open err");
}
/* OpenSLES 播放pcm数据创建流程 */
SLresult result; // 返回值
// 1、创建引擎对象
/* 引擎接口 */