| | |
| | | jclass cls = env->GetObjectClass(sg_obj); |
| | | jmethodID fun = env->GetMethodID(cls, "ConnectBluetooth", "(Ljava/lang/String;Ljava/lang/String;)V"); |
| | | |
| | | env->CallVoidMethod(sg_obj, fun, env->NewStringUTF(addr), env->NewStringUTF(pin)); |
| | | env->CallVoidMethod(sg_obj, fun, env->NewStringUTF(addr), (pin == NULL) ? NULL : env->NewStringUTF(pin)); |
| | | |
| | | env->DeleteLocalRef(cls); |
| | | |
| | | if (!ready_in_java_env) { |
| | | //Detach主线程 |
| | | if (sg_jvm->DetachCurrentThread() != JNI_OK) { |
| | | LOGE("%s: DetachCurrentThread() failed", __FUNCTION__); |
| | | } |
| | | } |
| | | } |
| | | |
| | | void DisconnectBluetooth(void) |
| | | { |
| | | JNIEnv *env; |
| | | bool ready_in_java_env = false; |
| | | |
| | | if (sg_jvm->GetEnv((void **)&env, JNI_VERSION_1_6) != JNI_OK) { |
| | | // Attach主线程 |
| | | if (sg_jvm->AttachCurrentThread(&env, NULL) != JNI_OK) { |
| | | LOGE("%s: AttachCurrentThread() failed", __FUNCTION__); |
| | | return; |
| | | } |
| | | } else { |
| | | ready_in_java_env = true; |
| | | } |
| | | |
| | | jclass cls = env->GetObjectClass(sg_obj); |
| | | jmethodID fun = env->GetMethodID(cls, "DisconnectBluetooth", "()V"); |
| | | |
| | | env->CallVoidMethod(sg_obj, fun); |
| | | |
| | | env->DeleteLocalRef(cls); |
| | | |
| | |
| | | |
| | | PlatformStatusChanged(BLUETOOTH_STATUS_EVT, &sta, 1); |
| | | } |
| | | |
| | | extern "C" |
| | | JNIEXPORT void JNICALL |
| | | Java_com_anyun_exam_lib_RemoteService_BluetoothConnected(JNIEnv *env, jobject thiz, jstring name, |
| | | jstring addr) { |
| | | // TODO: implement BluetoothConnected() |
| | | if (name != NULL && addr != NULL) { |
| | | const char *strname = env->GetStringUTFChars(name, 0); |
| | | const char *straddr = env->GetStringUTFChars(addr, 0); |
| | | |
| | | uint8_t data[128]; |
| | | strcpy((char *)data, strname); |
| | | strcpy((char *)data + 64, straddr); |
| | | |
| | | env->ReleaseStringUTFChars(name, strname); |
| | | env->ReleaseStringUTFChars(addr, straddr); |
| | | |
| | | PlatformStatusChanged(BLUETOOTH_STATUS_EVT, data, 128); |
| | | } else if (addr != NULL) { |
| | | const char *straddr = env->GetStringUTFChars(addr, 0); |
| | | |
| | | uint8_t data[64]; |
| | | strcpy((char *)data, straddr); |
| | | |
| | | env->ReleaseStringUTFChars(addr, straddr); |
| | | |
| | | PlatformStatusChanged(BLUETOOTH_STATUS_EVT, data, 64); |
| | | } else { |
| | | uint8_t sta = 3; |
| | | PlatformStatusChanged(BLUETOOTH_STATUS_EVT, &sta, 1); |
| | | } |
| | | } |