@@ -59,6 +59,9 @@ static jfieldID g_stretchModeField = nullptr;
5959static jfieldID g_pitchField = nullptr ;
6060static jfieldID g_speedField = nullptr ;
6161
62+ static jclass g_recordingStatsClass = nullptr ;
63+ static jmethodID g_recordingStatsConstructor = nullptr ;
64+
6265JNIEXPORT jint JNICALL
6366Java_com_mobileer_oboetester_OboeAudioStream_openNative (JNIEnv *env, jobject,
6467 jint nativeApi,
@@ -1117,6 +1120,16 @@ Java_com_mobileer_oboetester_ManualGlitchActivity_getRecentSamples(JNIEnv *env,
11171120 return numSamples;
11181121}
11191122
1123+ JNIEXPORT jobject JNICALL
1124+ Java_com_mobileer_oboetester_RecorderActivity_getRecordingStatsJni (JNIEnv *env, jobject) {
1125+
1126+ ActivityRecording::RecordingStats params = engine.mActivityRecording .getRecordingStats ();
1127+
1128+ return env->NewObject (g_recordingStatsClass, g_recordingStatsConstructor,
1129+ (jfloat)params.peakAbs ,
1130+ (params.n > 0 ) ? (float )std::sqrt (params.sumSq / (float )params.n ) : 0 .0F );
1131+ }
1132+
11201133JNIEXPORT void JNICALL
11211134Java_com_mobileer_oboetester_TestAudioActivity_setDefaultAudioValues (JNIEnv *env, jclass clazz,
11221135 jint audio_manager_sample_rate,
@@ -1401,6 +1414,28 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {
14011414 return JNI_ERR;
14021415 }
14031416
1417+ const char * recordingStatsClassName = " com/mobileer/oboetester/RecordingStats" ;
1418+ jclass localRecordingStatsClass = env->FindClass (recordingStatsClassName);
1419+ if (localRecordingStatsClass == nullptr ) {
1420+ LOGE (" JNI_OnLoad: Could not find class %s" , recordingStatsClassName);
1421+ if (env->ExceptionCheck ()) env->ExceptionDescribe ();
1422+ return JNI_ERR;
1423+ }
1424+ g_recordingStatsClass = (jclass)env->NewGlobalRef (localRecordingStatsClass);
1425+ env->DeleteLocalRef (localRecordingStatsClass);
1426+ if (g_recordingStatsClass == nullptr ) {
1427+ LOGE (" JNI_OnLoad: Could not create global ref for %s" , recordingStatsClassName);
1428+ return JNI_ERR;
1429+ }
1430+
1431+ g_recordingStatsConstructor = env->GetMethodID (
1432+ g_recordingStatsClass, " <init>" , " (FF)V" );
1433+ if (g_recordingStatsConstructor == nullptr ) {
1434+ LOGE (" JNI_OnLoad: Could not find constructor for %s" , recordingStatsClassName);
1435+ if (env->ExceptionCheck ()) env->ExceptionDescribe ();
1436+ return JNI_ERR;
1437+ }
1438+
14041439 g_fallbackModeField = env->GetFieldID (g_playbackParametersClass, " mFallbackMode" , " I" );
14051440 g_stretchModeField = env->GetFieldID (g_playbackParametersClass, " mStretchMode" , " I" );
14061441 g_pitchField = env->GetFieldID (g_playbackParametersClass, " mPitch" , " F" );
0 commit comments