我无法继续访问 var mBleWrapper:BleWrapper? = null 在其他活动中。有一个名为BleWrapperUiCallbacks的预定义Java接口,我怀疑它包含我需要的功能和Java-Class BleWrapper。
我尝试了Kotlin伴侣Object,它取代了Java单例,但是我必须将初始化的BleWrapper设置为伴随对象,这实际上是不可能的,因为BleWrapper是如此实例化的:
class BLEActivity : AppCompatActivity() {
companion object {
var mBleWrapper: BleWrapper? = null
//Do something to instantiate the BleWrapper and return the instantiated BleWrapper
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.ble_layout)
initializeBLEWrapper()
val ble_on = findViewById<FloatingActionButton>(R.id.ble_on)
ble_on.setOnClickListener {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
gatt = mBleWrapper?.getGatt()!!
c = gatt.getService(NORDIC_UART).getCharacteristic(NORDIC_UART_TX)
val testVal = "a"
val bytes = testVal.toByteArray()
mBleWrapper?.writeDataToCharacteristic(c, bytes)
}
}
private fun initializeBLEWrapper() {
mBleWrapper = BleWrapper(this, object : BleWrapperUiCallbacks.Null() {
override fun uiDeviceFound(
device: BluetoothDevice,
rssi: Int,
record: ByteArray) {
if (device.getName() != null) {
if (device.getName().equals("Adafruit Bluefruit LE") == true) {
var status = mBleWrapper!!.connect(device.getAddress().toString())
if (status == false) {
Log.d("DEBUG", "uiDeviceFound: Connection problem!")
} else {
Log.d("DEBUG", "Connected")
ble_on.isClickable = true
}
}
}
}
}
}
这个“这个”指的是当前的活动。关于Singleton,Java的解决方法是什么?!没有这个实例化,BleWrapper当然总是为null。 在孔时间内连接到ble设备。这是logcat: BluetoothGatt:readRssi() 我需要调用的服务也显示在logcat中......
有人能帮助我吗?我有点绝望。 我也找到了这个:Passing an object instance between two activities in Kotlin