AndroidMessageCenter.ts 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import { _decorator } from 'cc';
  2. import { oops } from 'db://oops-framework/core/Oops';
  3. import { DeviceUtil } from 'db://oops-framework/core/utils/DeviceUtil';
  4. import { AndroidEvent } from '../config/AndroidEvent';
  5. /**
  6. * 安卓消息处理中心
  7. * 负责集中处理安卓平台相关的消息和事件
  8. */
  9. export class AndroidMessageCenter {
  10. private static _instance: AndroidMessageCenter | null = null;
  11. private isInitialized: boolean = false;
  12. private constructor() {
  13. // 私有构造函数,确保单例模式
  14. }
  15. /**
  16. * 获取单例实例
  17. */
  18. public static getInstance(): AndroidMessageCenter {
  19. if (!this._instance) {
  20. this._instance = new AndroidMessageCenter();
  21. }
  22. return this._instance;
  23. }
  24. /**
  25. * 初始化安卓消息处理中心
  26. */
  27. public init(): void {
  28. if (this.isInitialized) return;
  29. oops.log.logConfig("AndroidMessageCenter", "初始化安卓消息处理中心");
  30. // 只在安卓平台注册事件监听
  31. if (DeviceUtil.isNative && DeviceUtil.isAndroid) {
  32. this.registerEventListeners();
  33. }
  34. this.isInitialized = true;
  35. }
  36. /**
  37. * 注册事件监听器
  38. */
  39. private registerEventListeners(): void {
  40. // 监听返回按键事件
  41. // oops.message.on(AndroidEvent.BACK_PRESSED, this.onBackPressed, this);
  42. // // 监听应用暂停事件
  43. // oops.message.on(AndroidEvent.APP_PAUSE, this.onAppPause, this);
  44. // // 监听应用恢复事件
  45. // oops.message.on(AndroidEvent.APP_RESUME, this.onAppResume, this);
  46. // // 监听网络状态变化事件
  47. // oops.message.on(AndroidEvent.NETWORK_CHANGE, this.onNetworkChange, this);
  48. // 可以根据需要添加更多事件监听
  49. oops.log.logConfig("AndroidMessageCenter", "注册安卓事件监听器成功");
  50. }
  51. // /**
  52. // * 处理返回按键事件
  53. // * @param data 事件数据
  54. // */
  55. // private onBackPressed(data: any): void {
  56. // oops.log.logConfig("AndroidMessageCenter", "处理返回按键事件");
  57. // // 处理返回按键逻辑
  58. // // 例如:判断当前UI栈,决定是返回上一级还是弹出退出确认框
  59. // }
  60. // /**
  61. // * 处理应用暂停事件
  62. // * @param data 事件数据
  63. // */
  64. // private onAppPause(data: any): void {
  65. // oops.log.logConfig("AndroidMessageCenter", "处理应用暂停事件");
  66. // // 处理应用暂停逻辑
  67. // // 例如:暂停游戏、保存数据等
  68. // }
  69. // /**
  70. // * 处理应用恢复事件
  71. // * @param data 事件数据
  72. // */
  73. // private onAppResume(data: any): void {
  74. // oops.log.logConfig("AndroidMessageCenter", "处理应用恢复事件");
  75. // // 处理应用恢复逻辑
  76. // // 例如:恢复游戏状态、检查网络连接等
  77. // }
  78. // /**
  79. // * 处理网络状态变化事件
  80. // * @param data 事件数据
  81. // */
  82. // private onNetworkChange(data: any): void {
  83. // oops.log.logConfig("AndroidMessageCenter", "处理网络状态变化事件");
  84. // // 处理网络状态变化逻辑
  85. // // 例如:显示网络断开提示、重新连接服务器等
  86. // }
  87. /**
  88. * 向原生层发送消息
  89. * @param eventName 事件名称
  90. * @param data 事件数据
  91. */
  92. public sendToNative(eventName: string, data?: any): void {
  93. if (!(DeviceUtil.isNative && DeviceUtil.isAndroid)) {
  94. oops.log.logConfig("AndroidMessageCenter", "当前不是安卓平台,无法发送原生消息");
  95. return;
  96. }
  97. const jsonData = data ? JSON.stringify(data) : "{}";
  98. oops.log.logConfig("AndroidMessageCenter", `发送消息到原生端: ${eventName}, 数据: ${jsonData}`);
  99. // 这里添加实际发送到原生端的代码
  100. // 例如通过 JSB 调用原生方法
  101. }
  102. /**
  103. * 清除所有事件监听(在游戏结束时调用)
  104. */
  105. public destroy(): void {
  106. if (!this.isInitialized) return;
  107. if (DeviceUtil.isNative && DeviceUtil.isAndroid) {
  108. // 移除所有事件监听
  109. // oops.message.off(AndroidEvent.BACK_PRESSED, this.onBackPressed, this);
  110. // oops.message.off(AndroidEvent.APP_PAUSE, this.onAppPause, this);
  111. // oops.message.off(AndroidEvent.APP_RESUME, this.onAppResume, this);
  112. // oops.message.off(AndroidEvent.NETWORK_CHANGE, this.onNetworkChange, this);
  113. // 移除其他可能添加的事件监听
  114. }
  115. this.isInitialized = false;
  116. oops.log.logConfig("AndroidMessageCenter", "销毁安卓消息处理中心");
  117. }
  118. }