AudioSuspensionModel.ets 2.01 KB
import window from '@ohos.window';
import { Logger } from 'wdKit';
import { WDPlayerController } from 'wdPlayer';
import { BusinessError } from '@ohos.base';

const TAG = 'AudioSuspensionModel'

/**
 * 音频悬浮窗公共方法类
 */
export class AudioSuspensionModel {
  public playerController: SubscribedAbstractProperty<WDPlayerController> =  AppStorage.link<WDPlayerController>('playerController')
  public floatWindowClass: SubscribedAbstractProperty<window.Window> =  AppStorage.link<window.Window>('floatWindowClass')
  constructor() {
    this.initPlayerController()
  }
  /**
   * 判断音频实例是否已存在,不存在则创建
   */
  private initPlayerController() {
    if(this.playerController === undefined) {
      Logger.info(TAG, 'playerController undefined')
      AppStorage.setOrCreate('playerController', new WDPlayerController());
      this.playerController = AppStorage.link<WDPlayerController>('playerController')
      Logger.info(TAG, 'playerController create success')
    } else {
      Logger.info(TAG, 'playerController already exit')
    }
  }
  /**
   * 配置音频地址
   */
  public setPlayerUrl() {
    // this.playerController.switchPlayOrPause()
    Logger.info(TAG, 'handlePlayer')
  }
  // 显示悬浮窗。
  public showWindow() {
    this.floatWindowClass.get().showWindow((err: BusinessError) => {
      let errCode: number = err.code;
      if (errCode) {
        console.error('floatWindowClass Failed to show the window. Cause: ' + JSON.stringify(err));
        return;
      }
      console.info('floatWindowClass Succeeded in showing the window.');
    });
  }

  // 销毁悬浮窗 使用destroy对其进行销毁。
  public destroyWindow() {
    this.floatWindowClass.get().destroyWindow((err: BusinessError) => {
      let errCode: number = err.code;
      if (errCode) {
        console.error('floatWindowClass Failed to destroy the window. Cause: ' + JSON.stringify(err));
        return;
      }
      console.info('floatWindowClass Succeeded in destroying the window.');
    });
  }



}