Cocos2dx 개발환경에서 안드로이드 기기에서 진동을 호출 할려면?

생각보다 간단해요^^

간단한 설명과 함께 소스코드도 같이 올려 드릴께요



먼저 Visual Studio 개발환경에서 코드에요 (C++)


서비스 클래스를 만들어서 아무곳에서나 진동함수를 호출 할 수 있게 만들어 줍니다.


[DeviceServices.h]

class DeviceServices

{

public:

DeviceServices();

~DeviceServices();


// 진동 호출 함수

void callVibrateEffect();

};


[DeviceServices.cpp]

#include "DeviceServices.h"


DeviceServices::DeviceServices(){}

DeviceServices::~DeviceServices(){}


#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)


#include "platform/android/jni/JniHelper.h"

#include <jni.h>


const char* AppActivityClassName = "com/eyen/cpp/AppActivity";  // <-안드로이드에 진동구현 코드가 있는 경로에요


void DeviceServices::callVibrateEffect()

{

cocos2d::JniMethodInfo t;

if (cocos2d::JniHelper::getStaticMethodInfo(t, AppActivityClassName, "jniVibrateEffect", "()V"))

{

t.env->CallStaticVoidMethod(t.classID, t.methodID);

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

}

}


#else

void DeviceServices::callVibrateEffect() { return; }

#endif


const char* AppActivityClassName = "com/eyen/cpp/AppActivity"; 

여기서 붉은색으로 마크된 경로는 본인의 진동을 구현한 java 파일경로에 맞게 설정해 주면 되어요.



서비스 클래스를 만들었으면

C++ 호출예제는 초간단!!


#include "DeviceServices.h"


void MainScene::hitEnermyObj()

{

// call vibrate

DeviceServices::vibrateEffect();

}


이렇게 하면 끝!


다음은 안드로이드에 진동을 구현해 줘야되겠죠?


제가 진동을 구현한 java 파일경로는 "com/eyen/cpp/AppActivity" 입니다. 그래서 저 위에 C++에 경로를 이렇게 세팅해 줬어

package com.eyen.cpp;

import android.os.Vibrator;
import org.cocos2dx.lib.Cocos2dxActivity;

public class AppActivity extends Cocos2dxActivity {

// main
private static AppActivity _appActiviy;

// vibrate
Vibrator mVibrator = null;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

_appActiviy = this;

mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

}

public void vibrateEffect() {
mVibrator.vibrate(80); // 요기 마킹된 수치를 조정하면 진동시간을 늘리고 줄일 수 있어요 (클수록 오래감)
}

public static void jniVibrateEffect() {
_appActiviy.runOnUiThread(new Runnable() {
@Override
public void run() {
_appActiviy.vibrateEffect();
}
});
}
}

이상 코코스 개발환경에서 안드로이드 기기에 진동을 구현하는 방법이었습니다. ^^

이렇게 진동을 구현해서 만든 게임이에요



다운받기 "대빠빨리쏴"


https://play.google.com/store/apps/details?id=com.eyen.SimsulPang