【问题标题】:ionic media plugin - pass onStatusUpdate to mediaObject?离子媒体插件 - 将 onStatusUpdate 传递给 mediaObject?
【发布时间】:2017-04-20 21:56:16
【问题描述】:

我正在尝试像这样使用 ionic native 的 media 插件:

record(){
    ...
    return this.media.create(src,onStatusUpdate).then((mediaObj) => {
        mediaObj.startRecord();
        return mediaObj;
    });
}

并且我在其他地方使用了从它返回的mediaObj,但我还需要知道mediaObj的状态;这显然来自将第二个参数(回调函数)传递给 media.create() 函数。但是,我不知道如何在其中获取 mediaObj 的状态。我知道以下内容仅用于告诉我状态,但我实际上需要访问它。

const onStatusUpdate = (status) => console.log(status);

那么,问题是,有没有办法简单地访问 mediaObj 的状态?

【问题讨论】:

    标签: ionic2 cordova-plugins ionic-native


    【解决方案1】:

    MediaPlugin 状态更新通知是您获得的全部信息,因此请使用您在状态更改时获得的值设置一个类属性。

    为了管理 MediaObject,我将一个属性设置为 promise 解决时获得的值。

    import { ApplicationRef } from '@angular/core';
    ...
    ...
    
    export class PlayerPage {
      track:any;
      file:MediaObject = undefined;
      position:any = undefined;
      status:any = 0;
    
      constructor(public ref ApplicationRef, public navCtrl: NavController, private navParams: NavParams, public AppstateProvider: Appstate, private media: MediaPlugin) {
        this.track = navParams.get('track');
    
        media.create('http://.../...mp3',(status)=>{
          this.status = status;
          this.ref.tick();
        }).then((file: MediaObject) => {
          this.file = file;
        });
      }
    
    play() {
      this.file.play();
    }
    

    this.ref.tick();是必要的,因为 Angular 没有检测到这个属性更新 - 我尝试发布和订阅 Angular 仍然没有检测到属性更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 2018-09-14
      • 2017-12-06
      • 2020-04-23
      • 1970-01-01
      • 2014-08-11
      相关资源
      最近更新 更多