Android ndk 使用android ndk播放音频文件
所以我试着制作一个应用程序,每当togglebutton被启用时,它就会播放例如“birds.mp3”的音频文件,当它被禁用时,它就会停止音频。我试着用androidndk来做这个练习,我一直在尝试使用aaudioapi,因为它看起来很简单,但我不知道如何让它工作 这是我的密码: MainActivity.javaAndroid 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
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>
#包括
#包括
并遵循规则。另见