当我与Sphero同步并且我想从一个活动传递到另一个活动时,我的同步将丢失,我必须在新活动中使用onCreate中的此方法再次进行同步:
**RobotProvider provider = RobotProvider.getDefaultProvider();
mRobot = provider.findRobot(robot_id);
provider.initiateConnection(robot_id);
provider.control(mRobot);
provider.connectControlledRobots();**
mRobot拥有Sphero的MAC地址。但是我尝试它的所有时间并不好,我想保留所有应用程序的蓝牙连接,因为我第一次连接并且能够保持它而不再同步。
我已经看到Sphero的官方Orbotix应用程序,我认为是完美的,因为同步是永久性的。你能用这种方式帮助我吗?
答案 0 :(得分:1)
在Orbotix,我们通常使用一个中心Activity并在其顶部显示临时活动,或者(最近)我们使用FragmentActivity,它首先显示一个负责连接的片段(同步)你的问题)。从那里,我们使用不同的自定义片段显示不同的屏幕。
如果您绝对需要将Robot对象发送到另一个Activity,则可以将机器人ID添加到Intent,然后在新Activity中从RobotProvider获取机器人对象。这还要求您确保不要根据原始活动的生命周期与Sphero断开连接。
在您原来的活动中:
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;
}
}
在您的新活动中:
@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);
}