2013-09-11 1 views
1

Когда я синхронизирован со Sphero, и я хочу перейти от одного действия к другому, моя синхронизация потеряна, и я должен делать в новом действии этот метод в OnCreate, чтобы получить де синхронность снова:Как сохранить соединение Bluetooth, когда Sphero синхронизирован, и я использую несколько действий.

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

mRobot имеет MAC-адрес SPHERO. Но это не хорошо для всех времен, когда я пытаюсь это сделать, я хочу сохранить соединение Bluetooth для всех приложений, так как я впервые подключаюсь и могу сохранить его без синхронизации.

Я видел официальное приложение Orbotix для Sphero, и я думаю, что это прекрасно, потому что синхронизация является постоянной. Не могли бы вы мне помочь?

ответ

1

В Orbotix мы обычно используем центральную активность и либо показываем временные действия поверх нее, либо (совсем недавно) мы используем FragmentActivity, который сначала показывает фрагмент, который заботится о соединении (синхронизация в вашем вопросе) , Оттуда мы показываем разные экраны с использованием разных пользовательских фрагментов.

Если вам абсолютно необходимо отправить объект Robot в другое действие, вы можете добавить идентификатор робота в намерение, а затем получить робот-объект 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); 
    }