Lame编码器的UI
一、Lame介绍 音频编码器 lame3.99下载 http://sourceforge.net/projects/lame/files/lame/3.99/ |
二、LameUI界面 |
|
核心代码: #include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <jni.h>
#include <android/log.h>
#include "cn_zengfansheng_lame_MainActivity.h"
#define LOG_TAG "System.out.c"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__) //Jstring2CStr 把java中的jstring的类型转化成一个c语言中的char 字符串
char* Jstring2CStr(JNIEnv* env, jstring jstr) {
char* rtn = NULL;
jclass clsstring = (*env)->FindClass(env, "java/lang/String"); //String
jstring strencode = (*env)->NewStringUTF(env, "GB2312"); // 得到一个java字符串 "GB2312"
jmethodID mid = (*env)->GetMethodID(env, clsstring, "getBytes","(Ljava/lang/String;)[B"); //[ String.getBytes("gb2312");
jbyteArray barr = (jbyteArray)(*env)->CallObjectMethod(env, jstr, mid,strencode); // String .getByte("GB2312");
jsize alen = (*env)->GetArrayLength(env, barr); // byte数组的长度
jbyte* ba = (*env)->GetByteArrayElements(env, barr, JNI_FALSE);
if (alen > 0) {
rtn = (char*) malloc(alen + 1); //"\0"
memcpy(rtn, ba, alen);
rtn[alen] = 0;
}
(*env)->ReleaseByteArrayElements(env, barr, ba, 0);
return rtn;
}
JNIEXPORT void JNICALL Java_cn_zengfansheng_lame_MainActivity_convertToMp3
(JNIEnv *env, jobject obj, jstring jstr_src , jstring jstr_dst) {
//1、获取java代码传递过来的要转码的源文件,和转码后存放的路径,转换成c语言的char字符
char* cstr_src = Jstring2CStr(env,jstr_src);
char* cstr_dst = Jstring2CStr(env,jstr_dst);
//2、LOGD测试下
LOGD("src=%s",cstr_src);
LOGD("dst=%s",cstr_dst);
} |
结果: |