Android ndk 使用android ndk播放音频文件

Android ndk 使用android ndk播放音频文件,android-ndk,java-native-interface,Android Ndk,Java Native Interface,所以我试着制作一个应用程序,每当togglebutton被启用时,它就会播放例如“birds.mp3”的音频文件,当它被禁用时,它就会停止音频。我试着用androidndk来做这个练习,我一直在尝试使用aaudioapi,因为它看起来很简单,但我不知道如何让它工作 这是我的密码: MainActivity.java import android.app.Activity; import android.os.Bundle; import android.view.View; import and

所以我试着制作一个应用程序,每当togglebutton被启用时,它就会播放例如“birds.mp3”的音频文件,当它被禁用时,它就会停止音频。我试着用androidndk来做这个练习,我一直在尝试使用aaudioapi,因为它看起来很简单,但我不知道如何让它工作

这是我的密码:

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.ToggleButton;

public class MainActivity extends Activity {

    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton);
        toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    // The toggle is enabled

                    StartAudio();
                } else {
                    // The toggle is disabled

                    StopAudio();
                }
            }
        });
    }


    public native String StartAudio();
    public native String StopAudio();


}
C++文件

#include <jni.h>
#include <string>
#include <SLES/OpenSLES_Android.h>
#include <aaudio/AAudio.h>
#include <vector>

extern "C"
JNIEXPORT void JNICALL

Java_com_example_boman_ndk_MainActivity_StartAudio( JNIEnv* env, jobject obj) {

    AAudioStreamBuilder *builder;
    aaudio_result_t result = AAudio_createStreamBuilder(&builder);

    if(builder != nullptr) {
        AAudioStream* stream = nullptr;
        result = AAudioStreamBuilder_openStream(builder, &stream);

        if(result == AAUDIO_OK && stream != nullptr) {

        }

        AAudioStreamBuilder_delete(builder);
    }
}

extern "C"
JNIEXPORT void JNICALL
Java_com_example_k2972_ndk_AudioActivity_StopAudio( JNIEnv* env, jobject obj ) {
// Stop Audio




}
#包括
#包括
#包括
#包括
#包括
外部“C”
JNIEXPORT void JNICALL
Java_com_示例_boman_ndk_main activity_StartAudio(JNIEnv*env,jobject obj){
AAudioStreamBuilder*builder;
aaudio\u result\u t result=aaudio\u createStreamBuilder(&builder);
如果(生成器!=nullptr){
AAudioStream*stream=nullptr;
结果=AAudioStreamBuilder\u openStream(builder和stream);
如果(结果==AAUDIO\u确定&&stream!=nullptr){
}
AAudioStreamBuilder_删除(builder);
}
}
外部“C”
JNIEXPORT void JNICALL
Java_com_示例_k2972_ndk_Audio Activity_StopAudio(JNIEnv*env,jobject obj){
//停止音频
}
所以我被困在这里。我创建了流,但我不知道该如何使用它。我如何让它处理我的音频文件。因此,如果有人能向我解释这一点,我将不胜感激。

你可以从

#include <media/NdkMediaCodec.h>
#include <media/NdkMediaExtractor.h>
#包括
#包括
并遵循规则。另请参见。

您可以从

#include <media/NdkMediaCodec.h>
#include <media/NdkMediaExtractor.h>
#包括
#包括
并遵循规则。另见