列出BLE设备Android - Kotlin

时间:2018-06-18 13:09:36

标签: android kotlin bluetooth-lowenergy

我正试图在Android设备上列出所有BLE设备,使用Kotlin(Java版本也不能正常工作)但我没有得到任何设备或任何回叫,除了“扫描”已经开始“ 我在清单中有正确的使用权限。 这是当前最小的代码,我正在尝试。 但即使是Google的示例代码也列出了任何设备。 我在运行Android版本8.1.0的Pixel上运行。 我在iOS上工作,使用基本的BLE设备列表(Swift)!

MyInterceptor myInterceptor = new MyInterceptor(this.serverProcess.getInputStream());
InputStream serverInputStream = myInterceptor.getInterceptedInstance();

serverInputStream.methodOne();
serverInputStream.methodTwo();
serverInputStream.methodThree();

myInterceptor.printIntercepts();

1 个答案:

答案 0 :(得分:2)

您需要声明许可:

uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

对于具有android 6.0及更高版本的设备,您手动请求此权限:

  override fun onStart() {
        Log.d("ScanDeviceActivity", "onStart()")
        super.onStart()
        when (PermissionChecker.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)) {
            PackageManager.PERMISSION_GRANTED -> bluetoothLeScanner.startScan(bleScanner)
            else -> requestPermissions(arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), 1)
        }
    }


   override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        when (requestCode) {
            1 -> when (grantResults) {
                intArrayOf(PackageManager.PERMISSION_GRANTED) -> {
                    Log.d("ScanDevices", "onRequestPermissionsResult(PERMISSION_GRANTED)")
                    bluetoothLeScanner.startScan(bleScanner)
                }
                else -> {
                    Log.d("ScanDevices", "onRequestPermissionsResult(not PERMISSION_GRANTED)")
                }
            }
            else -> super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        }
    }