Cordova插件开发入门(1)

来源:互联网 发布:vb编程软件中文下载 编辑:程序博客网 时间:2024/05/18 18:00

很多时候官网的插件不足给我们使用、比如说:现在公司要正在做Phonegap的项目,要用到自主研发的一些技术,
那么这个技术是你们公司研发的,网上就根本不可能有这种插件了、那么就要开始学习cordova来自定义一个插件.

下面开始一个简单的例子
这个代码是我们公司的一个语音拨号、语音通知的插件,但是出于懒惰的原因,我就在这个上面加一个测试的tt,实现弹出一个吐司

/** * Author:View on 2015/12/30 10:21 * Class Synopsis: */public class VoicePlugin extends CordovaPlugin {    private static final String VICEO_ACTION="viceo";    private static final String DIAL_ACTION="dial";    private static final String text="tt";    private static final String TAG=VoicePlugin.class.getSimpleName();    public VoicePlugin() {    }    @Override    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {        Log.e("ViewLog","get action is: "+action.toString());        Log.e("ViewLog","get args is: "+args.toString());        if(action.equals(VICEO_ACTION)){            //语音通知            ViceoAction();            Log.e("ViewLog  ViceoAction","get args is: "+args.toString());        }else if(action.equals(DIAL_ACTION)){            //点击拨号            DialAction();            Log.e("ViewLog  DialAction","get args is: "+args.toString());        }else if(action.equals(text)){            Toast.makeText(cordova.getActivity(),"Hello",Toast.LENGTH_SHORT).show();        }        return false;    }    private void DialAction() {    }    private void ViceoAction() {    }    @Override    public void initialize(CordovaInterface cordova, CordovaWebView webView) {        super.initialize(cordova, webView);    }

第二步:
在res/xml/config.xml下添加插件类(这里的name和以下的操作有关系)

    <feature name="Voice">        <param name="android-package" value="com.sunrise.voice.VoicePlugin"></param>    </feature>

第三步:
在assets/www/plugins下,建立一个包
com.sunrise.voice,在这个包下面建立一个xx.js(这里我建立问voice.js)

cordova.define("com.sunrise.voice.voice", function(require, exports, module) {var exec = require('cordova/exec');module.exports = {    tt: function (successCallback, errorCallback, args) {            exec(successCallback, errorCallback, "Voice", "tt", args);        },};})

第四步:
在assets/www/cordova_plugins.js下添加插件配置
file:是第三步的文件路径
id:是第三步的 com.sunrise.voice.voice
merges:调用的方法

 {            "file": "plugins/com.sunrise.voice/voice.js",            "id": "com.sunrise.voice.voice",            "merges": [                        "navigator.voice"                    ]      }

第五步:
在assets/www/index.html下开始测试

  <script type="text/javascript" charset="utf-8">         document.addEventListener("deviceready", onDeviceReady, false);         function goDial() {       navigator.voice.tt(function success(res){},function error(e){},[1])   }    </script>    <body>        <div class="app">            <p><a href="#" onclick="goDial(); return false;">Show Alert</a></p>        </div>        <script type="text/javascript" src="cordova.js"></script>        <script type="text/javascript" src="js/index.js"></script>    </body>
0 0