1、在proj.androID这个目录下
AndroIDManifest.xml文件,给app增加震动权限
<uses-permission androID:name="androID.permission.VIBRATE"/>
2、修改androID项目源文件src/org/cocos2dx/lib/Cocos2dxSound.java增加震动方法,调用androID底层振动器
/***@paramtime震动时间*/
publicvoIDvibrate(longtime) {
Vibratorv = (Vibrator)mContext.getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(time);
}
/** *@parampattern震动时间数组EG:{500,200,500,300}*@paramrepeat重复次数*/
publicvoIDvibrateWithPattern(long[] pattern,intrepeat) {
v.vibrate(pattern,repeat);
/***取消震动*/
publicvoIDcancelVibrate() {
v.cancel();
3.至此,java项目中的修改就OK啦,下面就是在Cocos2d-x中增加JNI方法让C++去掉用Java的震动方法就OK啦!
3.1.修改 libCocosDenshion项目中cocos2d-x\CocosDenshion\androID\jni文件夹下的SimpleAudioEngineJni.h和SimpleAudioEngineJni.cpp方法
在SimpleAudioEngineJni.h中添加
#ifndef __SIMPLE_AUdio_ENGINE_JNI__
#define __SIMPLE_AUdio_ENGINE_JNI__
#include
extern "C"
{
......
// add thesementhod
extern voID vibrateJNI(long long time);
extern voID vibrateWithPatternJNI(long long pattern[],intrepeat);
extern voID cancelVibrateJNI();
#endif // __SIMPLE_AUdio_ENGINE_JNI__
在SimpleAudioEngineJni.cpp中添加
// add these jni menthod
voID vibrateJNI(long long time)
JniMethodInfomethodInfo;
if (! getStaticmethodInfo(methodInfo,"vibrate","(J)V"))
return;
methodInfo.env->CallStaticVoIDMethod(methodInfo.classID,methodInfo.methodID,time);
methodInfo.env->DeleteLocalRef(methodInfo.classID);
voID vibrateWithPatternJNI(long long pattern[],int repeat)
int elements = sizeof(pattern);
jlongArrayjLongArray = methodInfo.env->NewLongArray(elements);
methodInfo.env->SetLongArrayRegion(jLongArray,elements,(jlong*) pattern);
voID cancelVibrateJNI()
3.2修改CocosDenshion/include/SimpleAudioEngine.h增加如下方法.
voID vibrate(long long time);
voID vibrateWithPattern(long long pattern[],int repeat);
voID cancelVibrate();
3.3修改CocosDenshion/androID/SimpleAudioEngine.cpp增加调用JNI的如下方法。
voID SimpleAudioEngine::vibrate(long long time)
vibrateJNI(time);
voID SimpleAudioEngine::vibrateWithPattern(long long pattern[],sans-serif"> vibrateWithPatternJNI(pattern,sans-serif"> voID SimpleAudioEngine::cancelVibrate()
cancelVibrateJNI();
4.至此,代码上的修改都OK啦,在游戏中需要使用震动的地方调用。
CocosDenshion::SimpleAudioEngine::sharedEngine()->vibrate(time);
CocosDenshion::SimpleAudioEngine::sharedEngine()->vibrateWithPattern(pattern,sans-serif"> 取消震动用这个
CocosDenshion::SimpleAudioEngine::sharedEngine()->cancelVibrate();
总结以上是内存溢出为你收集整理的Cocos2d-x添加Android手机震动全部内容,希望文章能够帮你解决Cocos2d-x添加Android手机震动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)