Phonegap蓝牙插件无法正常工作

时间:2013-10-23 09:41:35

标签: javascript android cordova bluetooth

这是第一次发布海报,所以如果这个问题不正确或者有任何问题我很抱歉。

我正在开发一个phonegap应用程序,我需要能够在平板电脑(本例中为android)和Win CE PC之间建立蓝牙连接。 目前我正试图让蓝牙部分在平板电脑上工作,我正在使用你可以在https://github.com/tanelih/phonegap-bluetooth-plugin找到的插件 对于momemt,我只是想在设备上启用和禁用蓝牙。

在我的bluetoothpage.js文件中,我使用以下方法

window.bluetooth.prototype.enable(bluetoothTestSucces(),bluetoothTestFail());

bluetoothTestSucces和bluetoothTestFail功能只显示警报,没有别的。 如果我理解正确使用phonegap插件,这将在我的bluetooth.js文件中使用以下代码

Bluetooth.prototype.enable = function(onSuccess,onError)

{
    exec(onSuccess, onError, "Bluetooth", "enable", []);
}

调用

private void enable(JSONArray args,CallbackContext callbackCtx)

{       
    try
    {
        _bluetooth.enable();
        callbackCtx.success();
    }
    catch(Exception e)
    {
        this.error(callbackCtx, e.getMessage(), BluetoothError.ERR_UNKNOWN);
    }
}

在我的BluetoothPlugin.java文件中。

如果java文件返回Succes,则使用bluetoothTestSucces(),如果java文件返回错误,则使用bluetoothTestFail()。

但由于某些原因,它会同时运行并且不会在我的设备上打开蓝牙。 我几乎可以肯定我已经忘记了某个文件的链接或者在某个地方将它链接错了。 但我已按照插件中包含的说明进行操作。

我在我的AndoridManifest文件中包含了蓝牙权限,该文件位于我的应用程序的根目录中

我已将插件包含在我的config.xml文件中,该文件位于res / xml

我在deviceready事件之后需要插件,如下所示

document.addEventListener(“deviceready”,onDeviceReady,false);

function onDeviceReady() {

window.bluetooth = cordova.require("cordova/plugin/bluetooth");

}

有谁能告诉我如何解决这个问题或者我做错了什么?

更新1

最后能够使用eclipse做一些调试之后 我收到以下错误:未捕获的TypeError:无法调用未定义的方法'enable'。

更新2

我认为我调用的方法不对,应该是window.bluetooth.enable而不是window.bluetooth.prototype.enable。 现在我收到以下错误;

“Bluetooth binder为null”,标签为“BluetoothAdapter”

此外,当我在模拟器上运行它时,它只显示bluetoothTestFail()函数(它应该是这样)但是当我在设备上运行时没有任何反应,没有调用函数,也没有打开/关闭蓝牙< / p>

更新3

我已经通过eclipse运行我的项目作为我的设备上的应用程序,现在它工作正常,没有问题。 但是当我使用phonegap将其转换为应用程序时,它不再起作用了。

感谢

马亭

PS:对于任何语言错误,我很抱歉,英语不是我的母语。

编辑:忘记包含一些代码

1 个答案:

答案 0 :(得分:0)

您似乎是通过prototype调用该方法。如果您查看包含的bluetooth.js文件,您将找到包含以下内容的行:

var bluetooth = new Bluetooth();
module.exports = bluetooth;

这基本上意味着插件“导出”Bluetooth的实例,您可以从中直接调用方法。

在你的帖子中,你说你也正在传递回调:

window.bluetooth.prototype.enable(bluetoothTestSucces(),bluetoothTestFail());

这意味着正在调用bluetoothTestSuccesbluetoothTestFail函数,而是传入它们的返回值。

尝试调用这样的方法,看看它是否有效。

window.bluetooth.enable(bluetoothTestSucces, bluetoothTestFail);

希望这有帮助!

修改

很高兴听到你至少在某种程度上让它发挥作用。

我不确定您使用PhoneGap将其转换为应用是什么意思?我自己只是通过eclipse运行Android项目,所以我不确定是什么导致了问题。

您可以尝试使用console.logbluetooth.js文件添加一些基本调试,以查看是否正在调用插件方法。您也可以对Java文件执行相同操作,以查看是否可以帮助您追踪罪魁祸首。

希望你能让它发挥作用。