330 likes | 420 Views
Discover how to reach users on Windows Vista using auxiliary display devices. Learn about platform integration, gadget development in C++ and C#, and designing considerations. Explore scenarios, user control features, and gadget installation. Develop content for devices using common data formats and manage gadget display for enhanced user interaction.
E N D
Windows Vista: Reaching Your Users When Their Machine Is Off, Using Auxiliary Display Devices Sriram Viji, Program Manager Dan Polivy, Software Design Engineer Session PRS308 Microsoft Corporation
Agenda • Platform introduction • Writing gadgets using C++ and COM • Writing gadgets using C# • Design considerations
Devices for Windows SideShow • Laptop in-lid displays • Connected and online displays • Remote or detachable devices
Gadget Platforms • Windows SideShow • Extends data from the PC to devices • COM and C++ APIs • Windows Sidebar • Shows information on the client • DHTML scripting and libraries/WPF • Start.com • Web based with AJAX like architecture • Integration with client platform
Platform Benefits • Increase application reach and visibility • Provide user value • Easy to write gadgets
Sample Scenarios • Cached/Offline scenarios: Calendar, driving directions, e-mail, weather, traffic • Make use of data that is cached on a device • User can interact when the PC is on or off • Live/Online scenarios: Media control, presentation control, instant messaging, notifications • Data and events sent during user interaction • User can interact when the PC is on
User Control • User selects gadgets to view on device Installed Devices Installed Gadgets
Software Architecture Gadget Auxiliary Display API Inter-process communication Auxiliary Display Driver Transport Channel Display Device
Gadget Installation • Friendly name • Icon • Endpoint • Specifies data format between gadget and device Icon Friendly Name [HKCU\SOFTWARE\Microsoft\AuxiliaryDisplay\Applications\{APPLICATION_ID}] "FriendlyName"=“Application name” ; User friendly name “Icon”=myapplication.dll,0 ; 16,32,48 px icons "OnlineOnly"=dword:00000000 ; Is it “Live” or “Cached”? "Endpoints"=MULTI_SZ:Endpoint GUID(s) ; Data format(s) supported
Registering A Session • Create an instance of the Registrar • Register application ID and data format // Create the AuxiliaryDisplayRegistrar object that // enables us to talk to the platform. hr = ::CoCreateInstance(CLSID_AuxiliaryDisplayRegistrar, NULL, CLSCTX_INPROC_SERVER, IID_IAuxiliaryDisplayRegistrar, (LPVOID*)&m_pRegistrar); if (SUCCEEDED(hr)) { // Register application with the platform hr = m_pRegistrar->Register(MY_APPLICATION_ID, AUX_ENDPOINT_SIMPLE_CONTENT_FORMAT, &m_pContentMgr); }
Content Management Periodic updates (i.e. update “next session”) Response to action (i.e. send session details) User interaction (i.e. select session to attend) Startup: send initial content Update content Gadget Device User interacts with device (i.e. get details on a session)
Creating Content • Developer implements IAuxiliaryDisplayContent • Returns a content ID (unsigned 32-bit value) • Provides the content as an array of bytes (opaque) • Allows developer to send different content to each device based on the device’s capabilities HRESULT get_ContentId( PCONTENT_ID out_pcontentId ); HRESULT get_DifferentiateContent( BOOL * out_pfDifferentiateContent ); HRESULT GetContent( IAuxiliaryDisplayCapabilities * in_pICapabilities, DWORD * out_pdwSize, BYTE ** out_ppbData );
Content Format • Gadgets and devices need a common format to exchange data • Simple Content Format • New, Documented XML data format for which we are encouraging device support • Provides simple layout and interaction for devices with varying capabilities • Functions in both “PC on” (live/online) and “PC off” (cached) modes • iCalendar • Allows transfer of appointments in a standard format • Presentation is determined by the device; thus the calendar display and interaction can be richer than by using the Simple Content Format
Glance Content • Glance or Overview Content • Content id of 0 reserved for overview content • Simple text string • Easy to support on all devices, regardless of actual content format used Glance Content
Simple Content Format • Menu Page • Provides a list of items • Selection causes navigation • Can be used as a context menu on menu items and content pages <body> <menu id=“1” title="Image List"> <item target="2">Sunset</item> <item target="3">Winter</item> <item target="4">Water lilies</item> <item target="5">Blue hills</item> </menu> </body>
Simple Content Format • Layout Page • Provides flow layout • Support for text and images • Simple text formatting (emphasis, color, alignment) • Button mapping to override default navigation action <body> <content id=“2”> <txt align="c">Sunset</txt> <txt>Driving on the coastal highway is fun</txt> <img id=“10" alt="[sunset.jpg]"/> </content> </body>
Simple Content Format • Dialog Page • Provides simple dialog box with icon, title, message, buttons • User input on a decision • Icon available for visual clue <body> <dialog id="200" title="Image rotate"> <txt>Your image will lose some quality when rotated. Would you like to proceed?</txt> <btn target="201">Yes</btn> <btn target="202">No</btn> </dialog> </body>
Sending/Updating Content • Content manager allows applications to • Add/Update content on devices • Remove content IAuxiliaryDisplayContent* pIContent; CMyContent pContent = new CMyContent(1 /* CONTENT_ID */, “Content”); hr = pContent->QueryInterface(IID_IAuxiliaryDisplayContent, &pIContent); // Add a content object that implements IAuxiliaryDisplayContent hr = m_pContentMgr->Add(pIContent); // Remove Content ID “1” from all devices hr = m_pContentMgr->Remove(1); // Remove all content from devices hr = m_pContentMgr->RemoveAll();
Platform Events • ISV implements IAuxiliaryDisplayEvents interface • Four events • ContentMissing • Occurs when the device requires a specific piece of content it does not have cached • ApplicationEvent • Generated due to user interaction with the device, i.e. • User selection on a list item • Navigation to a specific page of content • Device Added/Device Removed • Includes both PnP events, as well as “permission change” events generated from enabling/disabling a gadget in the CPL
Simple Content Format Events • Events propagated to PC gadget (when on) as user navigates content on device • NavigationEvent • Triggered upon any navigation starting on a content or dialog page • MenuEvent • Triggered upon selection of an item off a menu page • ContextMenuEvent • Triggered upon any navigation off of a context menu
Device Capabilities • Developer can retrieve a collection of IAuxiliaryDisplayCapabilities interfaces from the Content Manager • Capabilities interface is external representation of a device • Can query device properties, such as: • Screen width/height • Color depth • Current language • IHV extensible • Interface also provided on some events to identify initiating device
Notifications • IAuxiliaryDisplayNotificationManager interface mirrors the content manager • Show/Revoke/RevokeAll • IAuxiliaryDisplayNotification CoCreate’able by ISV • Properties • Title • Message • Icon • Expiration time
Managed Code • Accessible through standard COM Interop • Same functionality available • Sample code provided for interop
Design Considerations • Gadget lifetime management • User expects device to be up to date • Missing content needs to be provided • Options • Background process (as part of an existing system tray or any other process) • Add on to an existing application
Design Considerations • Device Support • Support wide range of device capabilities • Recommendations • Provide useful glance content • Ensure accurate data for text only displays • If possible, differentiate content for displays • Performance • Mobile PCs are a big target – conserve battery • Selectively update content
Summing Up • New opportunities and new scenarios • Value-add for existing applications • Tools and samples to get started
Mobile PC and Tablet PCBreakout Sessions • PRS308 - Windows Vista: Reaching Your Users When Their Machine Is Off, Using Auxiliary Display DevicesWednesday, 1:45 PM - 3:00 PM • PRS315 - Windows Vista Tablet PC: Advances in Creating Tablet Enabled ApplicationsWednesday, 5:00 PM - 6:15 PM • DAT317 - Windows Vista: Centralizing Data Synchronization with the New Sync CenterThursday, 11:30 AM - 12:45 PM • FUN319 - Windows Vista: Developing Power-Aware ApplicationsThursday, 5:15 PM - 6:30 PM • PNL12 - Future Directions in Mobile Device HardwareFriday, 1:00 PM- 2:30 PM
Get involved with Mobile PC and Tablet PC at PDC! • Hands-On-Labs Use the Tablet PCs located in the Presentation Track Section • PRSHOL26-Mobile PC: Getting Started with Auxiliary Displays (C++ and C#) - Provide your users with instant access to data—even in powered-down states—with Auxiliary Display devices on Windows Vista. • FUNHOL09 - Mobile PC: Building Energy Smart Windows Vista Applications (C#) - Learn how to be compatible with Windows Vista’s new Sleep behavior and learn how to integrate with the power policy engine to build a more robust application. • PRSHOL31&PRSHOL32-Tablet PC: Getting Started with the Tablet PC Platform (C# and Visual Basic .NET) - Create ink-enabled forms to empower your Tablet PC customers by using ink controls, the InkPicture object, and other APIs from the Windows XP Tablet PC Edition SDK 1.7. • PRSHOL30-Tablet PC: Advanced Development with Stylus Input APIs (C#) - Enhance performance and rendering by using the Tablet PC Stylus Input API to intercept and modify stylus data in real time. • Get spotted with this button for a chance to win a Tablet PC!
Resources • Windows SideShow at PDC • Hands on Lab: PRSHOL26 Mobile PC: Getting started with Auxiliary Displays / Windows SideShow • Booth: Prototype device and other concepts • PRS Track lounge: Wed 3-5pm • Related: PRS332 Developing Windows Sidebar GadgetsThu 3:45pm – 5:00pm 402AB • After PDC • Gadgets: http://microsoftgadgets.com/sideshow.aspx • Mobile PC and Tablet PC Forum under Windows Vista Development : http://forums.microsoft.com/msdn/ • Business Contact: mobaux@microsoft.com • Windows Vista Beta and SDK: http://msdn.microsoft.com/windowsvista/
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.