cocos2d-x和android相互调用

本文介绍了如何在cocos2d-x游戏引擎与Android原生应用之间进行相互调用。首先,通过创建自定义的Java类并配置AndroidManifest.xml实现环境准备。接着,展示了在cocos2d-x中调用Android方法,如振动功能,以及如何在Android端调用cocos2d-x的函数,如通过JNI和广播接收器监听电量变化。文章详细解析了JNI的使用,包括获取类和函数信息以及参数转换的过程。
摘要由CSDN通过智能技术生成

1.准备环境工作,在项目目录下新建自己的MyApplication,MyActivity,MyAllSdk,MyBroadcastReceiver的java文件:


在MyApplication.Java中添加代码:

package com.OYHP;

import android.app.Application;

public class MyApplication extends Application {
	@Override
	public void onCreate() {
		super.onCreate();
	}
}

在MyActivity.Java中添加代码:

package com.OYHP;

import com.OYHP.MyAllSdk;
import com.OYHP.MyApplication;
import com.OYHP.MyBroadcastReceiver;

import android.util.Log;
import android.os.Bundle;
import android.content.Intent;
import android.content.IntentFilter;
import org.cocos2dx.lib.Cocos2dxActivity;

import com.OYHP.SdkTest.R;    //这里的路径后面介绍

public class MyActivity extends Cocos2dxActivity {
	
	private MyAllSdk myAllSdk; //我声明了,但未使用
	private MyApplication myApp; //我声明了,但未使用
	private MyBroadcastReceiver receiver;

	@Override
	public void onCreate(Bundle saveInstanceState) {
		super.onCreate(saveInstanceState);
		
		myApp = (MyApplication) getApplication();
		myAllSdk = new MyAllSdk(this);
		
		receiver = new MyBroadcastReceiver();
		registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));    //注册电量监听广播
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		//销毁广播
		unregisterReceiver(receiver);
	}
}

在MyAllSdk.Java中添加代码:

package com.OYHP;

import android.content.Context;
import android.app.Activity;
import android.os.Vibrator;

public class MyAllSdk {
	private static Activity sActivity = null;
	
	MyAllSdk(Activity _activity) {
		sActivity = _activity;
	}
	
	public static void vibrate(int times) {
		if(sActivity != null) {
			Vibrator v = (Vibrator) sActivity.getSystemService(Context.VIBRATOR_SERVICE);
			v.vibrate(times);
		}
	}
	
	public native static void onBatteryStatus(int _batteryStatus, int _charge);
}

在MyBroadcastReceiver.Java中添加代码:

package com.OYHP;

import android.content.BroadcastReceiver;
import android.os.BatteryManager;
import android.widget.TextView;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.OYHP.MyAllSdk;

public class MyBroadcastReceiver extends BroadcastReceiver { 
	 @Override
	 public void onReceive(Context context, Intent intent) {
		int isCharge = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN) == BatteryManager.BATTERY_STATUS_CHARGING ? 1 : 0;
		int currtent = intent.getExtras().getInt("level");
		int total = intent.getExtras().getInt("scale");
		int percent = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值