android - 尝试查找 BLE 设备时如何使用 LeScanCallback?

标签 android bluetooth-lowenergy

我正在开发一个 Android 应用程序,我希望它能找到并列出 BLE 设备。

这里没有太多主题,我不明白。我试过使用

startLeScan(BluetoothAdapter.LeScanCallback callback);

但是 Eclipse 说 LeScanCallback 无法解析或者不是一个字段(我对 BluetoothManager 和 LeDeviceListAdapter 有同样的问题)。我拥有所有 BT 权限、导入的 BluetoothGatt、BluetoothGattCallback 并将 Samsung SDK jar 文件放在正确的位置。我错过了什么?

我已经使用了来自 Android 开发者页面的这个代码建议(只是我代码的一部分),但我无法让它工作:

public class DeviceScanActivity extends ListActivity {

// Stops scanning after 10 seconds.
private static final long SCAN_PERIOD = 10000;
public boolean scanning;
public BluetoothAdapter aBTAdapter;
public Handler aHandler;

//------------------------------------------------

private void scanLeDevice(final boolean enable) {

    if (enable) {
        // Stops scanning after a pre-defined scan period.
        aHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                scanning = false;
                aBTAdapter.stopLeScan(mLeScanCallback);
            }
        }, SCAN_PERIOD);

        scanning = true;

        aBTAdapter.startLeScan(mLeScanCallback);

    } else {
        scanning = false;
        aBTAdapter.stopLeScan(mLeScanCallback);
    }
};
//------------------------------------------

我需要做什么才能让 Eclipse 识别 BluetoothManager、LeDeviceListAdapter 和 LeScanCallback? 如何引入 mLeScanCallback 变量?

任何帮助将不胜感激!我是编程新手,所以请给出教学答案。


编辑:

我已经尝试过这段代码来声明回调,但它不起作用,给我和上面提到的相同的错误(BluetoothAdapter.LeScanCallback 无法解析或不是一个字段):

private LeDeviceListAdapter mLeDeviceListAdapter;

// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback =
        new BluetoothAdapter.LeScanCallback() {
    @Override
    public void onLeScan(final BluetoothDevice device, int rssi,
            byte[] scanRecord) {
        runOnUiThread(new Runnable() {
           @Override
           public void run() {
               mLeDeviceListAdapter.addDevice(device);
               mLeDeviceListAdapter.notifyDataSetChanged();
           }
       });
   }
};

另外,错误 --> 无法运行 --> 没有日志

最佳答案

Bluetooth SIG 有一个适用于 BLE 的应用程序加速器套件,其中包括适用于 Android 的完整工作代码。入门的好资源,免费下载 https://developer.bluetooth.org/Pages/Bluetooth-Smart-Developers.aspx

关于android - 尝试查找 BLE 设备时如何使用 LeScanCallback?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18957633/

相关文章:

使用 google-rfc-2445 库的 java.text.parse 异常

android - 如何在 Android 手机上使用 WebRTC 保持高清分辨率

android - SENSOR_TYPE_GRAVITY获取其数据的工作机制是什么? - 安卓

android - 以编程方式切换 WIFI radio

java - Android - 编写自定义(复合)组件

ios - 在 iOS Swift 中写入 BLE 接收器

javascript - 我一直在通过分析广告数据来确定 BLE 设备是否可连接。这是我的代码示例和学习指南

android - 使用基于广告服务 UUID 的扫描过滤器扫描 BLE 外围设备

android - android系统如何自动连接到配对设备?

java - 无法写入 BLE GattCharacteristic