蓝牙低功耗扫描失败

3

我目前正在开发一个将使用蓝牙低功耗的应用程序。

我正在使用以下链接,

http://developer.android.com/samples/BluetoothLeGatt/src/com.example.android.bluetoothlegatt/DeviceScanActivity.html

我无法扫描周围的BLE设备。

要扫描设备,

mBluetoothAdapter.startLeScan(mLeScanCallback); 

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();

                }
            });
        }
    };

这可能是一个愚蠢的问题,但是BTAdapter是否已启用?mBluetoothAdapter.isEnabled()并且它是否支持低功耗蓝牙?getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)?你的设备是否支持低功耗蓝牙? - benka
1
是的,我已经检查过了!! 我正在使用MOTO E手机,具有KITKAT Android和BLE-4版本,完全支持。而且我的BT适配器已启用,并且支持低功耗蓝牙。 - Rajat kumar
你尝试从Google Play下载其他BLE扫描器并扫描您的设备了吗?您想要扫描什么?抱歉,在我能提供帮助之前,我们需要排除代码以外的其他问题...因为我发布的示例对任何人都有效...还可以尝试在另一台支持BLE的设备上运行该代码... - kodartcha
Margabr- 实际上,我正在扫描支持Ble的CSR8670套件。早些时候它处于中央模式,所以无法检测到我的套件,但现在当我将我的套件设置为外围模式时,我的Android设备能够扫描到我的设备。但我仍然面临的问题是,Android API显示已连接到套件,即使未连接。 - Rajat kumar
2个回答

1

我也遇到了同样的问题,请在您的清单文件中添加这些权限。

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

谢谢您的回复,但是Tom,我已经添加了这些权限,但仍然存在问题。您能否通过您的代码扫描周围的BLE设备? - Rajat kumar
是的,我能够找到BLE设备。请使用这个例子。https://developer.android.com/samples/BluetoothLeGatt/src/com.example.android.bluetoothlegatt/DeviceScanActivity.html - Tom Dev
这是我在这里发布并关注的链接,但并没有发现有价值的东西。 - Rajat kumar
哦,抱歉。请发送您的DeviceScanActivity + Manifest给我。 - Tom Dev
1
嗨Khanna,你找到解决方案了吗?我也遇到了类似的问题,请帮忙。 - Rizwan Sohaib
显示剩余2条评论

0
如果您使用的是23 API或更高版本: 您必须添加位置权限。
这些都是清单中的权限:
  <uses-feature
    android:name="android.hardware.bluetooth_le"
    android:required="true" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接