BluetoothLeScanner.startScan(scanCallback) не возвращает нольAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 BluetoothLeScanner.startScan(scanCallback) не возвращает ноль

Сообщение Гость »


Я пытаюсь подключить свой телефон к устройству Bluetooth. Я использую андроид 13. В моем файле scandevices я обнаружил проблему в этой строке bluetoothLeScaner.startScan(scanCallback). Я получаю исключение IllegalArgumentException: обратный вызов имеет значение null.
Menifest.xml build.gradle:

Код: Выделить всё

android {
namespace 'com.example.sensor'
compileSdk 34

kotlinOptions {
jvmTarget = '17'
}

defaultConfig {
applicationId "com.example.sensor"
minSdk 31
targetSdk 33 //33
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
}
трассировка стека

Код: Выделить всё

2024-03-12 13:36:00.288 25335-25335 PERMISSIONS             com.example.sensor                   D  Permission already granted: android.permission.BLUETOOTH
2024-03-12 13:36:00.289 25335-25335 PERMISSIONS             com.example.sensor                   D  Permission already granted: android.permission.BLUETOOTH_CONNECT
2024-03-12 13:36:00.290 25335-25335 PERMISSIONS             com.example.sensor                   D  Permission already granted: android.permission.ACCESS_COARSE_LOCATION
2024-03-12 13:36:00.290 25335-25335 PERMISSIONS             com.example.sensor                   D  Permission already granted: android.permission.ACCESS_FINE_LOCATION
2024-03-12 13:36:00.292 25335-25335 PERMISSIONS             com.example.sensor                   D  Permission already granted: android.permission.BLUETOOTH_ADMIN
2024-03-12 13:36:00.293 25335-25335 PERMISSIONS             com.example.sensor                   D  Permission already granted: android.permission.BLUETOOTH_SCAN
2024-03-12 13:36:00.294 25335-25335 PERMISSIONS             com.example.sensor                   D  Permission already granted: android.permission.BLUETOOTH_ADVERTISE
2024-03-12 13:36:00.294 25335-25335 PERMISSIONS             com.example.sensor                   D  All permissions are already granted

2024-03-12 13:36:00.299 25335-25335 BluetoothAdapter        com.example.sensor                   I  STATE_ON
2024-03-12 13:36:00.300 25335-25335 AndroidRuntime          com.example.sensor                   D  Shutting down VM
2024-03-12 13:36:00.304 25335-25335 AndroidRuntime          com.example.sensor                   E  FATAL EXCEPTION: main
Process: com.example.sensor, PID: 25335
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sensor/com.example.sensor.MainActivity}: java.lang.IllegalArgumentException:  callback is null
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4169)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4325)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2574)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8779)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: java.lang.IllegalArgumentException:  callback is null
at android.bluetooth.le.BluetoothLeScanner.startScan(BluetoothLeScanner.java:136)
at com.example.sensor.data.ble.ScanDevices.run(ScanDevices.kt:40)
at com.example.sensor.data.ble.ScanDevices.(ScanDevices.kt:35)
at com.example.sensor.MainActivity.onCreate(MainActivity.kt:62)
at android.app.Activity.performCreate(Activity.java:8591)
at android.app.Activity.performCreate(Activity.java:8570)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1384)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4150)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4325) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2574) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loopOnce(Looper.java:226) 
at android.os.Looper.loop(Looper.java:313) 
at android.app.ActivityThread.main(ActivityThread.java:8779) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) 
2024-03-12 13:36:00.334 25335-25335 Process                 com.example.sensor                   I  Sending signal.  PID: 25335 SIG: 9
scandevice.kt

Код: Выделить всё

@SuppressLint("MissingPermission")

class ScanDevices(
var bluetoothAdapter: BluetoothAdapter,
val context: Context

):Thread() {
val DEVICE_NAME = "WHEELSERV"
private var isScanning = false
private var bluetoothLeScaner = bluetoothAdapter.bluetoothLeScanner
private var device: BluetoothDevice? = null
private val latch = CountDownLatch(1);

init {
run()
}

override fun run() {
bluetoothLeScaner.startScan(scanCallback)
isScanning = true
latch.await()
val socket = device?.createL2capChannel(0)
try {
socket?.connect()
Log.d("CREATION", "yay connected ")
} catch (e: IOException) {
println("didnt connect to device")

}
}

val scanCallback = object : ScanCallback() {
override fun onScanResult(
callbackType: Int,
result: ScanResult
) {
super.onScanResult(callbackType, result)
if (result.device.name == DEVICE_NAME) {//filter
if (isScanning) {
isScanning = false
//bluetoothLeScaner.stopScan(scanCallback)
bluetoothAdapter.cancelDiscovery()
device = result.device
latch.countDown()
}
}
}

}
}
When debugging the code, I can see that bluetoothLeScanner is non-null. So then, I thought maybe it is an issue with permissions, so I tested it out in my MainActivity.kt. As you can see on the stack-trace and xml file, all permissions are setup, requested, and granted. I ran out of ideas on what the issue might be and would appreciate some advice on what I should test next.


Источник: https://stackoverflow.com/questions/781 ... rning-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»