Связь через Android: управление приложениями телефон-телефон через 3G - PullRequest
1 голос
/ 07 ноября 2011

В настоящее время я работаю над проектом Android и пытаюсь найти лучший способ настройки связи между двумя телефонами Android.

Один мобильный телефон Android будет подключен к мобильной платформе, например R / C автомобиль. Я хочу, чтобы этот телефон получал простые управляющие сигналы («вперед», «назад», «влево», «вправо», «gotoCoordinate»), отправленные с другого телефона Android. Я также хочу, чтобы подключенный телефон мог возвращать сигналы состояния.

Желательно, чтобы общение происходило через GPRS. Я знаю о трудностях, связанных с P2P-коммуникациями, и в настоящее время я изучаю "Android Cloud To Device Messaging". (http://code.google.com/android/c2dm/index.html)

Мне бы хотелось услышать о вашем опыте работы с Android C2DM (рад слышать о задержке передачи и получения) и ваших мыслях об использовании его в моем проекте. Буду признателен за другие предложения о том, как это сделать. Я ожидаю, что при этом методе придется иметь дело с относительно высокой задержкой, но, конечно, желательно с минимально возможной.

1 Ответ

1 голос
/ 07 ноября 2011

C2DM не дает никаких гарантий относительно «доставки или порядка» сообщений, и оно ограничено по количеству сообщений, которые вы можете отправлять (высокий предел, но все же предел).Это не совсем для вещей с низкой задержкой, таких как управление автомобилем RC.Это лучше для событий не в реальном времени.

http://code.google.com/android/c2dm/

Для вещей с более низкой задержкой, используя GPRS, вы можете настроить сторонний сервер самостоятельно и подключить к нему оба телефона.Я сделал это для нескольких приложений Android, использующих прямые сокеты TCP, и это работает достаточно хорошо (и было бы еще быстрее / лучше, если бы вы перешли на UDP).Использование GPRS может все еще иметь слишком большую задержку, в зависимости от ваших потребностей, но это компромисс (это очень удобно, почти всегда, другие методы - нет).

Идеальным способом сделать это было бы объединить все, что доступно, и корректно откатиться, и проверить задержку после подключения, чтобы убедиться, что сеть работает на нормальном уровне или выручает.Например, используйте локальную сеть WiFi, если она доступна.То есть оба устройства «регистрируются» на стороннем сервере при запуске, а затем, если они оба подключены к одному и тому же Wi-Fi, просто подключите их напрямую (запустите сервер на одном или обоих, а клиенты на одном или обоих,получить информацию об обнаружении и т.п. от регистрации).Если они не подключены к WiFi, используйте GPRS, но поймите, что задержка будет больше.Наконец, после того, как какой-либо метод был установлен, отправьте несколько тестовых сообщений для проверки задержки.

Я знаю, что на самом деле это не «ответ», это скорее поток сознания об этом, но он не подходитв комментарии, и я подумал, что это может помочь;).

(Полное раскрытие: я работал над приложениями для Android, которые соединяют несколько мобильных устройств и несколько телевизоров, некоторые через GPRS, некоторые через Wi-Fi, некоторые напрямую. Я работаю в компании (MOVL), которая делает платформу для вещейТаким образом, он больше ориентирован на мобильное ТВ-мобильное, но также поддерживает мобильное-мобильное. Вообще, не так уж сложно работать с обычными сетями, сложная часть заключается в снижении задержки и выборе правильного метода для каждого устройства..)

...