330 likes | 461 Views
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#
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.