Configuring Object Routing
By default, users open applications on a Microsoft Surface unit by tapping the application preview image in the Launcher menu. You can also set up object routing so that users can find and open applications by using tagged objects.
For example, a user walks up to a Microsoft Surface unit in a resort hotel lobby and places a customer loyalty card on the Microsoft Surface screen. On the screen, the following menu appears next to the loyalty card.
How Object Routing Works
The Microsoft Surface Vision System reads the value of the tag on the loyalty card and checks if the tag is registered with Surface Shell. Then, Surface Shell displays a menu of available applications. A user can tap and start any of the named applications in the object routing menu. If the user slides the tagged object (loyalty card) around the Microsoft Surface screen, the menu follows it and always stays visible as long as the card is on the screen. The menu cannot slide off the screen and out of sight.
If the user taps one of the application icons, the application's preview briefly appears while the application starts. When the application starts, the object's menu disappears and the object begins to interact with the newly opened application (even though the object remains on the screen).
If the user wants to switch to another application that is available from the object's menu, the user taps an access point, lifts the tagged object and then puts it down again (to open the object routing menu), and then taps another application icon from the object's menu.
Users can put tagged objects that are configured for object routing on the screen at any time, whether on an attract application, Launcher, or any Microsoft Surface application. If a user puts the object on Launcher, the object's menu displays but the user can still scroll Launcher and start any application from it.
Object routing still occurs even if an application is not opened through the object routing menu. Also, if an object that is registered for object routing is put on the Microsoft Surface screen while an application that it is registered for is active (that is, running on the Microsoft Surface screen, not just in Launcher), the object routing menu does not appear.
|Multiple users can put multiple tagged objects that are configured for object routing on the screen at the same time. Each tagged object displays the appropriate object routing menu.|
To set up a tagged object for object routing, you must associate applications with the tagged object by using configuration settings. If users place the tagged object on an application that is not associated with the object, the object routing menu displays and the object does not interact with the foreground application.
When you design an application that works with object routing, we strongly recommend that your application use the tag value for a clear and meaningful purpose (such as a visualization that is associated with the tag) after users open the application from the object routing menu. For example, the tag value could correspond to a particular promotion or set of user preferences, or it could act as a game piece.
Tags for Object Routing
Microsoft Surface supports two types of tags that your application can use: byte tags and identity tags.
Byte tags store 8 bits (1 byte) of data, so there are 256 different possible tag values. Byte tags measure 3/4 inch × 3/4 inch, and the Microsoft Surface Vision System can track them reliably at relatively high speeds (over 4 inches per second) as they move across the screen.
Identity tags store 128 bits of data, providing an almost unlimited range of unique tag values. They measure 1” on a side. The maximum speed at which the Surface vision system can track them is much lower than for byte tags; they function best when stationary or nearly so.
Because byte tags are more compact and are faster for the Microsoft Surface Vision System to recognize, they are the best choice for an object-driven application if the number of different tags that the application needs to distinguish is relatively small (for example, identifying pieces in a board game). However, because there are only 256 possible values, byte tags might not be appropriate for some applications. If several applications on a particular Microsoft Surface unit were created by different developers, you must also consider tag value collision for byte tags. For tips about how to distinguish between errors in an application's object routing and errors from duplicate tag values, see Troubleshooting Object Routing.
If your application must distinguish among many unique values (for example, if the tag represents a unique customer ID from a large database of users), the application should use identity tags (and some form of authentication).
If your application has an installer, the installer should add the correct information into the TagInfo registry hive and the ApplicationName.XML file to enable object routing.
Setting Up Object Routing
There are several steps to successfully set up and deploy object routing on a Microsoft Surface unit.
To set up object routing
Install at least one application that is configured to use object routing.
The application should also provide tag visualization (through the TagVisualizer or TagVisualization classes from the Microsoft Surface SDK or through another programmatic means).
Include the <Launch> tag in the application's XML registration file (ApplicationName.XML) file to properly register the application with Surface Shell. For more information, see Registering Applications.
In the registry, enable object routing by setting the EnableObjectRouting, EnableObjectRoutingByteTags, and EnableObjectRoutingIdentityTags entries appropriately in the global Shell/ObjectRouting hive. For more information, see Registry Keys.
Important Ideally, the application developers should create an installer that installs the application, creates the correct entries in the ApplicationName.xml file, and creates and sets the correct registry keys. If so, you just need to install the application and test it by using the appropriate tagged object.
In the registry, define the shape data that is associated with each tag series or type by setting the ByteTags and IdentityTags entries in the TagInfo\v1.0 hive. For more information, see Registry Keys.
An application installer should also check for existing ApplicationName.xml file entries and warn you if there are conflicts so that you can determine the best action. Conflicts are more common with byte tags. If you cannot resolve the conflict, you should turn off object routing for that tag type.
Tagged Object Scenarios for Microsoft Surface
There are several factors that affect the behavior of a tagged object. The following table describes several scenarios for tagged objects and how the Microsoft Surface user experience changes.
|Tagged object configuration||Response to the tagged object on the Microsoft Surface screen|
An application is programmed to react to a tag.
The associated ApplicationName.xml file does not contain a <Tags> entry.
In the global Shell registry hive on the Microsoft Surface unit, in the ObjectRouting key, EnableObjectRouting is set to 0 and the appropriate tag entry (EnableObjectRoutingByteTags or EnableObjectRoutingIdentityTags) is also set to 0.
If the application is not currently active, nothing happens. The Microsoft Surface software ignores the tag values and handles the object as a blob (just like a hand).
If the application is active, the Microsoft Surface software recognizes the tag, and the application reacts to the tagged object in whatever manner it was programmed to react.
An application is programmed to react to a tag.
The application's ApplicationName.xml file includes the <Tags>, <Actions>, <Launch>, and <IdentityTag> or <ByteTag> entries.
The registry on the Microsoft Surface unit includes the bounding box and offset information for this tagged object. In addition, in the global Shell hive, in the ObjectRouting key, EnableObjectRouting is set to 1 (enabled) and the appropriate tag entry (EnableObjectRoutingByteTags or EnableObjectRoutingIdentityTags) is also set to 1.
If Surface Shell (or any application other than the application that is programmed to react to the tag) are active, the Microsoft Surface software displays a shadow underneath the tagged object that matches the shape and size of the bounding box and displays an icon that represents the application on a tether that is anchored to the center of the shadow. A user can tap the icon to open the application.
If the application that is programmed to react to this tag is active, the Microsoft Surface software does not show the shadow, tether, and icon, and the application reacts to the tag like it is programmed to.
Three applications are programmed to react to a tag.
The ApplicationName.xml files for the first and second applications include the <Tags>, <Actions>, <Launch>, and <IdentityTag> or <ByteTag> entries.
The ApplicationName.xml file for the third application includes the <Tags>, <Actions>, and <IdentityTag> or <ByteTag> entries, but it does not include the <Launch> entry. (This application is registered with Surface Shell but it is not registered with object routing.)
The registry on the Microsoft Surface unit registry includes the bounding box and offset information for this tagged object. In addition, in the global Shell hive, in the ObjectRouting key, EnableObjectRouting is set to 1 (enabled) and the appropriate tag entry (EnableObjectRoutingByteTags or EnableObjectRoutingIdentityTags) is also set to 1.
If Surface Shell (or any application other than the applications that are programmed to react to the tag) are active, the Microsoft Surface software displays a shadow underneath the tagged object that matches the shape and size of the bounding box and displays icons that represent the first and second applications on tethers that are anchored to the center of the shadow. Users can tap these two icons to open the first and second applications. An icon for the third application does not appear.
If any of the three applications that are programmed to react to this tag are active, the Microsoft Surface software does not show the shadow, tethers, and icons, and the applications react to the tag like it is programmed to.
A Microsoft Surface 1.0 application (application 1) uses a particular tag value and is installed on a Microsoft Surface unit. Then, you install a Microsoft Surface 1.0 SP1 application (application 2) that uses the same tag value and that is registered for object routing.
Regardless of whether you place a tagged object for application 1 or a tagged object for application 2 object on the Microsoft Surface screen, the Microsoft Surface software displays the object routing menu that is associated with application 2.
If both applications use the same tag value, object routing behavior for Microsoft Surface 1.0 SP1 takes precedence over object routing behavior for Microsoft Surface 1.0.
Developer and Administrator Responsibilities
To set up and configure object routing on a Microsoft Surface unit in a venue, both developers and administrators have specific responsibilities.
If you are the application project manager or coordinator:
Produce the tagged object and make sure that the appropriate tags are printed on the object or positioned on the object according to the developer's placement instructions.
If you are the developer:
Add the object's shape, tag orientation, and placement information in the registry. (We recommend that you create an application installer that checks for object routing registry keys and warns the administrator before it overwrites these settings.)
Provide the appropriate tag visualizations so the application reacts to tagged values.
Add the appropriate XML elements to the application's XML registration file to register for object routing.
If you are an administrator:
If the developer did not create an installer, or if you want to add a previously created application to the object routing menu, add the object's shape, tag orientation, and placement information in the registry and add the appropriate XML elements to the application's XML registration file.
Turn the object routing functionality on or off on each Microsoft Surface unit.
Turn object routing on or off for individual byte tags and identity tags on each Microsoft Surface unit.
Understand the deployment environment so that you can choose correctly if an application installer asks for permission to overwrite registry metadata.
Did you find this information useful? Please send us your suggestions and comments.
© 2009 Microsoft Corporation. All rights reserved.