| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- import { _decorator } from 'cc';
- import { oops } from 'db://oops-framework/core/Oops';
- import { DeviceUtil } from 'db://oops-framework/core/utils/DeviceUtil';
- import { AndroidEvent } from '../config/AndroidEvent';
- /**
- * 安卓消息处理中心
- * 负责集中处理安卓平台相关的消息和事件
- */
- export class AndroidMessageCenter {
- private static _instance: AndroidMessageCenter | null = null;
- private isInitialized: boolean = false;
- private constructor() {
- // 私有构造函数,确保单例模式
- }
- /**
- * 获取单例实例
- */
- public static getInstance(): AndroidMessageCenter {
- if (!this._instance) {
- this._instance = new AndroidMessageCenter();
- }
- return this._instance;
- }
- /**
- * 初始化安卓消息处理中心
- */
- public init(): void {
- if (this.isInitialized) return;
- oops.log.logConfig("AndroidMessageCenter", "初始化安卓消息处理中心");
- // 只在安卓平台注册事件监听
- if (DeviceUtil.isNative && DeviceUtil.isAndroid) {
- this.registerEventListeners();
- }
- this.isInitialized = true;
- }
- /**
- * 注册事件监听器
- */
- private registerEventListeners(): void {
- // 监听返回按键事件
- // oops.message.on(AndroidEvent.BACK_PRESSED, this.onBackPressed, this);
- // // 监听应用暂停事件
- // oops.message.on(AndroidEvent.APP_PAUSE, this.onAppPause, this);
- // // 监听应用恢复事件
- // oops.message.on(AndroidEvent.APP_RESUME, this.onAppResume, this);
- // // 监听网络状态变化事件
- // oops.message.on(AndroidEvent.NETWORK_CHANGE, this.onNetworkChange, this);
- // 可以根据需要添加更多事件监听
- oops.log.logConfig("AndroidMessageCenter", "注册安卓事件监听器成功");
- }
- // /**
- // * 处理返回按键事件
- // * @param data 事件数据
- // */
- // private onBackPressed(data: any): void {
- // oops.log.logConfig("AndroidMessageCenter", "处理返回按键事件");
- // // 处理返回按键逻辑
- // // 例如:判断当前UI栈,决定是返回上一级还是弹出退出确认框
- // }
- // /**
- // * 处理应用暂停事件
- // * @param data 事件数据
- // */
- // private onAppPause(data: any): void {
- // oops.log.logConfig("AndroidMessageCenter", "处理应用暂停事件");
- // // 处理应用暂停逻辑
- // // 例如:暂停游戏、保存数据等
- // }
- // /**
- // * 处理应用恢复事件
- // * @param data 事件数据
- // */
- // private onAppResume(data: any): void {
- // oops.log.logConfig("AndroidMessageCenter", "处理应用恢复事件");
- // // 处理应用恢复逻辑
- // // 例如:恢复游戏状态、检查网络连接等
- // }
- // /**
- // * 处理网络状态变化事件
- // * @param data 事件数据
- // */
- // private onNetworkChange(data: any): void {
- // oops.log.logConfig("AndroidMessageCenter", "处理网络状态变化事件");
- // // 处理网络状态变化逻辑
- // // 例如:显示网络断开提示、重新连接服务器等
- // }
- /**
- * 向原生层发送消息
- * @param eventName 事件名称
- * @param data 事件数据
- */
- public sendToNative(eventName: string, data?: any): void {
- if (!(DeviceUtil.isNative && DeviceUtil.isAndroid)) {
- oops.log.logConfig("AndroidMessageCenter", "当前不是安卓平台,无法发送原生消息");
- return;
- }
- const jsonData = data ? JSON.stringify(data) : "{}";
- oops.log.logConfig("AndroidMessageCenter", `发送消息到原生端: ${eventName}, 数据: ${jsonData}`);
- // 这里添加实际发送到原生端的代码
- // 例如通过 JSB 调用原生方法
- }
- /**
- * 清除所有事件监听(在游戏结束时调用)
- */
- public destroy(): void {
- if (!this.isInitialized) return;
- if (DeviceUtil.isNative && DeviceUtil.isAndroid) {
- // 移除所有事件监听
- // oops.message.off(AndroidEvent.BACK_PRESSED, this.onBackPressed, this);
- // oops.message.off(AndroidEvent.APP_PAUSE, this.onAppPause, this);
- // oops.message.off(AndroidEvent.APP_RESUME, this.onAppResume, this);
- // oops.message.off(AndroidEvent.NETWORK_CHANGE, this.onNetworkChange, this);
- // 移除其他可能添加的事件监听
- }
- this.isInitialized = false;
- oops.log.logConfig("AndroidMessageCenter", "销毁安卓消息处理中心");
- }
- }
|