cocos2d-x3.2中添加Android手机震动

cocos2d-x3.2中添加Android手机震动,第1张

概述       本人宣布从此博文发出后,我的cocos2dx的引擎从cocos2dx3.1.1跳到cocos2dx3.2,哈哈,其实变化不大的,不碍事~~~       下面来说说在cocos中添加Android手机震动的功能,亲身体验,网上的教程都是渣渣啊,坑比的很,还要看了原帖http://www.cocos2d-x.org/boards/6/topics/8179,全英文的,蛋疼恼火了许久,才

本人宣布从此博文发出后,我的cocos2dx的引擎从cocos2dx3.1.1跳到cocos2dx3.2,哈哈,其实变化不大的,不碍事~~~

下面来说说在cocos中添加AndroID手机震动的功能,亲身体验,网上的教程都是渣渣啊,坑比的很,还要看了原帖http://www.cocos2d-x.org/boards/6/topics/8179,全英文的,蛋疼恼火了许久,才解决~~

下面进入正题。相信看完本文,什么问题都ok了!!!!

1、在proj.androID这个目录下


AndroIDManifest.xml文件,给app增加震动权限

<uses-permission androID:name="androID.permission.VIBRATE" />


2、修改androID项目源文件src/org/cocos2dx/lib/Cocos2dxSound.java增加震动方法,调用androID底层振动器

/*** @param time震动时间*/

public voID vibrate(long time) {

Vibratorv = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);

v.vibrate(time);

}

/** * @param pattern震动时间数组 EG:{500,200,500,300}*@param repeat重复次数*/

public voID vibrateWithPattern(long[] pattern,int repeat) {

Vibratorv = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);

v.vibrate(pattern,repeat);

}

/*** 取消震动 */

public voID cancelVibrate() {

Vibratorv = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);

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)

{

JniMethodInfomethodInfo;

if (! getStaticmethodInfo(methodInfo,"vibrateWithPattern","([JI)V"))

{

return;

}

int elements = sizeof(pattern);

jlongArrayjLongArray = methodInfo.env->NewLongArray(elements);

methodInfo.env->SetLongArrayRegion(jLongArray,elements,(jlong*) pattern);

methodInfo.env->CallStaticVoIDMethod(methodInfo.classID,jLongArray,repeat);

methodInfo.env->DeleteLocalRef(methodInfo.classID);

}

voID cancelVibrateJNI()

{

JniMethodInfomethodInfo;

if (! getStaticmethodInfo(methodInfo,"cancelVibrate","()V"))

{

return;

}

methodInfo.env->CallStaticVoIDMethod(methodInfo.classID,methodInfo.methodID);

methodInfo.env->DeleteLocalRef(methodInfo.classID);

}

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[],int repeat)

{

vibrateWithPatternJNI(pattern,repeat);

}

voID SimpleAudioEngine::cancelVibrate()

{

cancelVibrateJNI();

}

4.至此,代码上的修改都OK啦,在游戏中需要使用震动的地方调用。

CocosDenshion::SimpleAudioEngine::sharedEngine()->vibrate(time);

CocosDenshion::SimpleAudioEngine::sharedEngine()->vibrateWithPattern(pattern,repeat);

取消震动用这个

CocosDenshion::SimpleAudioEngine::sharedEngine()->cancelVibrate();

最后在中加上这个

Coco2dxHelper.java中

public static voID vibrate(long time)
{
sCocos2dSound.vibrate(time);
}

public static voID vibrateWithPattern(long[] pattern,int repeat) {
sCocos2dSound.vibrateWithPattern(pattern,repeat);
}
/**
* 取消震动


到这里就圆满完成了,网上的教程没有最后一步,所以说最后一步尤其关键。

本人cocos2dx 2.x和3.x的源码淘宝地址(欢迎大家光顾):https://shop141567464.taobao.com/?spm=a313o.7775905.1998679131.d0011.pzUIU4


@H_670_403@不懂的可以加我的QQ群: 239982941(cocos2d-x 3.x学习群)欢迎你的到来哦,看了博文给点脚印呗,谢谢啦~~

总结

以上是内存溢出为你收集整理的cocos2d-x3.2中添加Android手机震动全部内容,希望文章能够帮你解决cocos2d-x3.2中添加Android手机震动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1003288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存