ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
TMBOY
Date:
Tue Jul 18 16:34:48 2017 +0800
Revision:
45:2aa9f933c8d2
?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TMBOY 45:2aa9f933c8d2 1 /*
TMBOY 45:2aa9f933c8d2 2 * Copyright (c) 2017 Baidu, Inc. All Rights Reserved.
TMBOY 45:2aa9f933c8d2 3 *
TMBOY 45:2aa9f933c8d2 4 * Licensed under the Apache License, Version 2.0 (the "License");
TMBOY 45:2aa9f933c8d2 5 * you may not use this file except in compliance with the License.
TMBOY 45:2aa9f933c8d2 6 * You may obtain a copy of the License at
TMBOY 45:2aa9f933c8d2 7 *
TMBOY 45:2aa9f933c8d2 8 * http://www.apache.org/licenses/LICENSE-2.0
TMBOY 45:2aa9f933c8d2 9 *
TMBOY 45:2aa9f933c8d2 10 * Unless required by applicable law or agreed to in writing, software
TMBOY 45:2aa9f933c8d2 11 * distributed under the License is distributed on an "AS IS" BASIS,
TMBOY 45:2aa9f933c8d2 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
TMBOY 45:2aa9f933c8d2 13 * See the License for the specific language governing permissions and
TMBOY 45:2aa9f933c8d2 14 * limitations under the License.
TMBOY 45:2aa9f933c8d2 15 */
TMBOY 45:2aa9f933c8d2 16 /**
TMBOY 45:2aa9f933c8d2 17 * 唤醒调用底层so库实现-jni
TMBOY 45:2aa9f933c8d2 18 * <p>
TMBOY 45:2aa9f933c8d2 19 * Created by guxiuzhong@baidu.com on 2017/6/22.
TMBOY 45:2aa9f933c8d2 20 */
TMBOY 45:2aa9f933c8d2 21 #include <jni.h>
TMBOY 45:2aa9f933c8d2 22 #include "Interface.h"
TMBOY 45:2aa9f933c8d2 23 #include <android/log.h>
TMBOY 45:2aa9f933c8d2 24
TMBOY 45:2aa9f933c8d2 25 #define LOG_TAG "wakeup"
TMBOY 45:2aa9f933c8d2 26 #define LOG_D(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
TMBOY 45:2aa9f933c8d2 27
TMBOY 45:2aa9f933c8d2 28
TMBOY 45:2aa9f933c8d2 29 extern "C"
TMBOY 45:2aa9f933c8d2 30 JNIEXPORT jint JNICALL
TMBOY 45:2aa9f933c8d2 31 Java_com_baidu_duer_dcs_androidsystemimpl_wakeup_WakeUpNative_wakeUpInitial(JNIEnv *env,
TMBOY 45:2aa9f933c8d2 32 jobject instance,
TMBOY 45:2aa9f933c8d2 33 jstring wakeUpWd_,
TMBOY 45:2aa9f933c8d2 34 jstring sFile_,
TMBOY 45:2aa9f933c8d2 35 jint mode) {
TMBOY 45:2aa9f933c8d2 36 const char *wakeUpWd = env->GetStringUTFChars(wakeUpWd_, 0);
TMBOY 45:2aa9f933c8d2 37 const char *sFile = env->GetStringUTFChars(sFile_, 0);
TMBOY 45:2aa9f933c8d2 38
TMBOY 45:2aa9f933c8d2 39 int _mode = mode;
TMBOY 45:2aa9f933c8d2 40 // 打开log
TMBOY 45:2aa9f933c8d2 41 // SetLogLevel(5);
TMBOY 45:2aa9f933c8d2 42 LOG_D("WakeUpInitial wakeUpWd=%s", wakeUpWd);
TMBOY 45:2aa9f933c8d2 43 LOG_D("WakeUpInitial sFile_=%s", sFile);
TMBOY 45:2aa9f933c8d2 44 int ret = WakeUpInitial(wakeUpWd, sFile, _mode);
TMBOY 45:2aa9f933c8d2 45 LOG_D("WakeUpInitial ret=%d", ret);
TMBOY 45:2aa9f933c8d2 46
TMBOY 45:2aa9f933c8d2 47 env->ReleaseStringUTFChars(wakeUpWd_, wakeUpWd);
TMBOY 45:2aa9f933c8d2 48 env->ReleaseStringUTFChars(sFile_, sFile);
TMBOY 45:2aa9f933c8d2 49
TMBOY 45:2aa9f933c8d2 50 return ret;
TMBOY 45:2aa9f933c8d2 51 }
TMBOY 45:2aa9f933c8d2 52
TMBOY 45:2aa9f933c8d2 53 extern "C"
TMBOY 45:2aa9f933c8d2 54 JNIEXPORT jint JNICALL
TMBOY 45:2aa9f933c8d2 55 Java_com_baidu_duer_dcs_androidsystemimpl_wakeup_WakeUpNative_wakeUpReset(JNIEnv *env,
TMBOY 45:2aa9f933c8d2 56 jobject instance) {
TMBOY 45:2aa9f933c8d2 57 return WakeUpReset();
TMBOY 45:2aa9f933c8d2 58 }
TMBOY 45:2aa9f933c8d2 59
TMBOY 45:2aa9f933c8d2 60 extern "C"
TMBOY 45:2aa9f933c8d2 61 JNIEXPORT jint JNICALL
TMBOY 45:2aa9f933c8d2 62 Java_com_baidu_duer_dcs_androidsystemimpl_wakeup_WakeUpNative_wakeUpDecode(JNIEnv *env,
TMBOY 45:2aa9f933c8d2 63 jobject instance,
TMBOY 45:2aa9f933c8d2 64 jshortArray data_,
TMBOY 45:2aa9f933c8d2 65 jint dataLen,
TMBOY 45:2aa9f933c8d2 66 jstring senArr_,
TMBOY 45:2aa9f933c8d2 67 jint expectNum,
TMBOY 45:2aa9f933c8d2 68 jint wakeWord_frame_len,
TMBOY 45:2aa9f933c8d2 69 jboolean is_confidence,
TMBOY 45:2aa9f933c8d2 70 jint voice_offset,
TMBOY 45:2aa9f933c8d2 71 jboolean bEd) {
TMBOY 45:2aa9f933c8d2 72
TMBOY 45:2aa9f933c8d2 73
TMBOY 45:2aa9f933c8d2 74 jboolean isCopy = 0;
TMBOY 45:2aa9f933c8d2 75 short *data_invoke = env->GetShortArrayElements(data_, &isCopy);
TMBOY 45:2aa9f933c8d2 76
TMBOY 45:2aa9f933c8d2 77 // 写入文件
TMBOY 45:2aa9f933c8d2 78 // FILE *file = fopen("/storage/emulated/0/222.pcm", "ab+");
TMBOY 45:2aa9f933c8d2 79 // fwrite(data_invoke, sizeof(short) * dataLen, 1, file);
TMBOY 45:2aa9f933c8d2 80 // fclose(file);
TMBOY 45:2aa9f933c8d2 81
TMBOY 45:2aa9f933c8d2 82 LOG_D("WakeUpDecode data_ GetArrayLength=%d", env->GetArrayLength(data_));
TMBOY 45:2aa9f933c8d2 83
TMBOY 45:2aa9f933c8d2 84 int dataLen_invoke = dataLen;
TMBOY 45:2aa9f933c8d2 85 // 因为so库里面最大为2560
TMBOY 45:2aa9f933c8d2 86 char *senArr = new char[2560];
TMBOY 45:2aa9f933c8d2 87 int expectNum_invoke = expectNum;
TMBOY 45:2aa9f933c8d2 88 int wakeWord_frame_len_invoke = wakeWord_frame_len;
TMBOY 45:2aa9f933c8d2 89 bool is_confidence_invoke = is_confidence;
TMBOY 45:2aa9f933c8d2 90 int voice_offset_invoke = voice_offset;
TMBOY 45:2aa9f933c8d2 91 bool bEd_invoke = bEd;
TMBOY 45:2aa9f933c8d2 92
TMBOY 45:2aa9f933c8d2 93 LOG_D("WakeUpDecode dataLen_invoke=%d", dataLen_invoke);
TMBOY 45:2aa9f933c8d2 94 LOG_D("WakeUpDecode expectNum_invoke=%d", expectNum_invoke);
TMBOY 45:2aa9f933c8d2 95 LOG_D("WakeUpDecode wakeWord_frame_len_invoke=%d", wakeWord_frame_len_invoke);
TMBOY 45:2aa9f933c8d2 96 LOG_D("WakeUpDecode is_confidence_invoke=%d", is_confidence_invoke);
TMBOY 45:2aa9f933c8d2 97 LOG_D("WakeUpDecode bEd_invoke=%d", bEd_invoke);
TMBOY 45:2aa9f933c8d2 98
TMBOY 45:2aa9f933c8d2 99
TMBOY 45:2aa9f933c8d2 100 int ret = WakeUpDecode(data_invoke,
TMBOY 45:2aa9f933c8d2 101 dataLen_invoke,
TMBOY 45:2aa9f933c8d2 102 &senArr,
TMBOY 45:2aa9f933c8d2 103 expectNum_invoke,
TMBOY 45:2aa9f933c8d2 104 wakeWord_frame_len_invoke,
TMBOY 45:2aa9f933c8d2 105 is_confidence_invoke,
TMBOY 45:2aa9f933c8d2 106 voice_offset_invoke,
TMBOY 45:2aa9f933c8d2 107 bEd_invoke
TMBOY 45:2aa9f933c8d2 108 );
TMBOY 45:2aa9f933c8d2 109
TMBOY 45:2aa9f933c8d2 110 LOG_D("WakeUpDecode ret=%d", ret);
TMBOY 45:2aa9f933c8d2 111 LOG_D("WakeUpDecode senArr=%s", senArr);
TMBOY 45:2aa9f933c8d2 112 LOG_D("WakeUpDecode wakeWord_frame_len_invoke=%d", wakeWord_frame_len_invoke);
TMBOY 45:2aa9f933c8d2 113 LOG_D("WakeUpDecode is_confidence_invoke=%d", is_confidence_invoke);
TMBOY 45:2aa9f933c8d2 114 LOG_D("WakeUpDecode voice_offset_invoke=%d", voice_offset_invoke);
TMBOY 45:2aa9f933c8d2 115
TMBOY 45:2aa9f933c8d2 116 // 释放内存资源
TMBOY 45:2aa9f933c8d2 117 env->ReleaseShortArrayElements(data_, data_invoke, 0);
TMBOY 45:2aa9f933c8d2 118 env->ReleaseStringUTFChars(senArr_, senArr);
TMBOY 45:2aa9f933c8d2 119 return ret;
TMBOY 45:2aa9f933c8d2 120 }
TMBOY 45:2aa9f933c8d2 121
TMBOY 45:2aa9f933c8d2 122 extern "C"
TMBOY 45:2aa9f933c8d2 123 JNIEXPORT jint JNICALL
TMBOY 45:2aa9f933c8d2 124 Java_com_baidu_duer_dcs_androidsystemimpl_wakeup_WakeUpNative_wakeUpFree(JNIEnv *env,
TMBOY 45:2aa9f933c8d2 125 jobject instance) {
TMBOY 45:2aa9f933c8d2 126 LOG_D("WakeUpFree");
TMBOY 45:2aa9f933c8d2 127 return WakeUpFree();
TMBOY 45:2aa9f933c8d2 128 }