我花了很多时间尝试扩展现有的 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 模块。
请帮我。