УРОВЕНЬ ТЕХНИКИ
В один конкретный день пользователи могут взаимодействовать с множеством разных устройств. Например, пользователь может взаимодействовать с настольным PC, ноутбуком, устройством мобильной связи (например, мобильным телефоном), игровой консолью и так далее. Обычное взаимодействие с этими устройствами, однако, часто является изолированным, так что взаимодействие с одним устройством отделено от взаимодействия с другим устройством. Кроме того, несмотря на то, что для решения этой проблемы впоследствии были разработаны способы, эти способы часто являются сложными и неэффективными, и поэтому пользователи обычно не используют эти функциональные возможности.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Описано связывание устройств. В одной или нескольких реализациях, в сетевой услуге поддерживаются данные, описывающие характеристики множества устройств, которые ассоциированы с учетной записью пользователя этой сетевой услуги. Формируется передаваемая информация для приема ее одним из этого множества устройств, включающая в себя часть упомянутых данных, которая относится к другому одному из упомянутого множества устройств и которая является пригодной для обнаружения приемным устройством упомянутого другого одного из множества устройств для инициирования локального сетевого соединения между упомянутыми устройствами.
В одной или нескольких реализациях, в вычислительном устройстве принимаются данные, ассоциированные с учетной записью пользователя, из сетевой услуги, которые идентифицируют другое вычислительное устройство, ассоциированное с учетной записью пользователя. В ответ на определение упомянутым вычислительным устройством того, что это другое вычислительное устройство является доступным через локальное сетевое соединение, упомянутым вычислительным устройством формируется локальное сетевое соединение с упомянутым другим вычислительным устройством. В ответ на определение упомянутым вычислительным устройством того, что упомянутое другое вычислительное устройство не является доступным через локальное сетевое соединение, упомянутым вычислительным устройством формируется нелокальное сетевое соединение с упомянутым другим вычислительным устройством.
В одной или нескольких реализациях, посредством обмена информацией с сетевой услугой обнаруживается доступность некоторого устройства для поддержки совместного взаимодействия, причем эта доступность определяется через привязку этого устройства к учетной записи пользователя. Данные, принимаемые из сетевой услуги, используются для инициирования локального сетевого соединения между вычислительным устройством и упомянутым устройством, в результате упомянутого обнаружения, которое можно использовать для передачи данных, относящихся к совместному взаимодействию.
В этом разделе Сущность изобретения в упрощенном виде представлена подборка концепций, которые описаны ниже в разделе Подробное описание. Этот раздел Сущность изобретения не предназначен для идентификации отличительных или существенных признаков заявленного изобретения, он также не предназначен для использования его в качестве вспомогательного средства для определения объема заявленного изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Подробное описание приведено со ссылкой на прилагаемые чертежи. На этих чертежах крайняя(ие) левая(ые) цифра(ы) ссылочной позиции идентифицирует(ют) чертеж, в котором эта ссылочная позиция появляется впервые. Использование идентичных ссылочных позиций в разных конкретных случаях в описании и на чертежах может указывать на аналогичные или идентичные элементы. Объекты, представленные на чертежах, могут указывать на один или несколько объектов, и, соответственно, при обсуждении упоминание объектов в единственном или множественном числе является взаимозаменяемым.
Фиг. 1 - иллюстрация среды в иллюстративной реализации, которая обеспечивает возможность выполнения способов связывания устройств, описанных в этом документе.
Фиг. 2 - иллюстрация системы в иллюстративной реализации, более подробно изображающая вычислительные устройства и поставщика услуг по фиг. 1.
Фиг. 3 - схема последовательности операций, которая изображает процедуру в иллюстративной реализации, в которой сетевая услуга сконфигурирована для соединений через брокера между устройствами.
Фиг. 4 - схема последовательности операций, которая изображает процедуру в иллюстративной реализации, в которой вычислительное устройство сконфигурировано для эффективного использования локальных и/или удаленных сетевых соединений для обмена информацией с другим вычислительным устройством.
Фиг. 5 - схема последовательности операций, которая изображает процедуру в иллюстративной реализации, в которой поддерживается совместное взаимодействие посредством связывания устройств.
На фиг. 6 изображена иллюстративная система, которая включает в себя вычислительное устройство, описанное со ссылкой на фиг. 1.
На фиг. 7 изображены различные компоненты иллюстративного устройства, которое может быть реализовано как любой тип вычислительного устройства, описанного со ссылкой на фиг. 1 - фиг. 4, для реализации вариантов осуществления способов, описанных в этом документе.
ПОДРОБНОЕ ОПИСАНИЕ
Общие сведения
Обычные способы, которые используются для связывания устройств вместе, обычно содержат множество выполняемых вручную этапов, которые должны выполняться пользователем. Кроме того, эти этапы часто являются сложными, и поэтому пользователи обычно не пользуются этими способами, даже когда они являются доступными.
Описаны способы связывания устройств. В одной или нескольких реализациях описаны способы, в которых разные типы устройств могут работать совместно, например, использование мобильного устройства связи для поддержки взаимодействия с игровой консолью. В этом документе обсуждается множество способов, которые могут эффективно использоваться для связывания устройств вместе, например, для поддержки этого взаимодействия. Их примеры включают в себя эффективное использование "облака" и локального соединения для выполнения начальной установки, использования локального и удаленного соединений, поддержки функциональности механизма отката и так далее. Дополнительное обсуждение этого и других способов может быть найдено в изложении следующих разделов.
В нижеследующем обсуждении сначала описывается иллюстративная среда, в которой могут быть применены способы, описанные в этом документе. Далее описываются иллюстративные процедуры, которые могут выполнятся в упомянутой иллюстративной среде, а также в других средах. Следовательно, выполнение упомянутых иллюстративных процедур не ограничивается упомянутой иллюстративной средой, и упомянутая иллюстративная среда не ограничивается выполнением упомянутых иллюстративных процедур.
Иллюстративная Среда
Фиг. 1 является иллюстрацией среды 100 в иллюстративной реализации, которая обеспечивает возможность применения способов, описанных в этом документе. Иллюстрированная среда 100 включает в себя примеры двух вычислительных устройств 102, 104, которые могут быть сконфигурированы множеством способов. Вычислительные устройства 102, 104, например, могут быть сконфигурированы как обычный компьютер (например, настольный персональный компьютер, ноутбук и так далее), мобильная станция, развлекательное оборудование, игровая консоль, коммуникативно соединенная с устройством отображения (например, телевизором, устройством мобильной связи (например, беспроводным телефоном, планшетом, нетбуком и т.д.), как также описано в отношении иллюстративной рабочей среды и устройства. Соответственно, вычислительные устройства 102, 104 могут находиться в пределах от полноресурсных устройств со значительными ресурсами памяти и процессора, (например, персональные компьютеры, игровые консоли) до малоресурсных устройств с ограниченными ресурсами памяти и/или обработки (например, обычные телевизионные приставки, малогабаритные игровые консоли). В иллюстрированной реализации вычислительное устройство 102 сконфигурировано как игровая консоль, а другое вычислительное устройство 104 сконфигурировано как устройство мобильной связи, хотя также предполагаются и другие реализации, как описано выше.
Изображено, что каждое из вычислительных устройств 102, 104 включает в себя модуль 106, 108 ввода/вывода, соответственно. Модули 106, 108 ввода/вывода представляют функциональность, относящуюся к распознаванию вводов и/или обеспечению выводов соответствующим вычислительным устройством. Например, модули 106, 108 ввода/вывода могут быть сконфигурированы для приема вводов из клавиатуры, мыши, для идентификации жестов и вызова операций, которые должны быть выполнены, которые соответствуют жестам, и так далее. Вводы могут обнаруживаться модулями 10 6, 108 ввода/вывода множеством различных способов.
Модуль 106 ввода/вывода, например, может быть сконфигурирован для приема одного или нескольких вводов посредством взаимодействия касанием с аппаратным устройством, например, устройством 110 управления, как изображено. Взаимодействие касанием может включать в себя нажатие кнопки, перемещение джойстика, перемещение по всему трекпаду, использование сенсорного экрана устройства отображения (например, обнаружение пальца руки пользователя или стилуса вычислительным устройством 102) и так далее.
Распознавание вводов может эффективно использоваться модулями 106, 108 ввода/вывода для взаимодействия с интерфейсом пользователя, выводимым соответствующим вычислительным устройством 102, 104, например, для взаимодействия с игрой, приложением, просмотра интернет, изменения одного или нескольких установочных параметров вычислительных устройств 102, 104 и т.д. Также предполагается множество других аппаратных устройств, которые содержат взаимодействие касанием с этим устройством. Примеры таких аппаратных устройств включают в себя устройство управления курсором (например, мышь), дистанционный пульт (например телевизионный пульт), устройство мобильной связи (например, беспроводной телефон, сконфигурированный для управления одной или несколькими операциями вычислительного устройства 102, как иллюстрируется вычислительным устройством 104) и другие устройства, которые подразумевают касание со стороны пользователя или объекта.
Модулями 106, 108 ввода/вывода может также поддерживаться* естественный пользовательский интерфейс (NUI), например, для распознавания взаимодействий, которые могут не подразумевать касания. Например, вычислительные устройства 102, 104 могут эффективно использовать устройства ввода для обнаружения вводов без касания пользователем конкретного устройства, например, для распознавания речевых вводов посредством использования микрофона. Например, модули 106, 108 ввода/вывода могут быть сконфигурированы для выполнения распознавания речи для распознавания конкретного произнесения (например, речевой команды), а также для распознавания конкретного пользователя, который обеспечивает это произнесение.
В другом примере, модули 10 6, 108 ввода/вывода, которые могут быть сконфигурированы для распознавания жестов, представленных объектов, изображений и так далее посредством использования камеры. Камера, например, может включать в себя множество линз для возможности захвата разных перспектив, и, соответственно, определения глубины, как изображено для вычислительного устройства 102 в конфигурации игровой консоли. Разные перспективы, например, могут использоваться для определения относительного расстояния от устройства ввода и, соответственно, изменения этого относительного расстояния. Разные перспективы могут быть эффективно использованы соответствующими вычислительными устройствами 102, 104 как восприятие глубины. Естественно, также могут быть эффективно использованы другие изображения без использования контроля глубины, например, камера вычислительного устройства 104, сконфигурированного как мобильное устройство связи. Изображения могут эффективно использоваться для обеспечения различных функциональных возможностей, например, способов для идентификации конкретных пользователей (например, посредством распознавания лиц), объектов, выполнения поиска и так далее.
Модули 106, 108 ввода-вывода могут эффективно использовать вводы для выполнения установки соответствия по скелету вместе с выделением особенностей конкретных точек человеческого тела (например, 48 точек скелета) для отслеживания одного или нескольких пользователей (например, четырех пользователей одновременно) для выполнения анализа движения. Например, захваченные изображения могут быть проанализированы модулями 106, 108 ввода/вывода для распознавания одного или нескольких движений, сделанных пользователем, в том числе того, какая часть тела используется для осуществления этого движения, а также того, какой пользователь сделал это движение. Один пример иллюстрируется через распознавание положения и перемещения одного или нескольких пальцев руки 112 пользователя и/или перемещения всей руки 112 пользователя. Для инициирования соответствующей операции, движения могут идентифицироваться модулями 106, 108 ввода/вывода как жесты.
Также изображено, что вычислительные устройства 102, 104 включают в себя соответствующие связывающие модули 114, 116. Связывающие модули 114, 116 представляют функциональность соответствующих устройств для инициирования одного или нескольких сетевых соединений между устройствами и управления ими. Соединения могут использоваться для поддержки множества разных функциональных возможностей, например, совместного взаимодействия. Например, вычислительное устройство 104, сконфигурированное как мобильное устройство связи, может взаимодействовать с вычислительным устройством 102, сконфигурированным как игровая консоль, для дополнения взаимодействия пользователя. Это может включать в себя использование вычислительного устройства 104 как игрового контроллера, вывод электронного телегида для управления выводом контента вещательных передач вычислительным устройством 102 и так далее. Соответственно, взаимодействие с вычислительным устройством 104 может использоваться для управления одной или несколькими операциями, выполняемыми вычислительным устройством 102, и наоборот. Вычислительное устройство 102, например, может обеспечивать дополнительный контент для вывода вычислительным устройством 104.
Связывающие модули 114, 116 могут включать в себя множество разных функциональных возможностей для инициирования сетевых соединений и управления ими. Например, связывающие модули 114, 116 могут включать в себя функциональные возможности для формирования локального сетевого соединения 118 между этими устройствами (например, локальное соединение Wi-Fi) и/или удаленного соединения, включающего в себя сеть 120, например, "через облако", посредством эффективного использования поставщика 122 услуг, к которому можно получить доступ через Internet. Соответственно, в этом втором примере иллюстрируется то, что поставщик 122 услуг также включает в себя связывающий модуль 124, который представляет функциональные возможности поставщика 122 услуг также для поддержки функциональных возможностей связывания устройств.
Связывающие модули 114, 116, например, могут эффективно использовать удаленное соединение сети 120 для установки связи с поставщиком 120 услуг для выполнения обнаружения устройства, например, "определения местоположения" устройства, для обмена информацией с ним. Эти данные могут после этого использоваться для установки локального сетевого соединения 118 между упомянутыми устройствами для поддержки совместного взаимодействия, как описано ранее. В другом примере это соединение может поддерживаться полностью или частично чрез удаленное соединение, включающее в себя сеть 120, например, Internet, или другую глобальную сеть. Соответственно, связывающие модули 114, 116 могут эффективно использовать множество разных типов соединений и способов для формирования упомянутых соединений, дополнительное обсуждение которых может быть найдено в отношении следующего чертежа.
В общем, любая из функций, описанных в этом документе, может быть реализована с использованием программных средств, программно-аппаратных средств, аппаратных средств (например, схемы с фиксированными логическими функциями) или комбинации этих реализаций. Термины "модуль",
"функциональность/функциональные возможности" и "логика", используемые в этом документе, в общем представляют программные средства, программно-аппаратные средства, аппаратные средства или их комбинацию. В случае программной реализации, модуль, функциональность/функциональные возможности или логика представляют код программы, который выполняет конкретные задачи при исполнении на процессоре (например, центральном процессоре (ЦП) или центральных процессорах). Код программы может храниться в одном или нескольких машиночитаемых запоминающих устройствах. Особенности способов, описанных ниже, являются независимыми от платформы, что означает то, что эти способы могут быть реализованы на множестве коммерческих вычислительных платформ, имеющих множество процессоров.
Например, вычислительные устройства 102, 104 могут также включать в себя объект (например, программное средство), который вызывает выполнение операций аппаратными средствами вычислительных устройств 102, 104, например, процессорами, функциональными блоками и так далее. Например, вычислительные устройства 102, 104 могут включать в себя машиночитаемый носитель информации, который может быть сконфигурирован для поддержки инструкций, которые вызывают выполнение операций упомянутым вычислительным устройством, а более конкретно аппаратными средствами вычислительных устройств 102, 104. Соответственно, инструкции выполняют функции по конфигурированию аппаратных средств для выполнения упомянутых операций, и, следовательно, в результате приводят к преобразованию аппаратных средств для выполнения функций. Инструкции могут обеспечиваться машиночитаемым носителем информации в вычислительное устройство 102 посредством множества разных конфигураций.
Одной такой конфигурацией машиночитаемого носителя информации является носитель информации, несущий сигнал, и, соответственно, сконфигурированный для передачи инструкций (например, несущая волна) в аппаратные средства вычислительного устройства, например, через сеть. Машиночитаемый носитель информации может также быть сконфигурирован как машиночитаемая запоминающая среда, и, соответственно, не являться носителем информации, несущим сигнал. Примеры машиночитаемого носителя информации включают в себя оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), оптический диск, флэш-память, накопитель на жестком диске и другие запоминающие устройства, которые могут использовать магнитные, оптические и другие технологии для хранения инструкций и других данных.
На фиг. 2 изображена система 200, представляющая более подробно вычислительные устройства 102, 104 и поставщика 122 услуг. Соединения для поддержки совместного взаимодействия между вычислительными устройствами 102, 104 могут инициироваться и поддерживаться множеством способов. Например, каждое из вычислительных устройств 102, 104 может быть ассоциировано с учетной записью пользователя сетевой услуги поставщика 122 услуг. Следовательно, с обеспечением учетных данных через сеть 120 пользователи могут просто входить в учетную запись пользователя поставщика услуг 122 без привлечения дополнительной информации для входа в систему, кодов ключей и т.д. Эти учетные данные могут после этого обрабатываться модулем 202 диспетчера учетных записей поставщика 122 услуг для аутентификации пользователя. Кроме того, эта аутентификация может использоваться для получения доступа к множеству разных услуг поставщика 122 услуг (и других поставщиков услуг) посредством "однократного" входа в систему, например, к услуге музыкального вещания, услуге передачи сообщений, услуге ведения календаря, услуге управления контактами и т.д.
После аутентификации, могут быть предоставлены функциональные возможности связывающего модуля 124, например, формирование соединения между устройствами. Связывающий модуль 124, например, может быть сконфигурирован для поддержки данных, которые описывают детали сетевого соединения, которые могут быть использованы для формирования сетевого соединения между устройствами. Они могут включать в себя данные, которые описывают детали локального сетевого соединения 118, например, для поддержки соединения Wi-Fi посредством использования идентификатора, имени сети и так далее. Эти данные могут также описывать детали удаленного соединения для доступа через сеть 120 (например, Internet), например, IP-адрес, поддерживаемый диапазон частот, информацию о местоположении, тип доступа к сети и так далее.
Упомянутые данные могут передаваться поставщику 122 услуг множеством способов и в различные моменты времени. Например, упомянутые данные могут передаваться как часть аутентификации, могут быть сохранены из предыдущего обмена информацией, могут быть обеспечены в ответ на запрос, принятый от поставщика 122 услуг (например, после осуществления аутентификации), и так далее. Соответственно, связывающие модули 114, 116 могут передавать множество разных данных, которые могут быть эффективно использованы для формирования соединения.
В одной или нескольких реализациях, на соответствующих связывающих модулях 114, 116 могут быть предоставлены установочные параметры для управления тем, обеспечивать ли эти данные. Например, может быть предоставлен установочный параметр конфигурации для обеспечения возможности обнаружения соответствующего вычислительного устройства, который может быть установлен "включено" как значение по умолчанию, хотя также предполагаются другие примеры.
Кроме того, другой установочный параметр конфигурации может использоваться для управления тем, должно ли вычислительное устройство поддерживать с поставщиком 122 услуг соединение в режиме реального времени, который может быть установлен в "выключено" как значение по умолчанию. Он может использоваться для сокращения потребления ресурсов (например, сетью 120 и/или поставщиком услуг), так что поставщик 122 услуг не будет вынужден поддерживать эту особенность соединения с устройством для устройств, которым не требуется делать это. Например, этот установочный параметр может быть первоначально установлен в "выключено". Однако после попытки соединения этот установочный параметр может переключаться на "включено" автоматически и без вмешательства пользователя для поддержания разорванного соединения "в состоянии готовности" для выполнения связывания, описываемого в этом документе.
Для инициирования соединения, вычислительные устройства 102, 104 могут сначала "обнаруживать" друг друга множеством способов. Например, связывающие модули 114, 116 могут быть сконфигурированы для определения сначала того, является ли другое устройство доступным через локальное сетевое соединение 118, например, доступным через Wi-Fi, Bluetooth или другую проводную или беспроводную сеть. Это обнаружение может быть сконфигурировано с эффективным использованием данных, ранее сохраненных соответствующими связывающими модулями 114, 116, например, идентификация конкретных сетевых идентификаторов соответствующих вычислительных устройств 102, 104, сетей и другой информации, хотя также предполагаются другие примеры.
Если устройство не обнаружено таким способом, то для обнаружения того, является ли другое устройство доступным для соединения, связывающие модули 114, 116 могут обмениваться информацией с поставщиком 112 услуг. Вычислительные устройства 102, 104, например, могут передавать данные, которые указывают местоположение устройств, данные, которые можно использовать для обнаружения устройств через локальное соединение, и так далее. Данные могут указывать конкретное местоположение, например, в конкретном помещении, эффективно использовать GPS-координаты и другие функциональные возможности определения позиции. Кроме того, эта информация может использоваться для определения устанавливаемого типа соединения, например, для установки удаленного соединения через сеть 120, когда локальное сетевое соединение 118 является не доступным, например, устройства расположены на расстоянии, которое превышает расстояние, поддерживаемое локальным сетевым соединением 118.
Например, вычислительное устройство 104 может обмениваться информацией с связывающим модулем 124 поставщика 122 услуг через сеть 120 для определения того, являются ли другие устройства (например, вычислительное устройство 102), которые зарегистрированы в учетной записи пользователя, доступными для связывания. Далее поставщик 122 услуг может возвратить ответ, который может включать в себя дополнительную информацию о локальном сетевом соединении (например, беспроводная или проводная подсеть) для этих устройств. После этого с использованием этой информации связывающий модуль 116 вычислительного устройства 104 может вести поиск в упомянутой локальной сети и пытаться найти упомянутое другое устройство или устройства. Если оно найдено, то вычислительные устройства 102, 104 могут согласовать прямую линию связи посредством локального сетевого соединения 118 для обмена информацией, которое в одном или нескольких конкретных случаях может поддерживать более эффективный обмен информацией, чем соединение, поддерживаемое через сеть 120. Например, локальное сетевое соединение 118 может поддерживать больший диапазон частот, чем удаленное соединение через сеть 120. Кроме того, может также использоваться фактор стоимости как часть процесса принятия решения относительно того, какую сеть использовать, например, сеть Wi-Fi в сравнении с сетью мобильной телефонной связи, которая имеет наибольшие размеры использования.
Если оно не найдено, то вычислительные устройства 102, 104 могут обмениваться информацией через сеть 120 множеством способов. Например, передаваемая информация может пересылаться через поставщика 122 услуг как посредника. Соответственно, обмен информацией в этом примере может эффективно использовать интернет или другую глобальную сеть для соединения устройств, одного с другим. В другом примере удаленного соединения, для пересылки передаваемой информации могут поддерживаться способы туннелирования, например, посредством эффективного использования IP-адресов других устройств соответствующими связывающими модулями 114, 116, для обмена информацией непосредственно через сеть 120 без активной работы поставщика 122 услуг как посредника.
Также предполагается множество других примеров, например, гибридный режим, в котором разная передаваемая информация пересылается через разные сети. Например, такой гибридный режим может использоваться для поддержки передачи команд через сеть 120 и контента через локальное сетевое соединение 118 и наоборот. Это разделение передаваемой информации может выполняться по многим причинам, например, из-за ограничений топологии конкретных сетевых соединений, поддерживаемых соответствующими сетями.
В некоторых случаях, во время использования характеристики сетевого соединения могут измениться. Соответственно, связывающие модули 114, 116, 124 могут быть сконфигурированы множеством различных способов для разрешения вопросов, связанных с этими изменениями. Например, связывающие модули 114, 116, 124 могут быть сконфигурированы для уведомления пользователя (например, через интерфейс пользователя) об этом изменении. Кроме того, связывающие модули 114, 116, 124 могут быть сконфигурированы для настройки (например, отключения) свойств, которые, могут плохо работать в этом состоянии, например, для сокращения разрешающей способности, функциональных возможностей, которые требуют интенсивного обмена информацией, свойств, которые не поддерживаются этой сетью, и так далее.
Кроме того, связывающие модули 114, 116, 124 могут быть сконфигурированы для кэширования команд, которые могут использоваться для улучшения эффективности и решения вопросов прерывистого соединения. Это кэширование может выполняться в вычислительных устройствах 102, 104, а также в поставщике 122 услуг. Также предполагается множество других примеров.
Например, связывающие модули 114, 116, 124 могут быть сконфигурированы для поддержки автоматического аварийного восстановления. Локальное сетевое соединение 118, например, может ухудшиться или разъединиться, например, из-за перемещения вычислительного устройства 104 дальше от вычислительного устройства 102, помех от сети и так далее. В таких конкретных случаях связывающие модули 114, 116, 124 могут вызвать осуществление соединения через сеть 120, вместо этого, могут принимать решение о применении гибридного формата, как описано выше, и так далее. Обратное также справедливо в том смысле, что, если надежность сети 120 уменьшается, то для поддержки обмена информацией между устройствами может автоматически эффективно использоваться локальное сетевое соединение 118 без вмешательства пользователя.
Это изменение может также использоваться для переключения сетей в ответ на определение того, что другая одна из сетей стала доступной. Например, вычислительное устройство 104 может сначала обмениваться информацией с вычислительным устройством 102 по Internet, например, тогда, когда вычислительное устройство 104 находится на расстоянии, на котором локальное сетевое соединение 118 не поддерживается. В ответ на определение того, что вычислительное устройство 104 в настоящее время находится в пределах диапазона локальной сети вычислительного устройства 102, связывающие модули 114, 116 автоматически могут обмениваться информацией по локальному сетевому соединению 118. Как описано выше, при использовании этих функциональных возможностей может учитываться множество факторов, например, фактор стоимости, описанный выше. Соответственно, для поддержки связывания устройств может быть эффективно использовано множество разных функциональных возможностей, которые также могут использоваться для поддержки множества дополнительных функциональных возможностей, например, совместного взаимодействия, как описано выше.
Связывающими модулями 114, 116, 124 также может поддерживаться множество других функциональных возможностей. Например, как описано выше, соединение может являться двунаправленным, так что каждое из устройств может отправлять и принимать данные из других устройств. Эти функциональные возможности могут эффективно использоваться множеством способов. Вычислительное устройство 102, например, может быть сконфигурировано для оповещения вычислительного устройства 104 о текущем состоянии при выводе контента. Вычислительное устройство 104 может после этого эффективно использовать эту информацию для обеспечения функциональных возможностей, например, для определения местоположения связанного контента, для выполнения поиска в Internet на основе одного или нескольких мест, ассоциированных с этим связанным контентом, и т.д. Обратное также справедливо в том смысле, что вычислительное устройство 104 может передавать состояние в вычислительное устройство 102, которое может быть эффективно использовано этим устройством для поддержки функциональных возможностей, например, для продолжения воспроизведения вычислительным устройством 102 контента с текущей точки, которая соответствует выводу контента вычислительным устройством 104.
В другом примере связывающие модули 114, 116, 124 могут также поддерживать множество разных способов шифрования для защиты обмена информацией, как через локальное сетевое соединение 118, так и удаленно, через сеть 120, и так далее. Кроме того, несмотря на то, что в отношении сети 12 0 описан интернет, упомянутыми способами может также поддерживаться множество разных типов сетей, например, с одиночным доменом, как части предприятия, интранет и так далее. Дальнейшее обсуждение способов связывания устройств может быть найдено в отношении следующих процедур.
Иллюстративные процедуры
В нижеследующем обсуждении описываются способы связывания устройств, которые могут быть реализованы с использованием ранее описанных систем и устройств. Аспекты каждой из процедур могут быть реализованы в аппаратных средствах, программно-аппаратных средствах (firmware) или программных средствах или их комбинации. Процедуры представлены как набор блоков, которые задают операции, выполняемые одним или несколькими устройствами, и которые не обязательно ограничены порядком, представленным для выполнения этих операций соответствующими блоками. В частях нижеследующего обсуждения делается ссылка на среду 100 по фиг.1 и систему 2 00 по фиг. 2.
Фиг. 3 является схемой последовательности операций, которая изображает процедуру 300 в иллюстративной реализации, в которой сетевая услуга сконфигурирована для соединений через брокера между устройствами. В сетевой услуге поддерживаются данные, описывающие характеристики множества устройств, которые ассоциированы с учетной записью пользователя этой сетевой услуги (этап 302). Связывающий модуль 124 поставщика 122 услуг, например, может принимать данные из вычислительных устройств 102, 104, которые ассоциированы с учетной записью пользователя. Эти данные могут быть приняты в ответ на выбор установочного параметра в соответствующих устройствах, разрешающего обнаружение устройства.
Формируется передаваемая информация для приема ее одним из упомянутого множества устройств, включающая в себя часть данных, которая относится к другому одному из упомянутого множества устройств и которая является пригодной для обнаружения приемным устройством упомянутого другого одного из множества устройств для инициирования локального сетевого соединения между упомянутыми устройствами (этап 304). Упомянутая передаваемая информация, например, может включать в себя данные, которые можно использовать для определения местоположения устройств локально, например, проводная или беспроводная подсеть, через которую к упомянутому другому устройству можно получить доступ посредством упомянутого локального сетевого соединения. Передаваемая информация может также включать в себя данные, которые можно использовать для определения местоположения устройств удаленно, например, IP-адрес. Далее эти данные могут использоваться для формирования соединений, которые могут использоваться для поддержки множества функциональных возможностей, например, совместного взаимодействия, как описано ранее.
Фиг. 4 является схемой последовательности операций, которая изображает процедуру 4 00 в иллюстративной реализации, в которой вычислительное устройство сконфигурировано для эффективного использования локальных и/или удаленных сетевых соединений для обмена информацией с другим вычислительным устройством. В вычислительном устройстве, из сетевой услуги, принимаются данные, ассоциированные с учетной записью пользователя, которые идентифицируют другое вычислительное устройство, ассоциированное с учетной записью пользователя (этап 402). Как описано ранее, упомянутые данные могут описывать устройство множеством способов, например, посредством сетевого адреса, имени устройства и так далее.
В ответ на определение упомянутым вычислительным устройством того, что это другое вычислительное устройство является доступным через локальное сетевое соединение, упомянутым вычислительным устройством формируется локальное сетевое соединение с этим другим вычислительным устройством (этап 404). Вычислительное устройство 102, например, может сформировать локальное беспроводное соединение (например, Wi-Fi) с вычислительным устройством 104, если оно является доступным.
В ответ на определение упомянутым вычислительным устройством того, что упомянутое другое вычислительное устройство не является доступным через локальное сетевое соединение, упомянутым вычислительным устройством формируется нелокальное сетевое соединение с упомянутым другим вычислительным устройством (этап 406). В продолжение предыдущего примера, если вычислительное устройство 104 не является доступным через локальное сетевое соединение 118, то вычислительное устройство 102 может сформировать сетевое соединение через сеть 120, например, Internet или другую глобальную сеть. Также предполагается множество других примеров.
Фиг. 5 является схемой последовательности операций, которая изображает процедуру 500 в иллюстративной реализации, в которой поддерживается совместное взаимодействие посредством связывания устройств. Обнаруживается доступность, посредством обмена информацией с сетевой услугой, устройства для поддержки совместного взаимодействия, причем эта доступность определяется через привязку этого устройства к учетной записи пользователя (этап 502). Вычислительное устройство 104, сконфигурированное как мобильное устройство связи (например, беспроводной телефон), например, может обмениваться информацией с поставщиком 122 услуг для определения того, является ли доступным устройство, например, вычислительное устройство 102, сконфигурированное как игровая консоль.
Данные, принимаемые из сетевой услуги, используются для инициирования локального сетевого соединения между вычислительным устройством и упомянутым устройством, в результате упомянутого обнаружения, которое может быть использовано для передачи данных, относящихся к совместному взаимодействию (этап 504). Вычислительное устройство 104, например, может принимать данные, описывающие проводную или беспроводную подсеть, через которую вычислительное устройство 102 является доступным. Также предполагается множество других примеров, примеры которых могут быть найдены в отношении нижеследующего примера реализации.
Пример Реализации
Ниже описывается пример реализации способов, описанных ранее. В одном или нескольких сценариях совместного взаимодействия, пользователь может иметь возможность использования устройства для просмотра каталога видео и так далее, и после этого выбрать фильм, взять его напрокат и воспроизвести его на консоли. В течение фильма, с использованием мобильного устройства связи или другого устройства, пользователь может иметь возможность управления им, например, воспроизведение/пауза, ускоренная перемотка вперед и перемотка назад и так далее. Игровая консоль также может быть сконфигурирована для уведомления упомянутого устройства о том, что происходит на консоли, например, о текущем состоянии фильма, изменении фрагмента (title) на консоли и т.д. Из упомянутого устройства, пользователь может иметь возможность запуска фрагмента на консоли, например, получить идентификатор фрагмента, который исполняется на консоли.
С точки зрения обмена информация между устройствами, обмен сообщениям может делиться на множество категорий, примеры которых включают в себя:
- Операции: Как мне начать работу на другом устройстве?
- Уведомления: Как меня уведомляют о изменениях состояния на другом устройстве?
Существует множество уведомлений, которые могут иметь место в системе:
- Active Title Changed (Активный Фрагмент Изменился): Запущен новый фрагмент. Это уведомление имеет место, когда на консоли запущен новый фрагмент или через ввод устройства управления, или посредством команд компаньона.
- Media State Change (Изменение Состояния Мультимедиа): Некоторый аспект состояния указателя воспроизведения изменился, например, идентификатор (ID) контента, скорость воспроизведения, позиция указателя воспроизведения или состояние воспроизведение/пауза. Это уведомление происходит, как периодически, для обеспечения синхронности переменных позиции по всем устройствам, так и мгновенно каждый раз, когда имеет место изменение на основе ввода пользователя (например, нажата кнопка стоп).
Существует множество операций, которые могут быть запущены в системе:
- Launch Title (Запустить Фрагмент): Запустить фрагмент на консоли, по выбору с аргументом командной строки, используемым для указания того, какую порцию контента мультимедиа отображать. Эта команда может выдаваться содействующим устройством (в нижеследующем обсуждении также называемым "компаньоном") тогда, когда из упомянутого гида или результатов поиска выбрана новая порция контента.
- Get Active Title (Получить Активный Фрагмент): Запрос консоли на предмет исполняющегося в настоящее время фрагмента. Он может вызываться тогда, когда компаньон первый раз соединяется с консолью для получения исходного идентификатора фрагмента, а также каждый раз, когда клиент явно обновляет эту информацию (например, при возвращении из спящего режима). Результат этой команды содержит информацию, идентичную уведомлению Active Title Changed (Активный Фрагмент Изменился).
- Send Input (Отправить Ввод): Отправить команду ввода в консоль. Эта команда выдается компаньоном каждый раз, когда выполняется щелчок мышью на элементе управления механизмом протяжки (например, воспроизведение, пауза, стоп).
- Get Media State (Получить Состояние Мультимедиа): Запрос консоли на предмет текущего состояния мультимедиа. Он вызывается тогда, когда компаньон первый раз соединяется с консолью для получения исходного состояния мультимедиа, а также каждый раз, когда клиенту требуется явно обновить эту информацию (например, при возвращении из спящего режима). Результат этой команды содержит информацию, идентичную уведомлению Media State Changed (Состояние мультимедиа изменилось).
Состояние мультимедиа (Media State)
Первичная структура данных в этом примере, которая используется как в протоколе, так и в интерфейсах API, является структурой состояния мультимедиа. Эта структура представляет текущее состояние указателя воспроизведения и идентификатор контента, который воспроизводится в пределах
фрагмента/приложения мультимедиа. Состояние мультимедиа (Media State) может быть получено из интерфейсов API Мультимедиа на консоли, и включает в себя нижеследующие поля/свойства:
Обмен информацией
Коммуникационный стек, используемый для обеспечения возможности того, чтобы сценарии компаньона могли объединять локальный с малым временем запаздывания TCP и UDP обмен сообщениями с услугой на основе облака для поддержки безопасности и обнаружения устройства, а также обмена информацией между устройствами, для которых не существует возможности IP-соединения прямой видимости.
Передаваемую информацию можно координировать через облако, например, сетевую услугу. Консоль регистрируется в услуге совместного взаимодействия для обнаружения ее содействующими устройствами. Содействующее устройство использует услугу совместного взаимодействия для определения того, с каким устройством оно может обмениваться информацией. Если существует возможность IP-соединения прямой видимости между консолью и содействующим устройством, то последующий обмен информацией между этим устройством и консолью может происходить через локальный TCP и UDP обмен сообщениями без вмешательства услуги. Если между консолью и содействующим устройством не существует возможности IP-соединения прямой видимости, то обмен информацией может происходить через услугу совместного взаимодействия, хотя и с большим временем запаздывания. С отключением особенностей, которые "не имеют смысла" при обмене сообщениями на основе облака, приложение совместного взаимодействия может адаптировать свой интерфейс пользователя на основе того, является ли коммуникационный стек малого времени запаздывания доступным.
Обнаружение/соединение в пару/авторизация устройства может происходить через услугу совместного взаимодействия. Система может выполнять это следующим образом:
1. содействующие устройства используют аутентифицированный идентификатор сети, который соответствует идентификатору входа в систему (login ID).
2. Данное устройство обменивается информацией с консолью, в систему которой вошел текущий пользователь на этом устройстве. С использованием кодов для приглашения или другого более передового интерфейса пользователя, также может поддерживаться соединение в пару/авторизация гостя.
Когда набор подсоединенных к системе пользователей изменяется, консоль может повторно регистрироваться в услуге совместного взаимодействия. Часть этой регистрации может включать в себя набор активных пользователей, IP-адрес консоли и порт TCP, используемый для ожидания локальных команд компаньона. После регистрации, услуга совместного взаимодействия может возвращать защищенный криптографический ключ сеанса, который консоль может использовать для защищенной подписи и шифрования сообщений в локальной сети.
Когда содействующее устройство пытается присоединиться к сеансу, оно устанавливает связь с услугой совместного взаимодействия, которая после этого возвращает и сетевой адрес консоли, в систему которой вошел текущий пользователь, и защищенный криптографический ключ сеанса, который может использоваться для подписи и изоляции сообщений в локальной подсети.
Обмен информацией с услугой может выполняться по HTTP. Если IP-соединение прямой видимости является доступным, то последующий обмен информацией может совершаться с использованием TCP/IP для команд (с использованием IP-адреса консоли) и UDP вещание для уведомлений (с использованием IP-адреса подсети консоли). Если IP-соединение прямой видимости не является доступным, то последующий обмен информацией может совершаться через услугу совместного взаимодействия.
В одной или нескольких реализациях может иметь место то, что TCP-соединение с консолью является возможным, а UDP-вещание в устройство является невозможным, так как консоль и содействующее устройство отделены IP-маршрутизатором. В этом случае, содействующее устройство может принимать уведомления через услугу совместного взаимодействия, но по-прежнему выдавать команды (и принимать ответы на них) в консоль через направление TCP.
Безопасность
В дополнение к безопасности, обеспечиваемой локальной подсетью (например, WEP или WPA по Wi-Fi), обмен информацией в системе может быть защищен следующим образом.
Содействующее устройство в услугу совместного взаимодействия
Обмен информацией между содействующим устройством и этой услугой может выполнятся по HTTPS, который может быть аутентифицирован с использованием идентификатора сети, который соответствует достоверному идентификатору консоли. Мобильное устройство связи, например, может получать токен для аутентификации (например, SAML) из связывающей услуги, например, XBL, который оно после этого представляет в услугу совместного взаимодействия. Услуга совместного взаимодействия после этого выдает один или несколько токенов безопасности для последующих вызовов в эту услугу. Например, один токен может использоваться последующими вызовами в эту услугу, а другой токен может использоваться для консоли и устройства мобильной связи для аутентификации сообщений.
Консоль в услугу совместного взаимодействия
Обмен информацией между консолью и этой услугой может выполняться по HTTPS. Когда набор, вошедших в XBL пользователей, изменяется на консоли, консоль может получить токен SAML из XBL, который она после этого представляет в услугу совместного взаимодействия. Услуга совместного взаимодействия после этого выдает токен безопасности для последующих вызовов в эту услугу.
Содействующее устройство в/из консоли
После аутентификации содействующего устройства или консоли в услуге совместного взаимодействия, эти устройства могут установить защищенный сеанс для обмена информацией, друг с другом. Сеанс можно рассматривать как безопасный контекст, который множество устройств могут использовать для обмена информацией. Каждый сеанс может содержать:
1. Идентификатор сеанса (guid, globally unique identifier, глобально уникальный идентификатор), который отслеживается услугой, который однозначно определяет этот сеанс связи.
2. 128-битовый ключ сеанса, который используется для подписи и шифрования сообщений, которые отправляются по локальной подсети.
Каждый раз, когда набор подсоединенных к системе пользователей изменяется на консоли, консоль может повторно выполнить аутентификацию в услуге совместного взаимодействия, и если предыдущий пользователь вышел из системы, то для этого сеанса может быть сгенерирован новый ключ сеанса.
Сообщения, передаваемые между устройствами в локальной подсети, могут являться достоверной информацией (целостностью), защищенной и зашифрованной. Защита целостности может быть обеспечена с использованием HMAC-SHA1, тогда как шифрование может выполняться с использованием AES-128 в режиме СВС. Защита ответа может быть реализована с использованием идентификационных номеров. Приемник может поддерживать номер 'high water mark (уреза)' и отклонять сообщения с меньшим номером.
Реализация консоли
Большая часть коммуникационного стека для компаньона может быть реализована в операционной системе консоли, с минимальным набором API, предоставляемым фрагментам.
API консоли
Фрагментами может вызываться API компаньона. На API можно ссылаться как "LrcSetMediaState." LrcSetMediaState вызывается фрагментами на медиаплеере для сообщения о том, что состояние указателя воспроизведения или идентификатор контента изменились. Эта функция может вызываться:
2. В ответ на обработку запроса управления механизмом протяжки (например, нажата кнопка "стоп", изменена скорость воспроизведения вследствие FF/REW).
3. Периодически, по мере того, как состояние указателя воспроизведения продвигается вследствие обычного воспроизведения, в том числе достижение конца потока или окончание или начало буферизации.
Реализация этого API может кэшировать данные, которые переданы в последнем вызове, для ответа на последующие запросы о состоянии указателя воспроизведения без нарушения исполнения приложения или использования ресурсов фрагмента.
В реализации этого API может быть реализована эвристика для определения того, когда фактически отправлять уведомления о изменении состояния мультимедиа, на основе типа изменения, которое имело место. В общем:
1. Изменения в полях, за исключением позиции, могут вызывать отправку уведомлений при следующей предоставленной возможности.
2. Изменения, сделанные только в поле позиции, могут не вызвать отправку уведомления. Предпочтительнее, если операционная система консоли может периодически отправлять уведомления об изменении состояния мультимедиа, и последнее изменение позиции может считываться при следующем уведомлении. Для периодических изменений по локальной подсети, эти изменения можно отправлять каждые десять секунд. Для периодических изменений по облаку, эти изменения можно отправлять каждые тридцать секунд.
Сигнатура API является следующей
При успехе функция возвращает S_OK, при неудаче E_FAIL.
LrcGetInput/LrcGet/InputWithSeek
API LrcGetInput/LrcGetInputWithSeek предназначен для его вызова как части процедуры опроса ввода. LrcGetInput предназначена для ее вызова из фрагментов, которые не могут поддерживать команды "подвода головки", для получения команд управления из содействующего устройства. LrcGetInputWithSeek предназначена для фрагментов, которые могут поддерживать операцию "seek" ("подвод головки").
Если существует input event present (определение события ввода), то функция возвращает ERROR_SUCCESS. Если существует по input event present (событие ввода не определено), то функция возвращает ERROR_EMPTY.
pdwUserIndex - указатель на индекс пользователя, вошедшего как зарегистированный пользователь (например, игрок (геймер)), ассоциированного с устройством, который может иметь значение в диапазоне от 0 до XUSER_MAX_COUNT - 1, или быть установлен в XUSER_INDEX_ANY для выбора следующего доступного события ввода от любого пользователя.
После возврата, переменная, на которую указывает pdwUserIndex, может содержать индекс игрока, ассоциированного с устройством, которое было источником события ввода. Это является полезным, если переменная, на которую указывает pdwUserIndex, содержала XUSER_INDEX_ANY на входе.
Параметры dwFlags могут быть равны или XINPUT_FLAG_ANYDEVICE, или, если pdwUserIndex имеет значение XUSER_INDEX_ANY, XINPUT_FLAG_ANYUSER.
Параметр pKeystroke может являться ненулевым указателем на структуру XINPUT_KEYSTROKE.
Параметр pSeekPos может являться ненулевым указателем на ULONGLONG.
Для LrcGetInput, если функция возвращает ERROR_SUCCESS, то структура, на которую ссылается pKeystroke, может содержать данные XINPUT_KEYSTROKE для этого события ввода.
Для LrcGetInputWithSeek,
1. Если ввод является командой seek, ULONGLONG, на который ссылается pSeekPos, может содержать требуемую позицию, в блоках 100 не, и структура, на которую ссылается pKeystroke, может быть не определена.
2. Если ввод является командой seek, но функция возвратила ERROR_SUCCESS, ULONGLONG, на который ссылается pSeekPos, может быть равен -1, а структура, на которую ссылается pKeystroke, может содержать данные XINPUT_KEYSTROKE для этого события ввода.
Для обоих этих API, код человеко-машинного интерфейса (HID), соответствующий вводу, является стандартным аппаратнореализованным кодом. UserIndex может быть установлен в соответствующий индекс согласно текущему пользователю содействующего устройства, который может принимать значения от нуля до трех. Если новые клавиши не нажаты (и в случае GetInputWithSeek, не существует информации "подвод головки"), упомянутые API возвращают ERROR_EMPTY. Если pdwUserlndex содержит идентификатор при вводе, для которого не существует соответствующего подсоединенного к системе пользователя, эти API возвращают ERROR_DEVICE_NOT_CONNECTED.
Реализация компонента компаньона внутри консоли При начальной загрузке консоль создает ТСР-сокет с прослушивающим процессом на динамическом порту между X и Υ для поддержки входящих соединений для команд. Длина очереди ожидания равна единице (1), и консоль может вводить одно входящее соединение за один раз для экономии ресурсов. Это означает, что после обслуживания входящего запроса с командой и отправки соответствующего ответа, консоль может завершить ТСР-соединение до выполнения следующего ввода вызова на сокете с прослушивающим процессом.
При отправке уведомления по локальной подсети, консоль может создать UDP-сокет, выполнить вызов для отправки в него, и после этого закрыть этот сокет. Отметим, что использование как TCP-, так и UDP-сокета является оптимизированным с сокращением количества открытых сокетов, которое соответственно оптимизировано для исполнения кода в консоли. Протокол может быть разработан с возможностью реализаций, в которых ТСР-соединения остаются открытыми в течение нескольких обменов сообщениями. В дополнение к использованию сокета, описанному выше, один дополнительный сокет может быть использован для взаимодействия консоли с услугой совместного взаимодействия.
При каждом изменении подсоединений к системе, которое подразумевает вход в систему с использованием профиля/учетной записи XBL или выход из нее, консоль устанавливает связь со услугой совместного взаимодействия с указанием того, что набор пользователей на этой консоли изменился. В этом вызове также регистрируется локальный IP-адрес консоли и ТСР-порт, используемый для ожидания входящих запросов с командой. Кроме того, ждущий HTTP-запрос типа COMET может оставаться "припаркованным" в услуге для ответа на входящие запросы из устройств без IP-соединения прямой видимости. Этот запрос повторно выдается каждые тридцать секунд, и (этот процесс) завершается, когда набор подсоединений к системе на консоли изменяется.
Использование ресурсов консоли
Общее использование сокетов консоли:
- 1 статически распределяемый исходящий ТСР-сокет для HTTP-обмена информацией с услугой, который используется как для регистрации набора подсоединений к системе, так и для pull-запроса события COMET.
1 статически распределяемый ТСР-сокет для ожидания запросов локальной подсети
1 динамически распределяемый ТСР-сокет потока для обслуживания входящего запроса локальной подсети
1 динамически распределяемый UDP-сокет для отправки сообщения-уведомления
Это означает, что используются минимум 2 сокета, и максимум 4 (если разрешена отправка UDP-уведомления до отправки ТСР-ответа), или 3 (если отправка уведомлений задерживается, до тех пор пока соединение TCP является разорванным).
Общие сведения о протоколе
Для поддержки операций активизации на консоли, протокол использует прямые TCP-соединения, которые инициируются из содействующего устройства в консоль. Для каждого ТСР-соединения конструкция протокола поддерживает множество ждущих запросов, а также доставку ответа вне очередности, однако, в нашей реализации консоли соединение может быть завершено после отправки первого ответа.
Для поддержки отправки уведомлений протокол использует UDP-вещание из консоли в содействующие устройства. С использованием правил подписи/шифрования, описанных ниже, нижеприведенные форматы сообщения можно безопасно отправлять по TCP или UDP.
Форматы сообщения
Сообщения могут кодироваться в двоичном формате с порядком следования битов, начиная со старшего, по сети. Любые поля сообщения могут быть выровнены по своей собственной границе (то есть, WORD по границе 2 байта, DWORD по границе 4 байта и т.д.). Строки фиксированной длины кодируются как текст UTF-8, заканчивающийся на '\0', и не содержат начальный BOM Unicode, который может быть удален разработчиком.
Безопасный протокол кадрирования определен для использования как в TCP-соединениях, так и в полезной информации пакетов UDP. Формат этих сообщений включает в себя:
1. Заголовок сообщения (Message Header) фиксированной длины, который содержит информацию о версии, данные безопасности, информацию об адресах и идентификаторы сообщения.
2. Тело сообщения (Message Body) переменной длины, которое содержит специфические для типа сообщения данные. Длина тела сообщения указывается в поле в заголовке сообщения.
3. Концевая часть сообщения (Message Trailer) фиксированной длины, которая содержит сигнатуру HMAC-SHA1 по заголовку сообщения и телу сообщения.
Заголовки сообщения
Сообщения начинаются с 32-байтового заголовка сообщения, содержимое которого является следующим:
Поля "То" и "From" заголовка сообщения используются для поддержки обнаружения ответа, поскольку у каждого содействующего устройства существует свой собственный идентификационный номер. Без поля "From" в запросах, консоль не могла бы определять то, какой клиент отправил сообщение, и поэтому не могла бы определить правильный идентификационный номер. Без поля "То" в ответах, злоумышленник потенциально может (направить ответное сообщение), предназначенное для одного устройства, в другое устройство.
В заголовке сообщения существует два классифицирующих поля: MessageKind и MessageType. Поле MessageKind указывает на то, является ли сообщение:
[0×00000001] Сообщения с запросом, которые используются для запроса выполнения операции (например, команд, запросов, управления соединением) или
[0×00000002] Ответные сообщения, в которых передается результат операции, которая была выполнена в ответ на конкретное сообщение с запросом, или
[0×00000003] Уведомительные сообщения, в которых передается событие изменения состояния
Поле MessageType идентифицирует формат и семантику данной операции или уведомления. Иллюстративный список поддерживаемых типов сообщения:
Ответные сообщения имеют к дополнительным полям в своем заголовке сообщения.
Сообщения "Response" ("Ответ") начинаются с четырехбайтового кода результата, который обрабатывается как HRESULT. Конкретно, значение 0×OOOOOOOO/S_OK указывает на успешное выполнение запрошенной операции. Для каждого типа ответного сообщения определены конкретные коды результата. Концевые части сообщения Сообщения заканчиваются 20 байтами
Тела сообщения
В этом разделе определяется формат и семантика конкретных типов сообщения, которые могут поддерживаться протоколом. Байты, которые следуют за полем заголовка сообщения SequenceNumber и предшествуют концевой части сообщения шифруются.
Сообщение с запросом JoinSession
Это сообщение отправляется из содействующего устройства в консоль для (a) обеспечения того, чтобы версии протокола совпадали и (b) получения исходных идентификационных номеров для использования их для входящих и исходящих сообщений. Запрос/ответ JoinSession может иметь место до отправки по локальной подсети любых дополнительных сообщений из содействующего устройства в консоль.
Ответное сообщение JoinSession
Это сообщение отправляется в содействующее устройство в/из консоли для (a) обеспечения того, чтобы версии протокола совпадали и (b) передачи исходных идентификационных номеров для использования их для входящих и исходящих сообщений.
Если ResultCode равен S_OK (0), то запрашиваемая версия протокола поддерживается. Также:
1. SupportedProtocolVersion содержит номер версии протокола, поддерживаемого этим сервером.
2. ClientSequenceNumber содержит идентификационный номер, который клиент может использовать для следующего сообщения, которое он отправит в сервер.
3. NotificationSequenceNumber содержит идентификационный номер для следующего уведомительного сообщения, которое должно быть отправлено сервером через UDP.
Если ResultCode равен E_VERSION_MISMATCH (0×8hhhhhhh), то не было присоединения к сеансу, и действительным является только поле SupportedProtocolVersion. Если ResultCode равен E_TOO_MANY_CONNECTIONS (0×8hhhhhhh), то не было присоединения к сеансу, и SupportedProtocolVersion, ClientSequenceNumber и NotificationSequenceNumber не являются действительными.
Сообщение с запросом GetActiveTitleId
Это сообщение отправляется из содействующего устройства в консоль для запроса идентификатора активного фрагмента на консоли.
Ответное сообщение GetActiveTitleId
Это сообщение отправляется в содействующее устройство в/из консоли в ответ на сообщение с запросом GetActiveTitleId и указывает исполняющийся в настоящее время фрагмент.
Сообщение с запросом LaunchTitle
Это сообщение отправляется из содействующего устройства в консоль для запуска фрагмента с заданным аргументом командной строки.
TitleId является идентификатором фрагмента на консоли для фрагмента, исполняющегося в настоящее время на консоли.
Поле LaunchParameter обычно идентифицирует контент, который должен быть воспроизведен после запуска фрагмента. Точная интерпретация этого поля является индивидуальной для фрагмента.
Ответное сообщение LaunchTitle
Это сообщение отправляется в содействующее устройство в/из консоли для указания на успех/неудачу запуска фрагмента.
Сообщение с запросом SendInput
Поле ValidFieIds имеет значение 0×01, если запрос содержит нажатие кнопки (keystroke), 0×02, если запрос содержит команду "подвод головки" (seek), и 0×03, если он содержит и то и другое. VirtualKey является идентичным своему определению в XINPUT_KEYSTROKE. SeekPosition используется для передачи команды "подвод головки" (seek). Если это сообщение с запросом НЕ указывает "подвод головки", то это поле может иметь значение
Ответное сообщение SendInput
Это сообщение отправляется в содействующее устройство в/из консоли для указания на успех/неудачу операции SendInput.
Сообщение с командой GetMediaAndTitleState
Это сообщение отправляется из содействующего устройства в консоль для запроса состояния мультимедиа на консоли.
Ответное сообщение GetMediaAndTitleState
Если ResultCode равен S_OK (0), и TransportState не равно SCOURTRANSPORTSTATE_NOMEDIA, то другие поля состояния мультимедиа (Duration, Position, MediaAssetId) все являются действительными. Если ResultCode равен S_OK (0), и TransportState равно SCOURTRANSPORTSTATE_NOMEDIA, то на консоли не существует текущих мультимедиа, и остальные значения состояния мультимедиа не определены.
Сообщение NonMediaTitleStateNotification
Сообщение NonMediaTitleStateNotification указывает на то, что в настоящее время на консоли исполняется фрагмент на консоли с поддержкой не мультимедиа (например, игра). Сообщение NonMediaTitleStateNotification отправляется консолью через UDP-вещание, когда:
1. Исполняется фрагмент с поддержкой не мультимедиа (например, игра). И
2. Начиная с интервала обновления (10 секунд) не было отправлено ни NonMediaTitleStateNotification, ни MediaTitleStateNotification. ИЛИ запущен фрагмент с поддержкой не мультимедиа.
Это сообщение НЕ требуется отправлять из консоли в облако, поскольку изменение фрагмента обеспечивает повторную аутентификацию по отношению к облаку, при которой передается идентификатор фрагмента. Это сообщение может быть отправлено из облака в содействующие устройства.
Сообщение MediaTitleStateNotification
Сообщение MediaTitleStateNotification указывает на то, что в настоящее время на консоли исполняется фрагмент на консоли с поддержкой мультимедиа (например, (фрагмент), относящееся к услуге потокового видео). Это сообщение передает как идентификатор фрагмента на консоли, а также текущий идентификатор контента, так и состояние указателя воспроизведения.
Сообщение MediaTitleStateNotification отправляется консолью через UDP-вещание, когда:
1. Исполняется фрагмент с поддержкой мультимедиа (например, игра). И
2. Начиная с интервала обновления (10 секунд) не было отправлено ни NonMediaStateTitleNotification, ни MediaTitleStateNotification. ИЛИ запущен фрагмент с поддержкой мультимедиа, ИЛИ фрагментом обработана команда управления механизмом протяжки (например, воспроизведение, стоп).
Сообщение MediaTitleStateNotification отправляется консолью в облако, когда:
1. Исполняется фрагмент с поддержкой мультимедиа (например, игра). И
2. Начиная с интервала обновления (30 секунд) не было отправлено ни NonMediaTitleStateNotification, ни MediaTitleStateNotification. ИЛИ запущен фрагмент с поддержкой мультимедиа, ИЛИ фрагментом обработана команда управления механизмом протяжки (например, воспроизведение, стоп).
Это сообщение может быть отправлено из облака в содействующие устройства.
Если TransportState не равно SCOURTRANSPORTSTATE_NOMEDIA, то другие поля состояния мультимедиа (Duration, Position, MediaAssetId) являются действительными. Если TransportState равно SCOURTRANSPORTSTATE_NOMEDIA, то на консоли не существует текущих мультимедиа, и остальные значения состояния мультимедиа не определены.
Обмен информацией между облаком и консолью
Когда пользователь подсоединяется к консоли, консоль представляет отчет с информацией пользователя в облако для того, чтобы облако могло знать о том, кто подсоединен к консоли. Консоль также сообщает облаку о IP-адресе его локальной подсети. Когда пользователь выходит из системы, консоль представляет отчет в облако.
Модель уведомления
Для объявления о некоторых изменениях на консоли, например, изменении фрагмента, изменении состояния мультимедиа и так далее, в ней может использоваться одноадресный подход. Для выполнения этого может использоваться сокет, установленный между устройством и консолью.
На стороне содействующего устройства, средство уведомления может обеспечивать библиотеку времени исполнения.
Соответственно, связывающий модуль может регистрировать любые события, которые его интересуют, и когда эти события происходят, уровень среды исполнения может уведомлять приложение о них.
Библиотека времени исполнения на стороне устройства
Библиотека времени исполнения может быть использована на каждом из поддерживаемых устройств.
Ниже приведены иллюстративные API, которые могут поддерживаться:
1. bool JoinSession()
Этот API может соединять устройство с хостом консоли, задаваемым "hostIPAddress".
Возвращаемое значение: Возвращает TRUE, если соединение хорошее. Иначе возвращает false.
Образец использования: JoinSession ();
После успешного соединения в пару из облака, он может получить IP-адрес локальной подсети консоли. Он также получает из облака защитный ключ, который он может использовать для защиты обмена информацией с консолью.
2. DisconnectSession ()
Этот API может завершить соединение между вашим устройством и в данный момент подключенной консолью. Заметим: среда исполнения использует этот API для очистки данных сеанса, закрытия сокета с консолью. Конечно, консоль может знать, когда устройство переходит в спящий режим. Поэтому она может закрыть сокет.
3. TitleInfo [] GetAvailableTitles ()
Этот API может обеспечивать вас списком фрагментов, которые в данный момент поддерживает совместное взаимодействие в гостиной комнате.
Например, ниже приведен один из возможных возвращаемых результатов из этой функции:
4. unsigned int GetCurrentRunningTitleId()
Этот API возвращает titleID исполняющегося в настоящее время фрагмента на в данный момент подключенной консоли.
5. void Launch(unsigned int TitleId, string parameter)
Этот API может запускать приложение, задаваемое "TitleIld, с данным параметром, задаваемым в "parameter".
TitleId - Идентификатор фрагмента приложения, которое вы хотите запустить. Вызывающая программа получает имя дружественного приложения из вызывающей "GetListOfAvailableTitles ()"
Parameter - параметр, который вы хотите передать во фрагмент во время (запуска).
6. void SendControlCommand(CommandType key)
Этот API отправляет команду управления консолью в консоль, подключенную в данный момент.
Эти API используются для обеспечения возможности устройству принимать из консоли события уведомления, например, изменение состояния, изменение фрагмента на консоли и так далее. Несмотря на то, что описаны конкретные примеры, должно быть очевидно, что обсуждение и следующая за ним формула изобретения не обязательно ограничиваются этими примерами.
Иллюстративные система и устройство
На фиг. 6 изображена иллюстративная система 600, которая включает в себя вычислительное устройство 102, описанное со ссылкой на фиг. 1. Иллюстративная система 600 обеспечивает повсеместно распространенные среды для комплексного взаимодействия пользователя, когда на персональном компьютере (PC), телевизионном устройстве и/или мобильном устройстве исполняются прикладные программы. Услуги и приложения исполняются по существу аналогично во всех трех средах для общего взаимодействия пользователя при переходе от одного устройства к следующему во время использования приложения, воспроизведении видеоигры, просмотре видеофильма и так далее.
В иллюстративной системе 600, множество устройств взаимосвязаны через центральное вычислительное устройство. Центральное вычислительное устройство может находится в непосредственной близости от упомянутого множества устройств, или оно может быть расположено удаленно от них. В одном варианте осуществления центральное вычислительное устройство может являться облаком из одного или нескольких серверных компьютеров, которые связаны с упомянутым множеством устройств через некоторую сеть, Internet или другой канал передачи данных. В одном варианте осуществления эта архитектура взаимного соединения обеспечивает доставку функциональности по всему множеству устройств для обеспечения общего и комплексного взаимодействия пользователю упомянутого множества устройств. Каждое из упомянутого множества устройств может иметь разные физические требования и возможности, и для обеспечения возможности передачи взаимодействия в устройство, которое является как специализированным для этого устройства, так и все же общим для всех устройств, центральное вычислительное устройство использует платформу. В одном варианте осуществления создан класс целевых устройств, и взаимодействие специально формируется для родового класса устройств. Класс устройств может быть определен посредством физических особенностей, типов использования или других общих характеристик устройств.
В различных реализациях вычислительное устройство 102 может предполагать множество разных конфигураций, например, для использования как компьютера 602, мобильного телефона 604 и телевизора 60 6. Каждая из этих конфигураций включает в себя устройства, которые могут иметь в общем разные конструкции и возможности, и соответственно вычислительное устройство 102 может быть сконфигурировано согласно одному или нескольким из разных классов устройств. Например, вычислительное устройство 102 может быть реализовано как класс computer 602 устройства, которое включает в себя персональный компьютер, настольный компьютер, многоэкранный компьютер, ноутбук, нетбук и так далее.
Вычислительное устройство 102 также может быть реализовано как класс mobile 604 устройства, которое включает в себя мобильные устройства, например, мобильный телефон, переносной аудиоплейер, переносное игровое устройство, планшетный компьютер, многоэкранный компьютер и так далее. Вычислительное устройство 102 может также быть реализовано как класс television 606 устройства, которое включает в себя устройства, имеющие в общем большие экраны, или подключенные к ним, в случайных средах просмотра. Эти устройства включают в себя телевизоры, телевизионные приставки, игровые консоли и так далее. Способы, описанные в этом документе, могут поддерживаться этими различными конфигурациями вычислительного устройства 102, и не ограничиваются конкретными примерами (способов), описанными в этом документе.
Облако 608 включает в себя платформу 610 для услуг 612, связанных с контентом, и/или представляет ее. Платформа 610 абстрагирует базовую функциональность аппаратных средств (например, серверов) и программных ресурсов облака 608. Услуги 612, связанные с контентом, могут включать в себя приложения и/или данные, которые могут быть использованы во время исполнения компьютерной обработки на серверах, которые являются удаленными от вычислительного устройства 102. Услуги 612, связанные с контентом, могут быть оказаны как услуга по Internet и/или через абонентскую сеть, например, сеть Wi-Fi или сеть сотовой связи. Примеры этого иллюстрируются как включение связывающего модуля 114 в вычислительное устройство. Как описано ранее, эти способы также могут эффективно использовать "облако", например, через реализацию связывающего модуля 124 как части платформы (610), описанной ниже.
Платформа 610 может абстрагировать ресурсы и функции для соединения вычислительного устройства 102 с другими вычислительными устройствами. Платформа 610 также может служить для абстрагирования масштабирования ресурсов для обеспечения соответствующего уровня масштабирования для возникшего спроса на услуги 612, связанные с контентом, которые реализованы через платформу 610. Соответственно, в взаимосвязанном варианте осуществления устройства, реализация функциональности той функциональности, которая описана в этом документе, может быть распределена по всей системе 600. Например, функциональность может быть реализована частично на вычислительном устройстве 102, а также через платформу 610, которая абстрагирует функциональность облака 608.
На фиг. 7 изображены различные компоненты иллюстративного устройства 700, которое может быть реализовано как любой тип вычислительного устройства, описанного со ссылкой на фиг. 1, фиг. 2 и фиг. 4, для реализации вариантов осуществления способов, описанных в этом документе. Устройство 700 включает в себя устройства 702 связи, которые обеспечивают возможность проводной и/или беспроводной передачи данных 704 устройства (например, принятых данных, данных, которые принимаются, данных, планируемых для вещания, пакетов данных упомянутых данных и т.д.). Данные 704 устройства или другое содержимое устройства могут включать в себя установочные параметры конфигурации устройства, мультимедийный контент, хранящийся на устройстве и/или информацию, ассоциированную с пользователем устройства. Мультимедийный конент, хранящийся на устройстве 700, может включать в себя любой тип аудиоданных, видеоданных и/или данных изображения. Устройство 700 включает в себя одно или несколько устройств 706 ввода данных, через которые могут быть приняты любой тип данных, мультимедийный контент и/или вводы, например, выбираемые пользователем вводы, сообщения, музыка, телевизионный мультимедийный контент, записываемый видео контент и любой другой тип аудиоданных, видеоданных и/или данных изображения, принимаемых из любого контента и/или источника данных.
Устройство 700 также включает в себя интерфейсы 708 связи, которые могут быть реализованы как любой один или несколько из последовательного и/или параллельного интерфейса, беспроводного интерфейса, любого типа сетевого интерфейса, модема и как любой другой тип интерфейса связи. Интерфейсы 708 связи обеспечивают соединение и/или каналы связи между устройством 700 и сетью связи, посредством которой другие электронные устройства, вычислительные устройства и устройства связи обмениваются данными с устройством 700.
Устройство 700 включает в себя один или несколько процессоров 710 (например, любой из микропроцессоров, контроллеров и т.п.), которые обрабатывают различные исполнимые компьютером инструкции для управления работой устройства 700 и реализации вариантов осуществления способов, описанных в этом документе. В качестве альтернативы или дополнительно, устройство 700 может быть реализовано посредством любого одного или комбинации из аппаратных средств, программно-аппаратных средств или схем с фиксированными логическими функциями, которые реализованы с использованием схем управления и обработки, которые в общем идентифицированы в блоке 712. Несмотря на то, что не изображено, устройство 700 может включать в себя системную шину или систему передачи данных, которая соединяет различные компоненты внутри этого устройства. Системная шина может включать в себя любое одно или комбинацию из разных шинных структур, например, шины памяти или контроллера памяти, шины периферийных устройств, универсальной последовательной шины и/или процессорной или локальной шины, в которой используется любая из множества шинных архитектур.
Устройство 700 также включает в себя машиночитаемые носители информации 714, например, один или несколько компонентов памяти, примеры которых включают в себя оперативное запоминающее устройство (ОЗУ, RAM), энергонезависимую память (например, любое одно или несколько из постоянного запоминающего устройства (ПЗУ, ROM), флэш-памяти, EPROM, EEPROM и т.д.) и дисковое запоминающее устройство. Дисковое запоминающее устройство может быть реализовано как любой тип магнитного или оптического запоминающего устройства, например, накопитель на жестких дисках, записываемый и/или перезаписываемый компакт-диск (CD), любой тип универсального цифрового диска (DVD) и тому подобное. Устройство 700 может также включать в себя устройство 716 хранения больших объемов информации.
Машиночитаемые носители 714 информации обеспечивают механизмы хранения данных для хранения данных 704 устройства, а также различных приложений 718 устройства и любых других видов информации и/или данных, относящихся к функциональным аспектам устройства 700. Например, операционная система 720 может поддерживаться как компьютерным приложением с машиночитаемыми носителями 714 информации, так и исполняться на процессорах 710. Приложения 718 устройства могут включать в себя диспетчер устройств (например, приложение управления, прикладная программа, модуль управления и обработки сигналов, код, который является "родным" для конкретного устройства, уровень аппаратных абстракций для конкретного устройства и т.д.). Приложения 718 устройства также включают в себя любые системные компоненты или модули для реализации вариантов осуществления способов, описанных в этом документе. В этом примере приложения 718 устройства включают в себя интерфейсное приложение 722 и модуль 724 ввода/вывода, которые изображены как программные модули и/или компьютерные приложения. Модуль 724 ввода/вывода представляет программные средства, которые используются для обеспечения интерфейса с устройством, сконфигурированным для захвата вводов, например, сенсорным экраном, трекпадом, камерой, микрофоном и так далее. В качестве альтернативы или дополнительно, интерфейсное приложение 722 и модуль 724 ввода/вывода могут быть реализованы как аппаратные средства, программные средства, программно-аппаратные средства или любая их комбинация. Кроме того, модуль 724 ввода/вывода может быть сконфигурирован для поддержки устройств со многими входами, например, отдельных устройств для захвата визуального и речевого вводов, соответственно.
Устройство 700 также включает в себя систему 726 ввода-вывода аудио и/или видео, которая обеспечивает аудиоданные в аудио систему 728 и/или обеспечивает видеоданные в систему 730 отображения. Аудиосистема 728 и/или система 730 отображения может включить в себя любые устройства, которые обрабатывают, отображают и/или иным образом предоставляют аудиоданные, видеоданные и данные изображения. Видеосигналы и аудиосигналы могут передаваться из устройства 700 в аудиоустройство и/или в устройство отображения через радиочастотный (RF, radio frequency) канал, S-видеоканал, канал композитного видео, канал компонентного видео, DVI (цифровой видеоинтерфейс), аналоговое аудиосоединение или другой аналогичный канал связи. В одном варианте осуществления, аудиосистема 728 и/или система 730 отображения реализованы как внешние компоненты по отношению к устройству 700. В качестве альтернативы, аудиосистема 728 и/или система 730 отображения реализованы как интегрированные компоненты иллюстративного устройства 700.
Вывод
Несмотря на то, что изобретение было описано посредством специальных выражений для структурных признаков и/или методологических действий, следует понимать, что объем изобретения, определяемый прилагаемой формулой изобретения, не обязательно ограничивается описанными конкретными признаками или действиями. Наоборот, конкретные признаки и действия раскрыты как иллюстративные формы реализации заявленного изобретения.
название | год | авторы | номер документа |
---|---|---|---|
ПРЕДСТАВЛЕНИЕ ПОТОКОВОГО ВИДЕО, НАПРИМЕР, В СРЕДЕ ВИДЕОИГР ИЛИ МОБИЛЬНЫХ УСТРОЙСТВ | 2006 |
|
RU2417113C2 |
СОВМЕСТНОЕ ИСПОЛЬЗОВАНИЕ В РЕАЛЬНОМ ВРЕМЕНИ ВО ВРЕМЯ ТЕЛЕФОННОГО ВЫЗОВА | 2015 |
|
RU2702049C2 |
ВЗАИМОДЕЙСТВИЕ ЦИФРОВОГО ПЕРСОНАЛЬНОГО ПОМОЩНИКА С ПОДРАЖАНИЯМИ И ПОЛНОФУНКЦИОНАЛЬНЫМИ МУЛЬТИМЕДИА В ОТВЕТАХ | 2015 |
|
RU2682023C1 |
АГРЕГИРОВАНИЕ И ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ О СОБЫТИЯХ | 2014 |
|
RU2688268C2 |
ИДЕНТИФИКАЦИЯ И НАЦЕЛИВАНИЕ УСТРОЙСТВ НА ОСНОВЕ ПОДПИСОК НА СЕТЕВЫЕ УСЛУГИ | 2014 |
|
RU2676419C2 |
ГРУППИРОВАНИЕ ЛИЧНЫХ УЧЕТНЫХ ЗАПИСЕЙ ДЛЯ АДАПТАЦИИ ВЕБ-СЕРВИСА | 2012 |
|
RU2608466C2 |
ОБНОВЛЕНИЕ МОДЕЛЕЙ КЛАССИФИКАТОРОВ ПОНИМАНИЯ ЯЗЫКА НА ОСНОВЕ КРАУДСОРСИНГА | 2016 |
|
RU2699587C2 |
СИСТЕМА ОТОБРАЖЕНИЯ ОПОВЕЩЕНИЙ И СПОСОБ ЗАМЕНЫ КОНТЕНТА ОПОВЕЩЕНИЯ С ИСПОЛЬЗОВАНИЕМ ИЗОБРАЖЕНИЙ | 2013 |
|
RU2633597C2 |
ПЛАТФОРМА ПЕРСОНАЛЬНЫХ ЛОГИЧЕСКИХ ВОЗМОЖНОСТЕЙ | 2015 |
|
RU2691223C2 |
УСТРОЙСТВО СВЯЗИ ДЛЯ ОБЕСПЕЧЕНИЯ МУЛЬТИМЕДИА В СЕТИ ГРУППОВОЙ СВЯЗИ | 2003 |
|
RU2335854C2 |
Изобретение относится к технологиям сетевой связи. Технический результат заключается в повышении скорости передачи данных. Способ содержит этапы, на которых поддерживают учетные записи пользователей и данные связывания, которые ассоциируют устройства с соответственной учетной записью пользователя на основе регистрации этих устройств в отношении данной учетной записи пользователя для обнаружения другими устройствами, ассоциированными с этой соответственной учетной записью пользователя, причем данные связывания обеспечивают устройствам, ассоциированным с этой соответственной учетной записью пользователя, возможность быть связанными друг с другом; и обеспечивают формирование соединения между двумя или более из устройств, зарегистрированных в отношении упомянутой соответственной учетной записи пользователя, каковое соединение сконфигурировано для передачи управляющих команд, которые обеспечивают одному из упомянутых устройств возможность управлять операциями другого одного из упомянутых устройств. 3 н. и 17 з.п. ф-лы, 7 ил.
1. Машиночитаемый носитель, на котором сохранены инструкции, которые являются исполняемыми на вычислительном устройстве для выполнения операций, содержащих:
связывание первого вычислительного устройства со вторым вычислительным устройством с использованием данных связывания из сетевой услуги, при этом первое вычислительное устройство и второе вычислительное устройство ассоциированы с учетной записью пользователя, и данные связывания обеспечивают устройствам, ассоциированным с учетной записью пользователя, возможность быть связанными друг с другом, причем первое вычислительное устройство и второе вычислительное устройство ассоциированы с учетной записью пользователя в соответствии с регистрацией первого вычислительного устройства и второго вычислительного устройства для обнаружения другими устройствами, ассоциированными с учетной записью пользователя; и
передачу во второе вычислительное устройство управляющих передач, которые обеспечивают первому вычислительному устройству возможность управлять операциями второго вычислительного устройства.
2. Машиночитаемый носитель по п. 1, в котором операции дополнительно содержат прием от второго вычислительного устройства других управляющих передач, которые управляют операциями первого вычислительного устройства.
3. Машиночитаемый носитель по п. 1, в котором операции дополнительно содержат распознавание аудиоввода через микрофон и, в качестве реакции на данное распознавание, передачу управляющих передач.
4. Машиночитаемый носитель по п. 1, в котором операции дополнительно содержат распознавание, посредством использования камеры, одного или более движений для инициирования операции второго вычислительного устройства и, в качестве реакции на данное распознавание, передачу управляющих передач.
5. Машиночитаемый носитель по п. 1, в котором операции дополнительно содержат определение того, какие из устройств, ассоциированных с учетной записью пользователя, являются доступными для связывания, с использованием данных местоположения, описывающих местоположения этих устройств.
6. Машиночитаемый носитель по п. 1, в котором операции дополнительно содержат инициирование совместного взаимодействия, которое включает в себя:
информирование одного из первого вычислительного устройства и второго вычислительного устройства касаемо текущего состояния при выводе контента на другом из первого вычислительного устройства и второго вычислительного устройства; и
инициирование операций совместного взаимодействия для информированного вычислительного устройства на основе текущего состояния при выводе контента, причем операции совместного взаимодействия включают в себя определение местонахождения соответствующего контента и выполнение Интернет-поиска на основе одной или более сцен, ассоциированных с этим соответствующим контентом.
7. Компьютерно-реализуемый способ связывания устройств, содержащий этапы, на которых:
поддерживают учетные записи пользователей и данные связывания, которые ассоциируют устройства с соответственной учетной записью пользователя на основе регистрации этих устройств в отношении данной учетной записи пользователя для обнаружения другими устройствами, ассоциированными с этой соответственной учетной записью пользователя, причем данные связывания обеспечивают устройствам, ассоциированным с этой соответственной учетной записью пользователя, возможность быть связанными друг с другом; и
обеспечивают формирование соединения между двумя или более из устройств, зарегистрированных в отношении упомянутой соответственной учетной записи пользователя, каковое соединение сконфигурировано для передачи управляющих команд, которые обеспечивают одному из упомянутых устройств возможность управлять операциями другого одного из упомянутых устройств.
8. Способ по п. 7, дополнительно содержащий этап, на котором определяют, какие из устройств, ассоциированных с упомянутой соответственной учетной записью пользователя, являются доступными для связывания.
9. Мобильное устройство, содержащее: память и процессор, которые соответственно выполнены с возможностью хранения и исполнения инструкций для предписания мобильному устройству выполнять операции, содержащие:
прием данных связывания от сетевой услуги, причем данные связывания включают в себя информацию для обеспечения устройствам, ассоциированным с учетной записью пользователя, возможности быть связанными друг с другом;
связывание мобильного устройства с другим вычислительным устройством с использованием данных связывания, причем мобильное устройство и это другое вычислительное устройство ассоциированы с учетной записью пользователя в соответствии с регистрацией мобильного устройства и данного другого вычислительного устройства, так что мобильное устройство и это другое вычислительное устройство являются обнаруживаемыми для других устройств, ассоциированных с учетной записью пользователя;
передачу управляющих данных в упомянутое другое вычислительное устройство, при этом управляющие данные обеспечивают мобильному устройству возможность управлять операциями этого другого вычислительного устройства; и
управление операциями данного другого вычислительного устройства.
10. Мобильное устройство по п. 9, в котором операции дополнительно содержат прием других управляющих данных от упомянутого другого вычислительного устройства, причем эти другие управляющие данные обеспечивают данному другому вычислительному устройству возможность управлять операциями мобильного устройства.
11. Мобильное устройство по п. 9, в котором операции дополнительно содержат передачу управляющих данных в ответ на распознавание того, что взаимодействия не задействуют прикосновение к мобильному устройству.
12. Мобильное устройство по п. 9, в котором операции дополнительно содержат передачу управляющих данных в ответ на распознавание аудиоввода, принятого через микрофон мобильного устройства.
13. Мобильное устройство по п. 9, в котором операции дополнительно содержат передачу управляющих данных в ответ на распознавание того, что аудиоввод, принятый через микрофон мобильного устройства, представляет собой команду от конкретного пользователя.
14. Мобильное устройство по п. 9, в котором операции дополнительно содержат передачу управляющих данных в ответ на распознавание по меньшей мере одного из жеста, представляемого объекта и изображения через камеру мобильного устройства.
15. Мобильное устройство по п. 9, в котором операции дополнительно содержат:
передачу управляющих данных в ответ на идентификацию конкретного пользователя на изображении, захваченном камерой мобильного устройства; и
распознавание того, что одно или более движений, выполняемых этим конкретным пользователем, соответствуют команде инициировать операцию на упомянутом другом вычислительном устройстве.
16. Мобильное устройство по п. 9, в котором операции дополнительно содержат выполнение распознавания лица, включая идентификацию конкретного пользователя из множества пользователей.
17. Мобильное устройство по п. 9, при этом упомянутое связывание мобильного устройства с другим вычислительным устройством обеспечивает возможность совместного взаимодействия, при котором мобильное устройство сконфигурировано в качестве игрового контроллера для управления операциями упомянутого другого вычислительного устройства, ассоциированными с игрой.
18. Мобильное устройство по п. 9, при этом упомянутое связывание мобильного устройства с другим вычислительным устройством обеспечивает возможность совместного взаимодействия, при котором мобильное устройство сконфигурировано выдавать электронный телегид (EPG) на дисплее мобильного устройства и управлять выводом контента на упомянутом другом вычислительном устройстве через взаимодействие с EPG.
19. Мобильное устройство по п. 9, в котором операции дополнительно содержат определение того, что упомянутое другое вычислительное устройство является доступным для связывания, на основе местоположения по меньшей мере одного из мобильного устройства и этого другого вычислительного устройства.
20. Мобильное устройство по п. 9, в котором операции дополнительно содержат определение типа соединения, которое должно быть установлено для связывания мобильного устройства с упомянутым другим вычислительным устройством, на основе информации местоположения касаемо мобильного устройства и этого другого вычислительного устройства.
US 20030055867 A1, 20.03.2003 | |||
US 20060277566 A1, 07.12.2006 | |||
KR 1020050048414 A, 24.05.2005 | |||
US 20060168541 A1, 27.07.2006. |
Авторы
Даты
2017-09-19—Публикация
2012-10-10—Подача