调用父活动方法 - BLE

时间:2014-09-24 12:01:46

标签: android callback delegates bluetooth-lowenergy

我之前曾使用iOS和Bluetoot Low Energy,现在我需要这个才能在android上工作。 使用iOS时,会出现委托方法等内容。我在一个视图上更改了BLE特征的值,并将更新的值传递给已建立连接的上一个视图。然后,该视图立即将新值传递给BLE外围。

伪代码:

[_delegate setDeviceDateTime:[NSDate now]];

问题是我无法用android找到这样的东西。父活动持有BluetoothGatt,它可以更新外围的值。我正在寻找以下内容:

伪代码当前视图:

getParent().setDeviceDateTime(new Date());

伪代码父视图:

public void setDeviceDateTime(Date date) {
    BluetoothGattCharacteristic myCharacteristic = getCharacteristic(dateTime);
    myCharacteristic.setValue(date);
    myGatt.writeCharacteristic(myCharacteristic);
}

似乎我的思维方式太过困难了,我似乎无法找到解决方案..

编辑:

好的,所以我需要访问父活动,当前活动仍处于活动状态,因此startActivityForResult()无效。

基本上我需要按下一个Button,将一个String传递给处理它的父活动,然后通过BLE将它传输到外设。并且在仍然(并保持)与外围设备连接的同时更改其他一些设置,而不会忽略"设置活动"。

1 个答案:

答案 0 :(得分:1)

您的用例并不完全清楚,但似乎您需要查看StartActivityForResult() 您可以使用startActivityForResult()执行第二个活动,因此当第二个活动完成后,它可以将信息传输回主要活动。

但是,如果您需要在第二个活动仍处于活动状态时通知主活动,则它将无效。在那种情况下,我会改变设计: 在Android中,活动是一个UI组件,一个屏幕。而Android并不是为了让屏幕“正常工作”(例如与BT通信),而不是在前台。

您需要某种可以从多个活动中访问的“全局”BT控制器。 两种方法(可能还有更多):

  1. 扩展Application类并在那里使用BT逻辑。
  2. 使用bound service并处理逻辑。
  3. 在这两种情况下,任何活动都可以访问应用程序/服务的方法,并且可以使用蓝牙,改变它的设置等。