gpt4 book ai didi

java - 如何在同步 Sphero 时保持蓝牙连接并且我使用多个 Activity

转载 作者:行者123 更新时间:2023-11-30 03:23:10 39 4
gpt4 key购买 nike

当我与 Sphero 同步并且我想从一个 Activity 传递到另一个 Activity 时,我的同步丢失了,我必须在新 Activity 中执行 onCreate 中的此方法以再次获得同步:

        **RobotProvider provider = RobotProvider.getDefaultProvider();
mRobot = provider.findRobot(robot_id);
provider.initiateConnection(robot_id);
provider.control(mRobot);
provider.connectControlledRobots();**

mRobot 有 Sphero 的 MAC 地址。但是我尝试它并不是每次都好,我想为所有应用程序保持蓝牙连接,因为我是第一次连接并且能够保持它而无需再次同步。

我看过 Sphero 的官方 Orbotix 应用程序,我认为它是完美的,因为同步是永久性的。你能用这种方式帮助我吗?

最佳答案

在 Orbotix,我们通常使用中央 Activity 并在其顶部显示临时 Activity ,或者(最近)我们使用 FragmentActivity首先显示一个负责连接的 fragment (您的问题中的同步)。从那里,我们使用不同的自定义 fragment 显示不同的屏幕。

如果您确实需要将一个 Robot 对象发送到另一个 Activity,您可以将机器人 id 添加到 Intent 中,然后在新的 Activity 中从 RobotProvider 获取机器人对象。这还要求您确保不会根据原始 Activity 的生命周期断开与 Sphero 的连接。

在您的原始 Activity 中:

    private void startNextActivity() {
Intent nextActivity = new Intent(this, NextActivity.class);
nextActivity.putExtra("robot.id", mRobot.getUniqueId());
goingToNextActivity = true;
startActivity(nextActivity);
}

@Override
protected void onStop() {
super.onStop();

// don't disconnect if headed to "NextActivity"
if (!goingToNextActivity) {
RobotProvider.getDefaultProvider().disconnect(mRobot);
mRobot = null;
}
}

在您的新 Activity 中:

    @Override
public void onCreate(Bundle savedInstanceState) {
super.OnCreate(savedInstanceState);

// get the robot object sent through to this Activity
String robotId = getIntent().getStringExtra("robot.id");
Robot robot = RobotProvider.getDefaultProvider().findRobot(robotId);
}

关于java - 如何在同步 Sphero 时保持蓝牙连接并且我使用多个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18751733/

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