FfmpegManager.java
package com.example.myndkkk;
public class FfmpegManager {
// Used to load the 'native-lib' library on application startup.
static {
System.loadLibrary("native-lib");
}
/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
public native static String stringFromJNI(String s);
public native static int intFromJNI(int n);
public native static String stringFromJNI2(String s);
public native static String stringFromJNI3(String src,float period,String dst);
}
native-lib.cpp
#include <jni.h>
#include <string>
#include "Music3D.cpp"
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myndkkk_MainActivity_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
/**
* 从java层传入string,处理后返回
*/
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myndkkk_FfmpegManager_stringFromJNI(JNIEnv *env, jclass type, jstring str) {
const char *myStr;
myStr = env->GetStringUTFChars(str, JNI_FALSE);
//
char mychar[20] = "123";
strcat(mychar, myStr);//将第二个char[]合并到第一个中,要求第一个空间足够大
//
return env->NewStringUTF(mychar);
}
/**
*从java层传入int,处理后返回
*/
extern "C"
JNIEXPORT jint JNICALL
Java_com_example_myndkkk_FfmpegManager_intFromJNI(JNIEnv *env, jclass type, jint n) {
jint ret;
if (n < 10) {// 如果传入的参数 iArg 小于 10,则返回成功,否则返回失败
ret = 0;
} else {
ret = -1;
}
return ret;
}
/**
*从java层传入jstring,jstring转为char*,char*转std::string,std::string拼接。
*/
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myndkkk_FfmpegManager_stringFromJNI2(JNIEnv *env, jclass type, jstring s_) {
const char *s = env->GetStringUTFChars(s_, 0);
std::string str = s;
str = str + "从java层传入jstring,jstring转为char*,char*转std::string,std::string拼接。";
return env->NewStringUTF(str.c_str());
}
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myndkkk_FfmpegManager_stringFromJNI3(JNIEnv *env, jclass type, jstring src_,
jfloat period, jstring dst_) {
const char *src = env->GetStringUTFChars(src_, 0);
const char *dst = env->GetStringUTFChars(dst_, 0);
std::string cmd = getMusic3Ds(src,period,dst);
return env->NewStringUTF(cmd.c_str());
}