Android 不打电话

Android 不打电话,android,bluetooth-lowenergy,Android,Bluetooth Lowenergy,我打电话给我唯一的扫描仪有困难。我在开始扫描中放置了一个标签,每次都会调用它。由于某种原因,我唯一的朋友从来没有被打过电话。有人认为我所做的有问题吗?onLeScan应该在startedscan之后立即调用,对吗 private void startScan() { Log.i(TAG, "Starting Scan"); mBluetoothAdapter.startLeScan(this); setProgressBarIndeterminateVi

我打电话给我唯一的扫描仪有困难。我在开始扫描中放置了一个标签,每次都会调用它。由于某种原因,我唯一的朋友从来没有被打过电话。有人认为我所做的有问题吗?onLeScan应该在startedscan之后立即调用,对吗

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值。可能吗?