blob: f46c6b2969773e329f4613b63b3128f0b00856ef [file] [log] [blame]
/*
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include <string.h> // memset
#include <android/log.h>
#include "org_webrtc_voiceengine_test_AudioDeviceAndroidTest.h"
#include "../../../../interface/audio_device.h"
#define LOG_TAG "WebRTC ADM Native"
void api_test();
void func_test(int);
typedef struct
{
// Other
JavaVM* jvm;
} AdmData;
static AdmData admData;
jint JNI_OnLoad(JavaVM* vm, void* /*reserved*/)
{
if (!vm)
{
__android_log_write(ANDROID_LOG_ERROR, LOG_TAG,
"JNI_OnLoad did not receive a valid VM pointer");
return -1;
}
// Get JNI
JNIEnv* env;
if (JNI_OK != vm->GetEnv(reinterpret_cast<void**> (&env),
JNI_VERSION_1_4))
{
__android_log_write(ANDROID_LOG_ERROR, LOG_TAG,
"JNI_OnLoad could not get JNI env");
return -1;
}
// Get class to register the native functions with
// jclass regClass =
// env->FindClass("org/webrtc/voiceengine/test/AudioDeviceAndroidTest");
// if (!regClass) {
// return -1; // Exception thrown
// }
// Register native functions
// JNINativeMethod methods[1];
// methods[0].name = NULL;
// methods[0].signature = NULL;
// methods[0].fnPtr = NULL;
// if (JNI_OK != env->RegisterNatives(regClass, methods, 1))
// {
// return -1;
// }
// Init VoiceEngine data
memset(&admData, 0, sizeof(admData));
// Store the JVM
admData.jvm = vm;
return JNI_VERSION_1_4;
}
JNIEXPORT jboolean JNICALL
Java_org_webrtc_voiceengine_test_AudioDeviceAndroidTest_NativeInit(JNIEnv * env,
jclass)
{
// Look up and cache any interesting class, field and method IDs for
// any used java class here
return true;
}
JNIEXPORT jint JNICALL
Java_org_webrtc_voiceengine_test_AudioDeviceAndroidTest_RunTest(JNIEnv *env,
jobject context,
jint test)
{
// Set instance independent Java objects
webrtc::AudioDeviceModule::SetAndroidObjects(admData.jvm, env, context);
// Start test
if (0 == test)
{
api_test();
}
else
{
func_test(test);
}
// Clear instance independent Java objects
webrtc::AudioDeviceModule::SetAndroidObjects(NULL, NULL, NULL);
return 0;
}