【发布时间】:2015-02-17 18:56:49
【问题描述】:
我看了又看,但很惊讶地发现我找不到通过 Phonegap 简单地发出键盘点击声音的插件或功能。我的用例是我已经实现了一个自定义数字键盘,我想在用户点击按钮时简单地提供一个可听见的“点击”。 仅仅是使用媒体插件并播放声音的情况吗?我有点认为对操作系统的简单调用会更容易。
花了一些时间查看自定义插件,但我是 PhoneGap 的新手,所以想收集选项。
欢迎提出建议。
【问题讨论】:
我看了又看,但很惊讶地发现我找不到通过 Phonegap 简单地发出键盘点击声音的插件或功能。我的用例是我已经实现了一个自定义数字键盘,我想在用户点击按钮时简单地提供一个可听见的“点击”。 仅仅是使用媒体插件并播放声音的情况吗?我有点认为对操作系统的简单调用会更容易。
花了一些时间查看自定义插件,但我是 PhoneGap 的新手,所以想收集选项。
欢迎提出建议。
【问题讨论】:
对话框插件有哔声功能
安装插件:
cordova plugin add org.apache.cordova.dialogs
使用提示音
navigator.notification.beep(1);
如果要播放原生键盘输入声音,则必须在自定义插件上使用此代码:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^{
AudioServicesPlaySystemSound(1104);
});
或
[[UIDevice currentDevice] playInputClick];
您可以使用的其他声音 ID 列表
【讨论】:
好的 - 花了一些时间但完成了。对于一个新的 PhoneGap / HTML 人来说相当复杂。 正如 jcesarmobile 所指出的 - PhoneGap 不会为您执行此操作,并且 navigator.notification.beep(1) 不是我所追求的。
别无选择,只能写一个插件。
学习编号 1:PhoneGap 3 具有简洁的插件安装机制,可以节省大量时间将文件粘贴到项目中的正确位置并将功能标签添加到正确的 config.xml 中。并不是网上所有的例子都提到了这一点。
学习编号 2:名称开头没有大写字母的项目在添加插件时似乎会导致问题。我一直在使用“phonegap plugins add xxxx”,但 .h 和 .m 文件没有按预期复制。
学习号 3:plugman 有一个“创建”功能,可以为您组合一个不错的插件模板。我在手动制作后发现了这个,但是你去。
学习号 4:plugman 模板集的目标是“cordova.plugins.xxx”,所以不要忘记使用它从 Javascript 调用您的本地函数(即 cordova.plugins.xxx)。你的方法)
注意 1:plugman 使用单一方法 (coolMethod) 创建一个示例。你需要改变它(显然)。此外 - 它只有一个 .m 文件,而不是更典型的 .h 和 .m 文件。
当然,一路上还有更多的障碍,但现在想不起来了。
最后,原生代码真的很简单。不久前,我已经在一个 swift 项目中使用了“AudioServicesPlaySystemSound”调用,所以对我来说,原生位比其他的要容易得多。
代码如下。你会注意到我只返回一个成功的结果并取消了所有的参数处理。
(void)clickSound:(CDVInvokedUrlCommand*)command { CDVPluginResult* pluginResult = nil;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 音频服务播放系统声音(0x450); }); pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:@"done"]; [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
@结束
【讨论】: