/*******************************************************************
 *char*----->jstring
 *******************************************************************/
jstring c2js( const char* pat)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    jclass strClass = env->FindClass("java/lang/String");
    jmethodID ctorID = env->GetMethodID(strClass, "",
            "([BLjava/lang/String;)V");
    jbyteArray bytes = env->NewByteArray(strlen(pat));
    env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*) pat);
    jstring encoding = env->NewStringUTF("utf-8");
    return (jstring) env->NewObject(strClass, ctorID, bytes, encoding);
}
/******************************************************************
 *jstring ----->char*
 ********************************************************************/
char* js2c( jstring jstr)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    char* rtn = NULL;
    jclass clsstring = env->FindClass("java/lang/String");
    jstring strencode = env->NewStringUTF("utf-8");
    jmethodID mid = env->GetMethodID(clsstring, "getBytes",
            "(Ljava/lang/String;)[B");
    jbyteArray barr = (jbyteArray) env->CallObjectMethod(jstr, mid, strencode);
    jsize alen = env->GetArrayLength(barr);
    jbyte* ba = env->GetByteArrayElements(barr, JNI_FALSE);
    if (alen > 0)
    {
        rtn = (char*) malloc(alen + 1);
        memcpy(rtn, ba, alen);
        rtn[alen] = 0;
    }
    env->ReleaseByteArrayElements(barr, ba, 0);
    return rtn;
}
/*****************************************************************
 *wchar_t* ----->jstring
 *******************************************************************/
jstring w2js( wchar_t* str)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    size_t len = wcslen(str);
    jchar* str2 = (jchar*) malloc(sizeof(jchar) * (len + 1));
    int i;
    for (i = 0; i < len; i++)
        str2[i] = str[i];
    str2[len] = 0;
    jstring js = env->NewString(str2, len);
    free(str2);
    return js;
}

/*****************************************************************
 *XWCHAR* ----->jstring
 *******************************************************************/
jstring xw2js( XWCHAR* str)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    size_t len = gg_wcslen(str);
    jchar* str2 = (jchar*) malloc(sizeof(jchar) * (len + 1));
    int i;
    for (i = 0; i < len; i++)
        str2[i] = str[i];
    str2[len] = 0;
    jstring js = env->NewString(str2, len);
    free(str2);
    return js;
}

/******************************************************************
 *jstring----->wchar_t*
 ********************************************************************/
wchar_t* js2w( jstring str)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    int len = env->GetStringLength(str);
    wchar_t *w_buffer = new wchar_t[len];
    memset(w_buffer, 0, len + 1);
    w_buffer[len] = '\0';
    wcsncpy(w_buffer, (wchar_t *) env->GetStringChars(str, 0), len);
    env->ReleaseStringChars(str, (const unsigned short *) w_buffer);
    return w_buffer;
}

/******************************************************************
 *jstring----->XWCHAR*
 ********************************************************************/
XWCHAR* js2xw( jstring str)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();

    int len = env->GetStringLength(str);

    XWCHAR *w_buffer = new XWCHAR[len + 1];
    memset(w_buffer, 0, (len+1) * 2 );

    const jchar* tmp = env->GetStringChars(str, false);
    memcpy(w_buffer, tmp, len * 2 );

    env->ReleaseStringChars(str, tmp);

    return w_buffer;
}


char* ------------> jbyteArray

   jbyteArray RtnArr = NULL;  //下面一系列操作把btPath转成jbyteArray 返回出去
    RtnArr =env->NewByteArray(strlen(btPath));
    env->SetByteArrayRegion(RtnArr, 0, strlen(btPath), (jbyte*)btPath );



更多相关文章

  1. android -- 小功能 手势操作GestureDetector
  2. Android 流媒体系列(二)
  3. Android 通信录中的联系人操作
  4. [原]android 中如何飞行模式的几个操作
  5. android图像处理系列之三--图片色调饱和度、色相、亮度处理
  6. android典型代码系列(一)------android调试
  7. 用Javascript判断访问来源操作系统, 设备, 浏览器类型
  8. Android环境变量作用--命令行操作
  9. 转:Android文件操作总结

随机推荐

  1. [置顶] Android(安卓)ButterKnife
  2. android 快速开发(三)巧用公共标题栏:避免每
  3. android webview 介绍
  4. Windows7 Android(安卓)开发环境搭建
  5. Android(安卓)adb启动任意app的几种方式
  6. Retrofit
  7. Android:Activity(九):Fragment管理与Fra
  8. android8.1 屏蔽系统通知弹窗
  9. 关于overridePendingTransition效果在1.6
  10. Android中间层c语言log打印方法