扫描设备失败android BLE

时间:2016-01-28 19:12:14

标签: android bluetooth-lowenergy

我正在尝试通过BLE编写一个Android应用程序,这是一个聊天应用程序。

<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

我在log cat中收到了该消息,而在扫描设备时没有触发onLeScan()方法。

D/BluetoothAdapter: startLeScan(): null

D/BluetoothAdapter:onClientRegistered() - status=0 clientIf=5

D/BluetoothAdapter: stopLeScan()

我的扫描设备代码是

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() {
                            Toast.makeText(MainActivity.this, device.getName(), Toast.LENGTH_SHORT)
                                    .show();
                        }
                    });
                }
            };

private void scanLeDevice(final boolean enable) {
        if (enable) {
            // Stops scanning after a pre-defined scan period.
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mScanning = false;
                    mBluetoothAdapter.stopLeScan(mLeScanCallback);
                    invalidateOptionsMenu();
                }
            }, SCAN_PERIOD);

            mScanning = true;
            mBluetoothAdapter.startLeScan(mLeScanCallback);
        } else {
            mScanning = false;
            mBluetoothAdapter.stopLeScan(mLeScanCallback);
        }
    }

当我检查我的设备规格时,它们仅支持buletooth智能,而不支持外设模式。我的问题是,是否有可能在没有支持外围模式的情况下相互连接BLE支持的移动电话?或者我的代码有问题吗?

修改

我有3个测试设备,分别是带有android 4.3的华为730,带有android 4.4.2的Samsung galaxy core 2和带有android 6.0.1的Android。我的问题发生在所有人身上。我也用BLEScanner进行测试,但没有检测到我的所有设备。另外,我无法通过运行来自android sdk的示例项目BluetoothLeGatt来检测我的所有设备。

1 个答案:

答案 0 :(得分:1)

我找到了答案。这是因为在棒棒糖前装置中不支持外围模式。你的一个充当外围设备的手机必须拥有Android 5.0(Lollipop)及以上版本才能宣传其存在,创建GATTServer并让另一部手机作为中心/客户端连接它。

Make communication between 2 android phones over BLE

https://developer.android.com/about/versions/android-5.0.html#BluetoothBroadcasting

修改

由于硬件要求,即使是一些棒棒糖及以上手机也不支持外围设备模式。

希望它对你有用。