我正试图在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();
答案 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)
}
}