2

第一次在这里发帖,所以如果这个问题被问到不正确或有任何问题,我很抱歉。

我正在开发一个 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", []);
}

调用

私人无效启用(JSONArray args,CallbackContext callbackCtx)

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

在我的 BluetoothPlugin.java 文件中。

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

但由于某种原因,它同时运行并且没有在我的设备上打开蓝牙。我几乎可以肯定我忘记了文件的链接或在某处链接错误。但我已按照插件中包含的说明进行操作。

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

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

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

document.addEventListener("deviceready", onDeviceReady, false);

函数 onDeviceReady() {

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

}

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

更新 1

在最终能够使用 eclipse 进行一些调试之后,我得到了以下错误: Uncaught TypeError: Cannot call method 'enable' of undefined.

更新 2

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

带有标签“BluetoothAdapter”的“蓝牙绑定器为空”

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

更新 3

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

谢谢

马汀

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

编辑:忘记包含一些代码

4

1 回答 1

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 文件执行相同的操作,以查看是否可以帮助您找到罪魁祸首。

希望你让它工作。

于 2013-10-25T08:19:21.137 回答