因此,我试图制作以例如#34; birds.mp3"启用togglebutton时音频文件,禁用时停止音频。我试图用android ndk进行练习,并且我一直在尝试使用AAudio API,因为它看起来非常简单易用,但我无法弄清楚如何使它工作。
这是我的代码:
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
}
所以我被困在这里。我创建流但我不知道我应该如何使用它。我如何使它处理我的audiofile。所以,如果有人能向我解释这一点,我将非常感激。
答案 0 :(得分:0)
你可以从
开始#include <media/NdkMediaCodec.h>
#include <media/NdkMediaExtractor.h>
按照official sample进行操作。另请参阅https://groups.google.com/forum/#!msg/android-ndk/VDxqBTrF9RY/iZ_ZoE0pBwAJ。