Android 不打电话
我打电话给我唯一的扫描仪有困难。我在开始扫描中放置了一个标签,每次都会调用它。由于某种原因,我唯一的朋友从来没有被打过电话。有人认为我所做的有问题吗?onLeScan应该在startedscan之后立即调用,对吗Android 不打电话,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我打电话给我唯一的扫描仪有困难。我在开始扫描中放置了一个标签,每次都会调用它。由于某种原因,我唯一的朋友从来没有被打过电话。有人认为我所做的有问题吗?onLeScan应该在startedscan之后立即调用,对吗 private void startScan() { Log.i(TAG, "Starting Scan"); mBluetoothAdapter.startLeScan(this); setProgressBarIndeterminateVi
private void startScan() {
Log.i(TAG, "Starting Scan");
mBluetoothAdapter.startLeScan(this);
setProgressBarIndeterminateVisibility(true);
mHandler.postDelayed(mStopRunnable, 5000);
}
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
Log.i(TAG, "IN OnLeScan");
Log.i(TAG, "New LE Device: " + device.getName() + " @ " + rssi);
runOnUiThread(new Runnable() {
@Override
public void run(){
DeviceBeacon beacon = new DeviceBeacon(device.getName(), device.getAddress(), rssi);
mHandler.sendMessage(Message.obtain(null, 0, beacon));
}
});
}
编辑更改了我的onLeScan功能。仍然没有工作,但我认为我正在走向正确的道路。DeviceBeacon是一个只包含以下方法的类:getName()、getSignal()和getAddress()
编辑2我不确定我的错误在哪里。我有2个nexus 7,我有蓝牙和bluetooth_管理权限以及额外的线路,以确保我只搜索bluetoothLE设备。startescan返回true。只是在该地区找不到任何设备。为什么会这样?我甚至将这两个设备的可见性都设置为true
如果您想查看一些代码,请编辑3Git repo。
编辑4我的日志目录:
01-12 01:18:59.728: I/BluetoothTouch(14510): Starting Scan
01-12 01:18:59.728: D/BluetoothAdapter(14510): startLeScan(): null
01-12 01:18:59.738: D/BluetoothAdapter(14510): onClientRegistered() - status=0 clientIf=5
01-12 01:19:04.763: I/BluetoothTouch(14510): Stoping Scan
01-12 01:19:04.763: D/BluetoothAdapter(14510): stopLeScan()
使您的两台设备都可以通过蓝牙进行检测。您需要在AndroidManifest.xml中同时拥有这两个权限才能扫描设备:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
Bluetooth在两台设备上都已打开,并且我在两台设备上的可见性都设置为打开。使用BluetoothDevice.StartScan()时,这是否会使它自己调用BluetoothDevice.startDiscovery()?我最终没有使用LeScan。我并不需要它,但让这两个设备都能被发现是至关重要的。我最终只使用了RSSI值,而没有使用LeScan。Play Store中有很多应用程序可以帮助开发BLE应用程序。您可以使用它们来验证是否可以扫描/连接到外围设备。它们都是可扩展设备,我已经能够扫描它们并在其他应用程序上获取它们的rssi值。我正在尝试开发一个可以执行此操作的应用程序。第一次,您的日志猫正好显示消息startedscan():null
。下一次,它将准确地扫描设备。确保您正在扫描外围设备,而不是移动设备。但我不想扫描外围设备。我想扫描移动设备以获取其rssi值。可能吗?