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", "销毁安卓消息处理中心"); } }