""" Android Service Dreams 组件 — DreamService 等 方法签名完全对齐 Android SDK (android.service.dreams 包) """ from typing import Any, Callable, Dict, List, Optional from .._core import Stub, AndroidOnlyError # ═══════════════════════════════════════════════════════════════ # DreamService # ═══════════════════════════════════════════════════════════════ class DreamService(Stub): """DreamService — 屏保服务基类""" # 服务接口 SERVICE_INTERFACE = "android.service.dreams.DreamService" SERVICE_META_DATA = "android.service.dream" # 退出原因 EXIT_CAUSE_UNKNOWN = 0 EXIT_CAUSE_TIMEOUT = 1 EXIT_CAUSE_USER = 2 EXIT_CAUSE_DREAM_FINISHED = 3 def __init__(self): super().__init__() self._fullscreen: bool = False self._interactive: bool = False self._dreaming: bool = False self._window: Optional[Any] = None self._content_view: Optional[Any] = None self._exit_cause: int = DreamService.EXIT_CAUSE_UNKNOWN self._created: bool = False self._screen_bright: bool = True self._doze_component: Optional[Any] = None self._doze_mode: bool = False self._debug: bool = False def setContentView(self, view: Any): """设置内容视图""" self._content_view = view def getContentView(self) -> Optional[Any]: return self._content_view def setFullscreen(self, fullscreen: bool): """设置全屏模式""" self._fullscreen = fullscreen def isFullscreen(self) -> bool: """检查是否全屏""" return self._fullscreen def isInteractive(self) -> bool: """检查是否可交互""" return self._interactive def setInteractive(self, interactive: bool): """设置可交互""" self._interactive = interactive def getWindow(self) -> Optional[Any]: """获取窗口""" return self._window def startDream(self): """开始屏保""" self._dreaming = True def awaken(self): """唤醒/结束屏保""" self._dreaming = False def onDreamingStarted(self): """屏保开始时回调""" self._dreaming = True def onDreamingStopped(self): """屏保停止时回调""" self._dreaming = False def onCreate(self): """创建时回调""" self._created = True def onDestroy(self): """销毁时回调""" self._created = False self._dreaming = False def onAttachedToWindow(self): """附加到窗口时回调""" pass def onDetachedFromWindow(self): """从窗口分离时回调""" pass def isDreaming(self) -> bool: """检查是否正在运行屏保""" return self._dreaming def getExitCause(self) -> int: return self._exit_cause def setExitCause(self, cause: int): self._exit_cause = cause def onWakeUp(self): """唤醒回调""" self.awaken() def canDoze(self) -> bool: return self._doze_mode def setDozeComponent(self, component: Any): self._doze_component = component def toString(self) -> str: return (f"DreamService(dreaming={self._dreaming}, " f"fullscreen={self._fullscreen}, " f"interactive={self._interactive})") def hashCode(self) -> int: return id(self) & 0x7FFFFFFF def equals(self, other) -> bool: return self is other # ═══════════════════════════════════════════════════════════════ # __all__ # ═══════════════════════════════════════════════════════════════ __all__ = [ "DreamService", ]