我想在so部分调用java的某个函数,该函数的参数有byte[]等。
部分的C代码如下:
jmethodID java_method = (*env)->GetMethodID(env, java_class, "PlayAudio", "([BI)V");
if(java_method == 0)
{
return (*env)->NewStringUTF(env, "not find PalyAudio!");
}
char szTemp[20] ={0xff};
(*env)->CallObjectMethod(env, java_obj, java_method, szTemp, 20);
java中PlayAudio的原型为:
public void PlayAudio(byte[] data, int datalen)
可是C部分调用是却出现空指针的调用异常。byte[]这个参数在C中该如何填入,传递到java部分?
部分的C代码如下:
jmethodID java_method = (*env)->GetMethodID(env, java_class, "PlayAudio", "([BI)V");
if(java_method == 0)
{
return (*env)->NewStringUTF(env, "not find PalyAudio!");
}
char szTemp[20] ={0xff};
(*env)->CallObjectMethod(env, java_obj, java_method, szTemp, 20);
java中PlayAudio的原型为:
public void PlayAudio(byte[] data, int datalen)
可是C部分调用是却出现空指针的调用异常。byte[]这个参数在C中该如何填入,传递到java部分?
解决方案 »
- 为什么要下划线
- Android软件适配手机屏幕的问题,请教有经验的TX!
- android ADT插件安装失败?寻求解决方案
- android自带浏览器源代码修改--控制每次页面载入显示大小
- 如何通过http协议访问tomcat url
- android SharedPreferences putStringSet问题
- 求助,新手求帮助,求大神搭救,项目的关键字无法识别问题
- 安卓加密软件
- 求助android listview中长按删除某项连数据库中的文件一起删除
- android studio 创建虚拟机出现这个错误怎么回事?
- 更新了eclipse的android插件,在运行以前工程的时候报错,大家帮我看看是怎么回事?
- 如何更改HorizontalScrollView原来的手势功能
int len = 20;
bytes = (*env)->NewByteArray(env, len);
if(bytes != NULL){
(*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte *)szTemp);
....
}楼主试试吧,我没有验证,希望对你有帮助
如C-->FunJava()
FunJava()
{
//文件读写。
//或者播放声音数据
}
如果是c与java用socket方式通信的话,用本地socket就可以了吧
如果是c与java用socket方式通信的话,用本地socket就可以了吧
ril就是这么干的,可以参考下