gpt4 book ai didi

android - 如何将消息从另一个 Activity 传递到蓝牙 Activity

转载 作者:行者123 更新时间:2023-11-30 01:39:36 26 4
gpt4 key购买 nike



我构建了一个控制 RC 汽车的 Android 应用程序。这个应用程序有两个 Activity ,蓝牙 Activity 和方向 Activity 。

在蓝牙 Activity 中,我使用 ListView 列出所有设备并与一个连接。我使用了Android提供的两个类"ConnectThread" and "ConnectedThread" .我的主要工作是只将角色发送到遥控车上移动。该角色由使用加速度传感器生成角色的方向 Activity 生成。

问题:

1.如何从Direction Activity发送字符到Bluetooth Activity?
2. Bluetooth Activity收到字符后如何通过蓝牙连接发送?
3. 我需要“ConnectThread”和“ConnectedThread”这两个类来连接和发送还是只需要其中一个?

附言。我是初学者,我尝试过很多东西,比如 intent、shared Preference 和 Bundle。但是每次我尝试都会发生错误。

最佳答案

好吧,让我们暂时简单点。

正如@Zimano 评论所述:

  1. 您可以像您尝试的那样使用intents来共享基本数据(Strings, ints, floats, bytes) 在你的 Activity 之间,也就是在 Android 中最常见的方式。更多详情:https://stackoverflow.com/a/19287072/3535408
  2. 如果您需要通过蓝牙连接发送数据,您必须如果您实现了 Google 的,则可以访问 ConnectedThread解决方案。但如果你是初学者,你会说你是(但事实并非如此问题或错误)请注意Android Activity 有一个 lifecycle .这基本上意味着在某个时候一个 Activity 是创建开始停止并最终完全销毁。因此,如果您在 Activity 中启动了Connection 和 Connected threads而你切换到另一个Activity,那里又高又不可避免作为启动的 Activity ,这些线程将被杀死的风险它们正在被摧毁以释放资源(非常重要Android 生态系统)。

两种解决方案。一种简单但不推荐,一种有点复杂但属于 Android SDK 和策略的一部分。

  1. 静态上下文或
  2. 服务;

在第一种情况下,将所有与蓝牙相关的代码移到 Activity 之外的另一个类中。将它放在静态上下文中,以便它可以在应用程序中的任何地方使用(这就是为什么它是一个非常糟糕的设计模式,但却是一个有效的设计模式......)。然后你可以随处访问你的蓝牙线程,你可以使用 write 方法发送数据;

在第二种情况下,将相同的代码移动到服务中。服务是 Android SDK 的一部分,是您实现目标的必经之路。但是有绑定(bind)到一个Activity。根据我的经验,我没有处理很多服务,所以我不确定您是否可以随意绑定(bind)/取消绑定(bind) Android 服务,而无需在 Activity 之间切换时单独停止蓝牙线程。更多详情:http://developer.android.com/intl/es/guide/components/services.html

无论如何,我希望我提供了足够的解释,以便您可以解决您的问题。如果您有任何问题,我会尽力回答。

关于android - 如何将消息从另一个 Activity 传递到蓝牙 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34675055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com