fun writeDataToMega() {
fixedRateTimer("default", false, 0L, 1000){
sendData()
if(itemsDispatched == itemsToDispatch){
disconnect()
var intent = Intent(this@ItemDispenseActivity, HomeBnActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
cancel()
finish()
}
}
}
private fun sendData() {
try {
if (mBluetoothSocket != null) {
outputStream = mBluetoothSocket!!.outputStream
var arr: ByteArray
when (receivedDataFromMega) {
48 -> {
sendDataToMega = "ai"
DataOutputStream(outputStream).writeBytes(sendDataToMega)
itemsDispatched += 1
Timer().schedule(object : TimerTask() {
override fun run() {
sendDataToMega = "12"
arr = byteArrayOf(sendDataToMega.toByte())
DataOutputStream(outputStream).write(arr)
cancel()
}
}, 15000)
}
46, 51 -> {
sendDataToMega = "02"
arr = byteArrayOf(sendDataToMega.toByte())
DataOutputStream(outputStream).write(arr)
}
else -> {
sendDataToMega = "12"
arr = byteArrayOf(sendDataToMega.toByte())
DataOutputStream(outputStream).write(arr)
}
}
inputStream = mBluetoothSocket!!.inputStream
receivedDataFromMega = DataInputStream(inputStream).read()
}
}catch ( e : IOException){
e.printStackTrace()
}
}
private fun disconnect() {
if (mBluetoothSocket != null) {
try {
mBluetoothSocket!!.close()
mBluetoothSocket = null
mIsConnected = false
} catch (e: Exception) {
e.printStackTrace()
}
}
}
Я пишу, считываю данные из модуля HC-05 с помощью Kotlin, после выдачи x элементов. Я хочу остановить обработку, отключиться от Bluetooth и перейти на домашнюю страницу пользователя, но приложение вылетает при использовании Intent вМетод fixedRateTimer.До логики выдачи предметов она работает нормально, но вылетает по Намерению.
Ошибка
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
at android.app.Activity.startActivityForResult(Activity.java:4091)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
at android.app.Activity.startActivityForResult(Activity.java:4038)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
at android.app.Activity.startActivity(Activity.java:4362)
at android.app.Activity.startActivity(Activity.java:4330)
at com.example.grabbit.bluetooth.ItemDispenseActivity$writeDataToMega$$inlined$fixedRateTimer$1.run(Timer.kt:154)
at java.util.Timer$TimerImpl.run(Timer.java:284)