cocos2dx 3.x JNI问题

引擎是3.2,我在游戏里想调用安卓手机震动,总是不成功。#include <jni.h>报无法打开源文件,3.x是没有jni.h的,不知是不是这个原因。引擎里的platform/android/jni/JniHelper.h本身也有引入jni.h。同样是报错,还有各种未定义字符…请问3.x如何使用JNI?我把2.x的jni.h复制过来,貌似也没用,it can not work!!!

这是3.0的,你试试看

#include <platform/android/jni/JniHelper.h>

cocos2d::JniMethodInfo minfo;

jobject jobj;

if (!cocos2d::JniHelper::getStaticMethodInfo(minfo, "org/cocos2dx/cpp/AppActivity", "getInstance", "()Ljava/lang/Object;"))
    return;

jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);

if (!cocos2d::JniHelper::getMethodInfo(minfo, "org/cocos2dx/cpp/AppActivity", "你java中AppActivity的成员函数", "(I)V"))
    return;
minfo.env->CallVoidMethod(jobj, minfo.methodID,  函数参数);

谢谢你的回复。

#pragma once
#include “cocos2d.h”

USING_NS_CC;

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include “platform/android/jni/JniHelper.h”
#define CLASS_NAME “org/cocos2dx/lib/Cocos2dxHelper”
#endif

class Vibrator
{
public:
static void vibrate(long time);
static void cancelVibrate();
};

void Vibrator::vibrate(long time)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, “vibrate”, “(I)V”))
{
t.env->CallStaticVoidMethod(t.classID, t.methodID, time);
t.env->DeleteLocalRef(t.classID);
}
#endif
}
void Vibrator::cancelVibrate()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, “cancelVibrate”, “()V”))
{
t.env->CallStaticVoidMethod(t.classID, t.methodID);
t.env->DeleteLocalRef(t.classID);
}
#endif
}

我是这么写的,震动没生效,不知是哪不对,

Cocos2dxHelper.java里添加了两个静态方法,android 手机震动权限也加上了

public static void vibrate(long vibrateTime) {
    Vibrator vib = (Vibrator) sActivity.getSystemService(Service.VIBRATOR_SERVICE);
    vib.vibrate(vibrateTime);
}

public static void cancelVibrate() {
 Vibrator vib = (Vibrator) sActivity.getSystemService(Service.VIBRATOR_SERVICE);
 vib.cancel();
}

求教,问题解决了么?我也遇到这个问题

把jni.h 和jni_m.h考到这下面(我就是这样解决的) D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include

android直接打包是没有问题的 vs报错没处理我。。。