您可自由转发此文, 但请保留出处:Ionic在线学习网站 http://www.ioniconline.com
1.安装Plugman
打开本地终端,执行命令: sudo npm install –g plugman 安装成功后,输入plugman help即可看到各项操作命令。
2.创建自定义Plugin
执行命令:sudo plugman create --name xunfeiPlugin --pluginid xunfeiPlugin --pluginversion 0.0.1 创建成功,在当前目录会看到项目文件xunfeiPlugin
3.进入项目文件,创建对应platforms文件
执行命令:sudo plugman platform add --platform_name ios 这时在src目录可以看到ios目录生成
4接下来开始代码编写
4.1创建xunfeiPulgin.h文件 再在两文件中添加对应的代码
xunfeiPulgin.h内容
#import <Cordova/CDV.h>
#import "iflyMSC/IFlyMSC.h" ///引入讯飞语音头文件
@interface xunfeiPlugin : CDVPlugin<IFlyRecognizerViewDelegate>
{
IFlyRecognizerView *_iflyRecognizerView; ///声明讯飞语音view
}
- (void)initAppid:(CDVInvokedUrlCommand*)command; //初始化讯飞语音
- (void)initRecognizerView:(CDVInvokedUrlCommand*)command; //语音识别函数
@end
xunfeiPulgin.m内容
- (void)initAppid:(CDVInvokedUrlCommand*)command
{
//将“12345678”替换成您申请的APPID。
NSString *initString = [[NSString alloc] initWithFormat:@"appid=%@",@"12345678"];
[IFlySpeechUtility createUtility:initString];
}
- (void)initRecognizerView:(CDVInvokedUrlCommand*)command
{
//初始化语音识别控件
_iflyRecognizerView = [[IFlyRecognizerView alloc] initWithCenter:self.webView.superview.center];
_iflyRecognizerView.delegate = self;
[_iflyRecognizerView setParameter: @"iat" forKey: [IFlySpeechConstant IFLY_DOMAIN]];
//asr_audio_path保存录音文件名,如不再需要,设置value为nil表示取消,默认目录是documents
[_iflyRecognizerView setParameter:@"asrview.pcm " forKey:[IFlySpeechConstant ASR_AUDIO_PATH]];
//启动识别服务
[_iflyRecognizerView start];
}
/*识别结果返回代理
@param resultArray 识别结果
@ param isLast 表示是否最后一次结果
*/
- (void)onResult: (NSArray *)resultArray isLast:(BOOL) isLast
{
NSMutableString * strForResult=[[NSMutableString alloc]init];
for (NSString * str in resultArray) {
strForResult = [NSMutableString stringWithFormat:@"%@;%@",strForResult, str];
}
[self.commandDelegate evalJs:strForResult];
}
/*识别会话错误返回代理
@ param error 错误码
*/
- (void)onError: (IFlySpeechError *) error
{
}
以上objective_c函数基本完成。
4.2看下plugin.xml文件
<plugin id="xunfeiPlugin" version="0.0.1" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<name>xunfeiPlugin</name>
<js-module name="xunfeiPlugin" src="www/xunfeiPlugin.js"><clobbers target="cordova.plugins.xunfeiPlugin" /></js-module>
<platform name="ios">
<config-file parent="/*" target="config.xml">
<feature name="xunfeiPlugin">
<param name="ios-package" value="xunfeiPlugin" />
</feature>
</config-file>
<source-file src="src/ios/xunfeiPlugin.m" />
</platform>
</plugin>
以上可以看出在platform以上是plugin基本信息 id、名称、js文件等。 我们只添加了ios 平台,android平台添加类似。 接下来我们需要给plugin.xml文件在config-file下面添加第三方framework和objective_c文件:
<header-file src="scr/ios/xunfeiPlugin.h"/>
<source-file src="src/ios/xunfeiPlugin.m"/>
<source-file src="src/ios/iflyMSC.framework" framework="true" />
添加依赖的系统framework
<framework src="QuartzCore.framework" weak="true" />
<framework src="AudioToolbox.framework" weak="true" />
<framework src="SystemConfiguration.framework" weak="true" />
<framework src="CoreGraphics.framework" weak="true" />
<framework src="Foundation.framework" weak="true" />
<framework src="AVFoundation.framework" weak="true" />
<framework src="UIKit.framework" weak="true" />
<framework src="CoreTelephony.framework" weak="true" />
<framework src="AddressBook.framework" weak="true" />
<framework src="CoreLocation.framework" weak="true" />
<framework src="libz.tbd" weak="true" />
4.3打开xunfeiPlugin.js添加js方法
var exec = require('cordova/exec');
var FFxunfeiPlugin =function(){};
FFxunfeiPlugin.initAppid = function(){
exec(null,null,"xunfeiPlugin", "initAppid", null);
};
FFxunfeiPlugin.initRecognizerView = function(){
exec(null,null,"xunfeiPlugin", "initRecognizerView", null);
};
module.exports = FFxunfeiPlugin;
其中exec函数是串起js和obcective_c, 如: cordova.exec(successCallback, failCallback, service, action, actionArgs); // successCallback : 成功回调方法
// failCallback : 失败回调方法
// server : 所要请求的服务名字
// action : 所要请求的服务具体操作
// actionArgs : 请求操作所带的参数
可以参考 http://www.cnblogs.com/luoguoqiang1985/p/3574738.html