기존에 만들어져있는 NDK파일 android.mk 파일을 통해서 .cpp에 접근하여 변수를 전달하고 싶은데 안됩니다....
JackSimpleClient.cpp
#include "JackSimpleClient.h"
#include "mylog.h"
namespace android {
jack_client_t *JackSimpleClient::jackClient = NULL;
int JackSimpleClient::bufferSize = 1024;
JackSimpleClient::JackSimpleClient(){
outPort = NULL;
bufferSize = 1024;
}
JackSimpleClient::~JackSimpleClient(){
jackClient = NULL;
}
int JackSimpleClient::processSine (jack_nframes_t frames, void *arg)
{
JackSimpleClient *thiz = (JackSimpleClient*)arg;
jack_default_audio_sample_t *out1 = (jack_default_audio_sample_t*)jack_port_get_buffer (thiz->outPort, frames);
for(unsigned int i=0; i<frames; i++ )
{
out1[i] = thiz->sineTable[i%bufferSize];
}
return 0;
}
int JackSimpleClient::setUp (int argc, char *argv[])
{
LOGD("setUp argc %d", argc);
for(int i = 0;i< argc; i++){
LOGD("setup argv %s", argv[i]);
}
// You have to use argv[0] as the jack client name like below.
jackClient = jack_client_open (argv[0], JackNullOption, NULL, NULL);
if (jackClient == NULL) {
return APA_RETURN_ERROR;
}
bufferSize = jack_get_buffer_size(jackClient);
// init the sine table
for(int i=0; i<bufferSize; i++ )
{
sineTable[i] = (float) sin( ((double)i*8/(double)bufferSize) * 2. * 3.14159265 );
}
jack_set_process_callback (jackClient, processSine, this);
outPort = jack_port_register (jackClient, "out",
JACK_DEFAULT_AUDIO_TYPE,
JackPortIsOutput, 0);
if(outPort == NULL){
return APA_RETURN_ERROR;
}
return APA_RETURN_SUCCESS;
}
int JackSimpleClient::tearDown(){
jack_client_close (jackClient);
return APA_RETURN_SUCCESS;
}
int JackSimpleClient::activate(){
jack_activate (jackClient);
LOGD("JackSimpleClient::activate");
LOGE("RPM is %d", rpm);
const char **systemInputs = jack_get_ports (jackClient, NULL, NULL,
JackPortIsPhysical|JackPortIsInput);
if (systemInputs == NULL) {
LOGD("system input port is null\n");
return APA_RETURN_ERROR;
}
jack_connect (jackClient, jack_port_name (outPort), systemInputs[0]);
free (systemInputs);
return APA_RETURN_SUCCESS;
}
int JackSimpleClient::deactivate(){
LOGD("JackSimpleClient::deactivate");
jack_deactivate (jackClient);
return APA_RETURN_SUCCESS;
}
int JackSimpleClient::transport(TransportType type) {
return APA_RETURN_SUCCESS;
}
int JackSimpleClient::sendMidi(char* midi){
return APA_RETURN_SUCCESS;
}
};
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libsapaclient
LOCAL_SRC_FILES := apa/lib/libsapaclient.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libjack
LOCAL_SRC_FILES := apa/lib/libjack.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := wave
LOCAL_C_INCLUDES := $(LOCAL_PATH)/apa/include
LOCAL_SRC_FILES := \
wave.cpp \
JackSimpleClient.cpp
LOCAL_CPP_FEATURES := exceptions
LOCAL_MODULE_TAGS := eng optional
LOCAL_LDLIBS := -llog
LOCAL_SHARED_LIBRARIES := libjack
LOCAL_STATIC_LIBRARIES := libsapaclient
LOCAL_ARM_MODE := arm
LOCAL_CFLAGS := -g
include $(BUILD_SHARED_LIBRARY)
자바 액티비티에 대하여 javah를 통해 헤더파일을 만들고 Android.mk에 LOCAL_SRC_FILES에 cpp파일에 접근하는데
계속 오류가 나게됩니다.
.java 에서 소켓통신으로 받은 변수를 저 위에 .cpp에 전달하고 싶습니다. 쉬운 방법이 있을까요???