由於打算用到jni下的audio API,找了一下有人已經包裝好API,就直接拿來用看看,網路上看到的是PortAudio,就紀錄一下用NDK編譯成so檔的一些簡易說明:

1.在jni下建一個PortAudio目錄

2.把include下的檔案都複製到PortAudio目錄除了檔名有win的之外
3.把src\common下的檔案都複製到PortAudio目錄
4.把src\hostapi\opensles下的檔案都複製到PortAudio目錄,README.txt就不用了
5.把src\os\unix下的檔案都複製到PortAudio目錄
6.用以下的android.mk編譯就會產生需要的模組檔案libPortAudio.so

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

PA_ROOT := PortAudio
LOCAL_MODULE := PortAudio
LOCAL_CFLAGS += -DPA_LOG_API_CALLS -DPA_LITTLE_ENDIAN -DPA_USE_OPENSLES
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM -lOpenSLES
LOCAL_SRC_FILES :=  \
    $(PA_ROOT)/pa_converters.c \
    $(PA_ROOT)/pa_front.c \
    $(PA_ROOT)/pa_cpuload.c \
    $(PA_ROOT)/pa_debugprint.c \
    $(PA_ROOT)/pa_process.c \
    $(PA_ROOT)/pa_trace.c \
    $(PA_ROOT)/pa_ringbuffer.c \
    $(PA_ROOT)/pa_stream.c \
    $(PA_ROOT)/pa_allocation.c \
    $(PA_ROOT)/pa_dither.c \
    $(PA_ROOT)/pa_unix_hostapis.c \
    $(PA_ROOT)/pa_unix_util.c \
    $(PA_ROOT)/pa_opensles.c

include $(BUILD_SHARED_LIBRARY)

使用注意:
1.呼叫別忘記引入檔
#include <EGL/egl.h>
#include <GLES/gl.h>
#include "PortAudio/portaudio.h"

 

經實際測試PortAudio並未實際支援android,需要自己實作opensl的部分。此文章留下作為失敗紀錄。
 

arrow
arrow
    文章標籤
    NDK Android Studio PortAudio
    全站熱搜

    大衛的記事 發表在 痞客邦 留言(0) 人氣()