【问题标题】:call parent activity methods - BLE调用父活动方法 - BLE
【发布时间】:2014-09-24 12:01:45
【问题描述】:

我以前使用过 iOS 和 Bluetoot Low Energy,现在我也需要在 android 上使用它。 在 iOS 中,有委托方法之类的东西。我在一个视图上更改了 BLE 特性的值,并将更新后的值传递给已建立连接的前一个视图。然后,此视图立即将新值传输到 BLE 外设。

伪代码:

[_delegate setDeviceDateTime:[NSDate now]];

问题是我在 android 上找不到这样的东西。父 Activity 持有 BluetoothGatt,它可以更新外设的值。我正在寻找类似以下的内容:

伪代码当前视图:

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

伪代码父视图:

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

我似乎太拘泥于我在 iOS 上所做的方式,我似乎找不到解决方案..

编辑:

好的,所以我需要在当前活动仍处于活动状态时访问父活动,所以 startActivityForResult() 将不起作用。

基本上我需要按下一个按钮,将一个字符串传输到处理它的父活动,然后通过 BLE 将它传输到外围设备。并在不关闭“设置活动”的情况下更改其他一些设置,同时仍然(并保持)与外围设备连接。

【问题讨论】:

    标签: android callback delegates bluetooth-lowenergy


    【解决方案1】:

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

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

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

    1. 扩展Application 类并在那里拥有您的BT 逻辑。
    2. 使用bound service 并处理那里的逻辑。

    在这两种情况下,任何活动都可以访问应用程序/服务的方法,并且能够使用蓝牙、更改其设置等。

    【讨论】:

    • 看我回复,我添加了另一种选择。
    • 谢谢,我想我会扩展应用程序类。似乎工作量少了一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2021-12-20
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多