Cocos2d-x JNI使用--震动

本文介绍了如何在Cocos2d-x中通过JNI接口实现Android设备的震动效果,包括Android端的震动实现和Cocos2d-x端的调用方法,同时强调了必要的震动权限配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cocos2d-x通过JNI实现Android端的震动

首先看Android端的实现:

package com.cocos2dx.MyJni;

import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;

import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;

public class MyJni extends Cocos2dxActivity {
	
	public static MyJni actInstance;// 定义单例

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		actInstance = this; 
	}

	public Cocos2dxGLSurfaceView onCreateView() {
		Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
		glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
		return glSurfaceView;
	}

	public static void vibrate(long time)
	{
		Log.v("vibrate","time="+time);
		// 获取Vibrate对象  
		Vibrator vibrator = (Vibrator)actInstance.getSystemService(VIBRATOR_SERVICE);
        vibrator.vibrate(time);
	}

	static {
		System.loadLibrary("cocos2dcpp");
	}
}

记着在AndroidManifest.xml里面加入震动权限

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

Cocos2d-x端实现:

MyJniHelper.h

#ifndef __H_MYJNIHELPER_H__
#define __H_MYJNIHELPER_H__
#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 "com.cocos2dx.MyJni.MyJni"
#endif
class MyJniHelper {
public:
	MyJniHelper();
	~MyJniHelper();
	static void vibrate(long time);
};

#endif


MyJniHelper.cpp

#include "MyJniHelper.h"

void MyJniHelper::vibrate(long time)
{
#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
	JniMethodInfo t;
	if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "vibrate", "(J)V"))
	{
		jlong _time = time;
		t.env->CallStaticVoidMethod(t.classID, t.methodID,_time);
		t.env->DeleteLocalRef(t.classID);
	}
#endif
}

需要使用震动的地方,这样使用

MyJniHelper::vibrate(500L);

参数为震动持续的时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值