static bool checkCallbackThread() {
    sCallbackEnv = getCallbackEnv();

    JNIEnv* env = AndroidRuntime::getJNIEnv();
    if (sCallbackEnv != env || sCallbackEnv == NULL) {
        ALOGE("Callback env check fail: env: %p, callback: %p", env, sCallbackEnv);
        return false;
    }
    return true;
}
static bool checkCallbackThread() {
    // Always fetch the latest callbackEnv from AdapterService.
    // Caching this could cause this sCallbackEnv to go out-of-sync
    // with the AdapterService's ENV if an ASSOCIATE/DISASSOCIATE event
    // is received
    sCallbackEnv = getCallbackEnv();

    JNIEnv* env = AndroidRuntime::getJNIEnv();
    if (sCallbackEnv != env || sCallbackEnv == NULL) return false;
    return true;
}
static bool checkCallbackThread() {
    qccallbackEnv = getCallbackEnv();

    JNIEnv* env = AndroidRuntime::getJNIEnv();
    if(env==NULL)
        ALOGE("checkCallbackThread env is NULL");
    if(qccallbackEnv==NULL)
        ALOGE("checkCallbackThread qccallbackEnv is NULL");

    if(env!=qccallbackEnv)
        ALOGE("env and qccallbackEnv dont match");
    if (qccallbackEnv != env || qccallbackEnv == NULL) return false;
    return true;
}