Android 设备上的 PhoneGap 蓝牙插件

Posted

技术标签:

【中文标题】Android 设备上的 PhoneGap 蓝牙插件【英文标题】:PhoneGap Bluetooth Plugin on Android device 【发布时间】:2013-11-28 06:20:42 【问题描述】:

我一直在尝试为 PhoneGap 工作的蓝牙插件,但我似乎无法弄清楚我哪里出错了。首先,我的测试设备是 Galaxy S3 (GT-19305T),应用程序是使用 PhoneGap CLI 构建的。

可以在here 找到我尝试使用的插件,并以here 为例。

我尝试了这个例子,它似乎并没有真正做任何事情。

然后我开始了基础,并尝试使用带有 PhoneGap 给出的示例的插件。我可以很容易地让所有这些工作。在我的示例中,我使用的是基本设备信息插件。

下面是一些示例代码:

Javascript:

<script type="text/javascript" charset="utf-8">
    // Wait for device API libraries to load
    document.addEventListener("deviceready", onDeviceReady, false);
    // device APIs are available
    function onDeviceReady() 
        var element = document.getElementById('deviceProperties');
        element.innerhtml = 'Device Model: '    + device.model    + '<br />' +
                            'Device Cordova: '  + device.cordova  + '<br />' +
                            'Device Platform: ' + device.platform + '<br />' +
                            'Device UUID: '     + device.uuid     + '<br />' +
                            'Device Version: '  + device.version  + '<br />';
        var btstatus = document.getElementById('status');
        btstatus.innerHTML = "Getting bluetooth information";

        window.bluetooth.isEnabled(isEnabledSuccess, isEnabledError);
    

    function checkBluetoothStatus() 
        var btstatus = document.getElementById('status');
        btstatus.innerHTML = "Checking bluetooth information";
        window.bluetooth.isEnabled(isEnabledSuccess, isEnabledError);
    

    function isEnabledSuccess(isEnabled)
       var btstatus = document.getElementById('status');
       if(isEnabled)
         btstatus.innerHTML = "Enabled";
       else
         btstatus.innerHTML = "Disabled";
       
    

    function isEnabledError(error)
       var btstatus = document.getElementById('status');
       btstatus.innerHTML = "Cannot determine Bluetooth status: " + error.message;
    

    function enableBluetooth()
        var btstatus = document.getElementById('status');
        btstatus.innerHTML = "Attempting to turn bluetooth on";
        window.bluetooth.enable(bluetoothTestSucces, bluetoothTestFail);
    
</script>

HTML:

  <body>
    <p id="deviceProperties">Loading device properties...</p>
    <br />
    <button onclick="enableBluetooth();">Enable Bluetooth</button>
    <br />
    <button onclick="checkBluetoothStatus();">Check Bluetooth Status</button>
    <br />
    <p id="status">Loading bluetooth information...</p>
  </body>

所以基本上我试图让插件返回当前的蓝牙连接信息,或者在点击“启用蓝牙”按钮时启用蓝牙。

不幸的是,到目前为止没有任何效果,正如我之前所说,我不确定我哪里出错了。

我尝试过手动应用它并使用 CLI。

【问题讨论】:

只是为了确保在尝试解决之前,您是否设置了:androidManifest.xml 中? 是的,当我尝试在 eclipse 中手动添加它时,我确实这样做了,在使用 CLI 时也是自动完成的。 【参考方案1】:

我最近对相同的示例进行了试验,并且能够使其正常工作。然而,主要区别在于我使用了 Cordova CLI

注意:您需要安装:Apache ANT、JAVA、Android SDK、GIT 命令行工具。前三个也需要在您的环境路径中正确设置。

这些是我执行的步骤:

    下载 Node.JS(然后运行命令提示符) npm install -g cordova npm install -g coffee-script cd C:\ cordova create bluetooth com.example.bluetooth bluetooth cd bluetooth cordova platform add android cordova plugin add https://github.com/tanelih/phonegap-bluetooth-plugin.git 下载this 使用coffee --compile main.coffeemain.coffee 转换为main.js 下载库文件(jQuery、bootstrap、下划线、主干)并将它们放在正确的目录中 将所有示例文档放在正确的目录中,并编辑索引以使用&lt;script src="cordova.js"&gt; 而不是&lt;script src="phonegap.js"&gt; cordova build android

【讨论】:

谢谢,这对我有用。这些是您如何构建 apk 的非常详细的步骤,我使用 phonegap CLI 遵循了非常相似的步骤,但我不太确定为什么我的不工作。我能看到的唯一真正的区别是您编辑 phonegap.js 包含到 cordova.js 的部分 这里也有一些问题。我设法做所有事情,直到建造这该死的东西。一旦我将apk文件放在手机上并安装它,就没有boostrap布局,一切都被禁用,无法点击任何按钮。有什么想法吗? @Stargazer 我认为一切都被禁用的原因是因为按钮默认设置为禁用。它们仅在一切正常后才启用。似乎某些地方无法正常工作,因此按钮未启用。您可以尝试手动从按钮中删除禁用,但我认为这不会有帮助,因为问题仍然存在。 @Yorimitsu,我确实设法让它发挥作用。我正打算来这里说明这一点。事实上,这与我的应用程序上的插件未正确配置为“plugman 友好”插件以及 CDN 的其他一些问题有关。现在我正在努力用它来读取二进制数据……但那是另一回事了。 @Stargazer 我和你有同样的问题(按钮被禁用)。你能告诉我你是怎么解决你的问题的吗?我是移动编程新手,任何有关此的链接都会非常有用。【参考方案2】:

也许this的文章能帮上忙?与您的问题相比,这是与其他特定的蓝牙连接更多,但也许它可以提供帮助。我过去使用过它,它与 PhoneGap 3.0 配合得很好,唯一的缺点是 BlackBerry 不再兼容。

【讨论】:

这个例子是我使用的。这是在我的问题开始时说明的。

以上是关于Android 设备上的 PhoneGap 蓝牙插件的主要内容,如果未能解决你的问题,请参考以下文章

降低 Android 设备上的蓝牙信号强度

phoneGap蓝牙设备链接打印操作插件

Cordova / Phonegap 设备到设备文件传输

Android 6.0 上的低功耗蓝牙 startScan 找不到设备

在 Phonegap 中获取蓝牙输入

Android上的BLE(蓝牙低功耗蓝牙),创建并重新连接到并不总是存在的设备