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