4

我花了很多时间尝试扩展现有的 cordova 插件,但到目前为止还没有成功,需要您的指导:

我想使用 phonegap (cordova 2.1) 在 android 和 ios 上录制音频。默认设置有效,但我需要能够在我的应用程序中配置记录设置。用户必须能够选择 BitEncodingRate、SamplingRate 等。

这些设置当前在 Cordova 媒体插件中硬编码。(确切地说——在 Android 的 AudioPlayer 类中)。我想尽可能多地重用已经存在的功能并简单地添加功能。

Media.startRecordWithSettings(settings)

但我不清楚如何解决这个问题。

是否无法像这样扩展cordova Media插件:

Media.prototype.startRecordWithSettings = function() {
    exec(null, this.errorCallback, "MyMedia", "startRecordWithSettings", [this.id, this.src]);
};

因为我不想操作将 Media 插件实现为 JS 模块的 cordova.js 文件。我目前的想法是复制 phonegap Media 插件所需的所有代码。(我会复制cordova.js 中定义Media 对象的部分,添加上面的行,并复制OS 端所需的Java 类,并将它们包装到一个看起来与现有cordova 插件相同的插件中,但有记录设置)。

如你所见,我很绝望。我将复制所有内容,而不是扩展模块并添加我需要的自定义函数并重用现有代码。

好的,我还可以编辑 cordova.js 和 Cordova Java 类以满足我的需要,但是我永远无法更新到最新的 cordova 版本,因为我会覆盖我的“修复”。

是否可以扩展cordova插件?或者如果它们不符合我的需要,我必须重写它们吗?

我找到了这个适用于 iOS 的插件,但是自从实现了这个插件之后,似乎发生了很多变化,因为如果我在我的自定义 javascript 部分中编写了这样的内容:

    Media.prototype.startRecordWithSettings = function() { ... }

日志说:“未捕获的 ReferenceError:媒体未定义在 ...”

我是JavaScript 模块模式的新手,我不明白如何扩展 phonegap JS 模块。

请帮我。

4

0 回答 0