phonegap蓝牙插件
最近,我受命在PhoneGap中开发利用蓝牙功能的移动应用程序。 尽管PhoneGap提供了基本功能,但是PhoneGap缺乏实现蓝牙等移动功能的能力。 但是,它提供了实现用户定义的插件的机制以及访问PhoneGap应用程序中本机功能的方法。 在此博客中,我将概述实现PhoneGap插件以利用本机移动功能的步骤。
在我之前的博客“ Android,iOS和Windows Mobile…哦,我:PhoneGap简介 ”中,我总结了基本功能。 如果您尚未审核该帖子,我建议您进行审核。
实施插件
要实现插件,您需要实现一个JavaScript接口,该接口允许通过PhoneGap应用程序中HTML页面访问这些功能。 插件接口必须以本地语言实现。
JavaScript界面中使用cordova.exec函数通过用户定义的本机插件访问本机功能。 我概述了功能和参数的格式和说明,以供参考:
cordova.exec(success, failure, "NativePluginName", "start", [Arg]);
参数:
- “成功” –成功完成本机调用后将调用的函数。
- “失败” –将在本机插件发生错误时调用该函数调用,并根据插件实现传递消息。
- “ NativePluginName” –在本机端要调用的服务类。 通常,它将是本机插件的类名。
- “开始” –在本机插件上要调用的操作。 通常,它是方法名称。 但是,可以根据本机插件中使用的操作名称使用其他操作名称(下面提供了说明)。
- “ [Arg]” –最后一个参数允许在本机插件实现中传递方法的参数数组。
确保在HTML网页中包含JavaScript界面以访问JavaScript界面功能。
<script type="text/JavaScript" src="js/JavaScriptplugininterface.js"></script>
在上面的语句中, JavaScriptplugininterface是JavaScript接口名称的名称。 通常,它类似于本机插件。
用户定义的本机插件
对于用户定义的本机插件,我将讨论利用Java的Android插件。
要实现本机插件接口,您的类需要扩展到“ CordovaPlugin”。 Android使用意图在进程之间进行通信。 Cordova插件提供对Cordova对象的访问,通过它您可以访问当前活动和上下文。 使用上下文,您可以创建新的意图并从插件中启动它或在上下文中执行功能。 要访问插件中应用程序的当前活动和上下文,可以使用:
this.cordova.getActivity() and this.cordova.getActivity().getBaseContext() respectively.
为了使Cordova能够找到插件,必须在res / xml / config.xml中对其进行声明。
<feature name="NativePluginName">
<param name="android-package" value="com.keyhole.cordova.NativePluginName" />
</feature>
功能的名称是在JavaScript中用于调用服务的服务名称。 参数值是服务类的完整路径(包括名称空间)。 不要更改参数名称=“ android-package” 。 如果您未包含此插件,则将编译应用程序,但Cordova将无法找到该插件。
最后,JavaScript的cordova.exec函数将与参数一起传递到插件的execute方法。 参数动作是从JavaScript传递过来的,可以按照以下方式进行匹配以实现该功能。 同样,在JavaScript中传递的参数在Cordova参数中可用。
@Override
public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException {
boolean validAction = true;
Log.d("Plugin executing action:",action);
if (action.equals("start")) {
theCallbackContext = callbackContext;
// Do work
} else {
validAction = false;
}
return validAction;
}
结论
使用PhoneGap的主要好处是您可以使用HTML,jQuery,JavaScript开发应用程序,而无需熟悉多种移动本机语言。 但是要实现PhoneGap中尚未提供的功能(如蓝牙),需要实现一个插件以提供对本机功能的访问。 插件的实现需要使用特定的移动母语构建的接口。 不幸的是,必须使用特定的移动母语进行编码会削弱PhoneGap的主要优势之一。
如上所示,接口代码是用本地语言实现的很小一部分。 因此,使用PhoneGap可以减少本地语言所需的代码量。 因此,我仍然认为PhoneGap是为多个平台实现移动应用程序的不错选择。
有关PhoneGap的更多信息,请访问phonegap.com 。
翻译自: https://www.javacodegeeks.com/2013/11/phonegap-utilizing-native-mobile-features-with-plugins.html
phonegap蓝牙插件