Windows Phone 7Guide for AndroidApplicationDevelopers  Microsoft  6/6/2011  Rev 1.0
Windows Phone 7 Guide for Android Application DevelopersAbout this Document .................................................
Windows Phone 7 Guide for Android Application DevelopersChapter 5: A Comparison of Application Life Cycles in Windows Phon...
Windows Phone 7 Guide for Android Application DevelopersAbout this DocumentIf you have been developing Android application...
Windows Phone 7 Guide for Android Application DevelopersChapter 1: Introducing WindowsPhone 7 Platform to AndroidApplicati...
Windows Phone 7 Guide for Android Application Developers          o   Accelerometer          o   Compass          o   Prox...
Windows Phone 7 Guide for Android Application DevelopersComparing the Programming Stack of Windows Phone 7with AndroidThe ...
Windows Phone 7 Guide for Android Application DevelopersAndroid and Windows Phone 7 Stacks Side by SideThis table compares...
Windows Phone 7 Guide for Android Application DevelopersBase ServicesWP7 Base Class Library classes roughly correspond to ...
Windows Phone 7 Guide for Android Application DevelopersAndroid applications                     Windows Phone 7 counterpa...
Windows Phone 7 Guide for Android Application Developerscamera. Microsoft provides a push notification service, called Mic...
Windows Phone 7 Guide for Android Application DevelopersChapter 2: User Interface GuidelinesMicrosoft‟s Windows Phone 7 (W...
Windows Phone 7 Guide for Android Application DevelopersDesigning the Application InterfaceWhile the design of the WP7 use...
Windows Phone 7 Guide for Android Application DevelopersApplication User Interface DesignWhile there are similarities in t...
Windows Phone 7 Guide for Android Application DevelopersAndroid control          Windows Phone 7 control                  ...
Windows Phone 7 Guide for Android Application DevelopersAndroid control            Windows Phone 7 controlZoomControlTabHo...
Windows Phone 7 Guide for Android Application DevelopersNotificationsBoth Android and WP7 have notification services, but ...
Windows Phone 7 Guide for Android Application DevelopersTool and Tab Bar vs. Application BarWP7 features a versatile appli...
Windows Phone 7 Guide for Android Application DevelopersWindows Phone 7 Frame and Page StructureEach WP7 application has a...
Windows Phone 7 Guide for Android Application DevelopersPage Structure of Windows Phone 7 ApplicationThe following diagram...
Windows Phone 7 Guide for Android Application DevelopersApplication TemplatesEclipse does not provide the project template...
Windows Phone 7 Guide for Android Application DevelopersOther Resources that you may find useful:      Application Page M...
Windows Phone 7 Guide for Android Application DevelopersChapter 3: The Developer andDesigner ToolsWith the release of the ...
Windows Phone 7 Guide for Android Application Developers (coding) Testing /          Testers        Android          Windo...
Windows Phone 7 Guide for Android Application Developersdebugger. You can access both the compiler and the debugger either...
Windows Phone 7 Guide for Android Application DevelopersThe UI Design ToolsThe WP7 developer tools include:      Expressi...
Windows Phone 7 Guide for Android Application Developers   3. Below Properties, click TextBox1, and enter txtItem to chang...
Windows Phone 7 Guide for Android Application DevelopersNote: You can use the context menus to add the event handlers or t...
Windows Phone 7 Guide for Android Application DevelopersExpression Blend is for UI designers and Visual Studio Design is f...
Windows Phone 7 Guide for Android Application DevelopersVisual StudioVisual Studio has a simple to use, full-featured, and...
Windows Phone 7 Guide for Android Application Developers   7. Enter the following code in the btnAdd_click method:       i...
Windows Phone 7 Guide for Android Application DevelopersCode Snippets in Visual StudioCode Snippets in Visual Studio is eq...
Windows Phone 7 Guide for Android Application DevelopersVisual Studio EditorVisual Studio editor is customizable. Visual S...
Windows Phone 7 Guide for Android Application DevelopersThe WP7 Emulator is like the Android Simulator. However, these dif...
Windows Phone 7 Guide for Android Application Developers    4. Launch the debugger again using F5. When the application lo...
Windows Phone 7 Guide for Android Application Developers   3. To ensure that the control does not enter the if statement, ...
Windows Phone 7 Guide for Android Application DevelopersA Note about DebuggingYou will observe that you can easily debug a...
Windows Phone 7 Guide for Android Application DevelopersSummaryIn this chapter we looked at the Windows Phone 7 Developer ...
Windows Phone 7 Guide for Android Application DevelopersChapter 4: C# programmingThis chapter discusses the C# features th...
Windows Phone 7 Guide for Android Application DevelopersManaged ProgrammingWP7 supports managed programming in C# and VB.N...
Windows Phone 7 Guide for Android Application DevelopersA Comparison between C# Features and Java ClassesClass Declaration...
Windows Phone 7 Guide for Android Application DevelopersC# is a strongly typed language like Java. The types must be speci...
Windows Phone 7 Guide for Android Application Developersint a = 5;int b = 8;Foo (ref a, b);//a is zero and b is still 8C# ...
Windows Phone 7 Guide for Android Application DevelopersThe following code sample shows another example of method overload...
Windows Phone 7 Guide for Android Application Developers         public Rectangle(double l, double w) // one constructor u...
Windows Phone 7 Guide for Android Application Developers          }          }              static void Main(string[] args...
Windows Phone 7 Guide for Android Application DevelopersLike Java, C# uses a static modifier to denote class level methods...
Windows Phone 7 Guide for Android Application Developers  Cube c = new Cube(4.0);  SecondProgram.printVolume(c);StructsC# ...
Windows Phone 7 Guide for Android Application DevelopersObject Lifecycle: Creation and Deletion of ObjectsThe memory manag...
Windows Phone 7 Guide for Android Application Developerstry      {            //block of code      }      //Most specific:...
Windows Phone 7 Guide for Android Application DevelopersA Comparison of Important Class LibrariesStringsC# provides a comp...
Windows Phone 7 Guide for Android Application DevelopersArraysArrays in C# are almost like arrays in Java.Java Feature    ...
Windows Phone 7 Guide for Android Application DevelopersJava                 C#                                Notes      ...
Windows Phone 7 Guide for Android Application DevelopersThe New features of C#This section covers the following:      Gen...
Windows Phone 7 Guide for Android Application DevelopersOperator OverloadingOperator Overloading allows you to define the ...
Windows Phone 7 Guide for Android Application DevelopersDelegatesThe functionality of delegates in C# is like the function...
Windows Phone 7 Guide for Android Application Developersto log the message to the file. Delegates achieve indirection whil...
Windows Phone 7 Guide for Android Application DevelopersComparing API Documentation ToolsJDK contains an API documentation...
Windows Phone 7 Guide for Android Application Developers   4. In the left pane, click Build.                              ...
Windows Phone 7 Guide for Android Application Developers        5. Select the XML documentation file check box.        6. ...
Windows Phone 7 Guide for Android Application DevelopersIn a code comment block, when you press the < key to start a new t...
Windows Phone 7 Guide for Android Application DevelopersIn this chapter, we looked at C# programming from the perspective ...
Windows Phone 7 Guide for Android Application DevelopersChapter 5: A Comparison ofApplication Life Cycles in WindowsPhone ...
Windows Phone 7 Guide for Android Application Developersapplication state is preserved as a user navigates across applicat...
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Windows Phone 7 Guide for Android Application Developers
Upcoming SlideShare
Loading in...5
×

Windows Phone 7 Guide for Android Application Developers

1,588

Published on

If you have been developing Android applications and are interested in building your applications for Windows Phone 7, this guide is for you.
The guide covers what you need to know to add Windows Phone 7 development to your skill set, while leveraging what you have already learned building Android applications.

Published in: Technology, Education
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
1,588
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
48
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Windows Phone 7 Guide for Android Application Developers

  1. 1. Windows Phone 7Guide for AndroidApplicationDevelopers Microsoft 6/6/2011 Rev 1.0
  2. 2. Windows Phone 7 Guide for Android Application DevelopersAbout this Document ............................................................................ 4Target Audience ................................................................................... 4Conventions Used in this Document ........................................................ 4Chapter 1: Introducing Windows Phone 7 Platform to Android ApplicationDevelopers .......................................................................................... 5 The Developer Tools ........................................................................... 5 Windows Phone 7 Architecture ............................................................. 5 Comparing the Programming Stack of Windows Phone 7 with Android ...... 7 Summary ........................................................................................ 11 Related Resources ............................................................................ 11Chapter 2: User Interface Guidelines..................................................... 12 Designing the Application Interface .................................................... 13 Application User Interface Design ....................................................... 14 Comparing Windows Phone 7 and Android Navigation ........................... 18 Windows Phone 7 Frame and Page Structure ....................................... 19 Application Templates ....................................................................... 21 Summary ........................................................................................ 21 Related Resources ............................................................................ 21Chapter 3: The Developer and Designer Tools ........................................ 23 A Comparison of Android and Windows Phone 7 Tools .......................... 23 Development Life Cycle and Windows Phone 7 Developer Tools ............. 24 The UI Design Tools ......................................................................... 26 Building Applications ........................................................................ 33 Debugging ...................................................................................... 34 Summary ........................................................................................ 38Chapter 4: C# programming ................................................................ 39 Managed Programming ..................................................................... 40 A Comparison between C# Features and Java Classes .......................... 41 A Comparison of Important Class Libraries .......................................... 51 The New features of C# .................................................................... 54 Comparing API Documentation Tools .................................................. 58 NDoc .............................................................................................. 58 NDocs vs. Javadoc ........................................................................... 61 Summary ........................................................................................ 61 Related Resources ............................................................................ 62 2
  3. 3. Windows Phone 7 Guide for Android Application DevelopersChapter 5: A Comparison of Application Life Cycles in Windows Phone 7 andAndroid ............................................................................................. 63 Multitasking in Android and Windows Phone 7...................................... 63 Tombstoning of Applications in Windows Phone 7 ................................. 64 Life Cycle of a Windows Phone 7 Application ........................................ 64 Role of Handlers in an Application‟s Life Cycle ...................................... 66 Comparing Life-cycle Methods ........................................................... 68 Tombstoning and Windows Phone 7 Life Cycle ..................................... 69 Summary ........................................................................................ 74 Related Resources ............................................................................ 74Chapter 6: Storing Data and Preferences ............................................... 75 Isolated Storage in Windows Phone 7 ................................................. 75 Use Cases ....................................................................................... 78 Managing the IsolatedStorage Space .................................................. 79 Why Windows Phone 7 Does Not Use External Storage ......................... 80 Managing Content across Applications ................................................ 81 Comparing Intent API with Launchers and Choosers API ....................... 82 Summary ........................................................................................ 85 Related Resources ............................................................................ 85Chapter 7: XML Parsing in Windows Phone 7 and Android ........................ 86 XML Parsing in Windows Phone 7 ....................................................... 86 XML Namespaces for Windows Phone 7 ............................................... 86 XML Parsing Using XMLReader ........................................................... 86 TRAVERSING XML ............................................................................ 95 Summary ........................................................................................ 99 Related Resources ............................................................................ 99 3
  4. 4. Windows Phone 7 Guide for Android Application DevelopersAbout this DocumentIf you have been developing Android applications and are interested in buildingyour applications for Windows Phone 7, this guide is for you.The guide covers what you need to know to add Windows Phone 7 development toyour skill set, while leveraging what you have already learned building Androidapplications.Target AudienceThis document is for Android application developers willing to develop applicationsfor Windows Phone 7.Conventions Used in this DocumentTerm AbbreviationWindows Phone 7 WP7Application Programming APIInterfaceIntegrated Development IDEEnvironment 4
  5. 5. Windows Phone 7 Guide for Android Application DevelopersChapter 1: Introducing WindowsPhone 7 Platform to AndroidApplication DevelopersEver since the release of Windows Phone 7 (WP7) platform, developers from aroundthe globe rushed to develop applications for this platform. Now, WP7 devices areavailable with manufacturers all over the world. A large number of applications arealready available in the WP7 marketplace.For WP7, Microsoft went back to the drawing board to figure out what phone usersreally want, and built a phone from the ground up. The operating system, the userexperience, and the application development platform have all been engineeredwith users in mind. The revenue opportunities in the Windows Phone marketplace,accompanied by a great set of development tools, make WP7 a very attractivedestination for developers to build applications and games.The Developer ToolsMicrosoft recommends using these tools for WP7 application development. Thistoolset is free and can be downloaded from here. The toolset includes:An IDE (for developers): Visual Studio Express for Windows Phone  A user interface design tool (for designers): Express Blend for Windows Phone  Silverlight for Windows Phone and XNA Game Studio for Windows Phone  Windows Phone 7 emulator to test and debug applicationsThe tools are designed to let you develop consumer applications, businessapplications, and games.Windows Phone 7 ArchitectureWP7 utilizes a layered architecture. Like Android OS, WP7 runs on multiple phones.To provide a consistent user experience and features that you can rely on, WP7defines a minimum set of hardware specifications that all phones must meet. Theyinclude:  ARM7 CPU  A DirectX capable GPU  Camera  Multi-touch capacitive display  Standard sensors include: o A-GPS 5
  6. 6. Windows Phone 7 Guide for Android Application Developers o Accelerometer o Compass o Proximity and light sensorsThere are three standard buttons on the phone: Back, Start, and Search. As we willsee in a subsequent section, these buttons provide an easy and natural navigationmodel for the user.In WP7, Microsoft provides most of the device driver code. A device manufacturerhas to write very little code specific to their device. This improves the consistencyand quality across various devices. WP7 takes advantage of hardware accelerationthrough encapsulation layers, such as DirectX or XNA.WP7 applications use managed programming and run within sandboxedenvironments. For more details about WP7 architecture, watch the MIX‟10presentation by Istvan Cseri, a WP7 architect. 6
  7. 7. Windows Phone 7 Guide for Android Application DevelopersComparing the Programming Stack of Windows Phone 7with AndroidThe Application Model shown above provides services, such as installation andupdate, for managing the application lifecycle. The UI model helps to manageapplication user interface. Applications are built using various WP7 frameworks.This table gives an overview of the WP7 frameworks that provide featurescomparable to the Android programming layers.Android Functionality Windows Phone 7Frameworks Frameworks Application UI, Device Windows Phone 7 PhoneAndroid Application integration (sensors, Framework, SilverlightFramework camera) controls XNA for games or SilverlightAndroid Application Graphics, Animation, Media media and graphics forFramework others Base services, Networking,Android Libraries Common Base Library Text, XML, storageAndroid runtime Windows Phone 7(Dalvik)+ Linux kernel 7
  8. 8. Windows Phone 7 Guide for Android Application DevelopersAndroid and Windows Phone 7 Stacks Side by SideThis table compares the Android and WP7 Frameworks side by side. Android Frameworks Windows Phone 7 Frameworks Multi-tasking integration UI and Phone Application UI and Phone Application Java C# or VB.NET Application UI Application UI Device integration Device integration Browser Control Browser Control Notifications Notifications Peer to Peer Gamer Silverlight Two Application Types XNA Gaming Services Controls & Controls & Gestures Gestures Media Telephony Media Media Framework Media Animations Animations Animations Graphics Graphics Graphics OpenGL-ES Isolated Content File System Storage Core Libraries SQLLite Library Base Class Location Location XML XML, LINQ Networking Networking, Windows Communication Foundation Libc, Dalvik VM CLR Base Classes Android runtime + Windows Phone 7 OS Linux kernelManaged CodeIn Android, every application runs in its own process, with its own instance of theDalvik virtual machine. WP7 only supports “managed code” applications using C# orVB.net; there is no native access available to the system or the phone hardware..NET Common Language Runtime (CLR) manages the execution of such code. CLRprovides garbage collection and there is no memory management to worry about orpointers to take care of. The WP7 application stack is built on the .NET compactframework 3.7. As Dalvik virtual machine is optimized for mobile devices, the .NETcompact framework is optimized for resource constrained devices and is designedto be portable across various hardware platforms. 8
  9. 9. Windows Phone 7 Guide for Android Application DevelopersBase ServicesWP7 Base Class Library classes roughly correspond to those provided in the AndroidCore Libraries.  Android core libraries include:  Media framework for audio and video codec support  SQLite for database  Opengl-ES  SGL for graphics and animation  Networking stack  Libc for embedding with Linux kernel  Dalvik VMThe WP7 Base Class Library layer also includes:  Networking stacks: such as HTTP and the Windows Communication Foundation (WCF). WCF provides an easy interface with XML and SOAP services across the Web, with features supporting the XML data transfer, serialization, deserialization and XML parsing.  Database support: WP7 does not have a local database, such as SQLLite. You can write SQL-like queries in C# using Language Integrated Query (LINQ) to query XML data, stored in isolated storage (see below), or in remote databases such as SQL Azure.Application UI and Device IntegrationYou can develop WP7 applications using two libraries: Silverlight and XNA.Silverlight contains the visual components same as Android standard widgets.Generally, it is recommended that you use Silverlight for consumer or businessapplications and XNA for games. However, you can certainly develop great gamesusing Silverlight animation. 9
  10. 10. Windows Phone 7 Guide for Android Application DevelopersAndroid applications Windows Phone 7 counterpartsUI using activity(contains Silverlight applications with pageswidgets) with navigation connected by flowsbetween them2D or 3D games built XNA games with 2D / 3D graphicswith Opengl-ES and Xbox connectivityXNA for GamesFor a high performance game, XNA is the right option. XNA framework, originallydeveloped for XBOX, provides hardware accelerated 2D and 3D rendering andbitmap graphics. XNA also provides gamer services such as authentication andconnectivity with XBOX Live, as well as Profiles and Leaderboards.Silverlight Controls and MediaIf you use Android activities and widgets, you will find a large set of Silverlight UIcontrols specifically designed for the OS. WP7 UI components are designed formulti-touch. Silverlight uses a declarative language called Extensible ApplicationMarkup Language (XAML) to specify user interfaces. You can use separate code-behind files, written in C# or VB.NET, to respond to events or manipulate thecontrols.Silverlight provides high performance audio and video with variety of CODECs. Itsupports both vector and bitmap graphics with hardware acceleration. As opposedto a file system, Silverlight provides sandboxed storage, called isolated Storage, tostore the application-specific data. With the isolation of storage, one applicationcannot affect other applications that are running on the phone.Windows Phone FrameworksIf you need to use HTML in your application, you can use the Internet Explorerbased browser control in your application for HTML UI. Windows Phone Frameworklayer also provides interfaces to various sensors, such as the accelerometer or the 10
  11. 11. Windows Phone 7 Guide for Android Application Developerscamera. Microsoft provides a push notification service, called Microsoft PushNotification Service.In Android, multitasking is supported. In WP7, support for multitasking will beprovided in the next release. In Android, you need to use third-party platforms likeADMob to publish advertisements in applications. Microsoft has made this taskeasier in WP7 by introducing Microsoft Advertising SDK for WP7.For more information, visit:Microsoft Advertising SDK for Windows Phone 7SummaryIn this chapter we looked at the WP7 architecture and the Android and WP7programming stacks. Now that you have a high-level idea of how the WP7programming stack maps to the Android stack, we are now going to go one leveldeeper. In the next section, we will look at the user interface guidelines of WP7applications.Related ResourcesTo learn more about the topics covered in this blog, visit:  App Hub – Central Place for Windows Phone 7 development. Getting started, download tools and read all about Windows Phone 7 development  MIX ‟10 presentation on Windows Phone 7 Architecture by Istvan Cseri  Windows Phone 7 Development for Absolute Beginners. Video series that will help aspiring Windows Phone 7 developers get started.  App Hub Jump Start Tutorials  Introduction to WP7 programming on Codeproject.comOther Resources you may find useful:  Overview of the Windows Phone 7 Application Platform  Windows Phone 7 Team Blog  Windows Phone 7 Programming 11
  12. 12. Windows Phone 7 Guide for Android Application DevelopersChapter 2: User Interface GuidelinesMicrosoft‟s Windows Phone 7 (WP7) uses a novel user interface called Metro. WP7sets itself apart with its clean and simple design and emphasizes on color andtypography.In contrast to the application-focused design of Android, WP7 uses an information-centric design. Instead of an array of application icons, the start screen of a WP7consists of dynamic tiles that display critical information at a glance to the user.The tiles are dynamic and they continuously display the up-to-date status of theapplications. For example, they show you the next appointment on your calendar,or the number of new emails waiting for your attention. Users can personalize theirphones by pinning the tiles that they care most about.WP7 introduces a new paradigm called hubs. Hubs bring related informationtogether. There are six hubs, People, Pictures, Music + Videos, Marketplace, Office,and Games. The People hub, in the instance shown below, aggregates your addressbook contacts and Facebook friends. 12
  13. 13. Windows Phone 7 Guide for Android Application DevelopersDesigning the Application InterfaceWhile the design of the WP7 user interface is different from that of the Android, thecore design principles are very similar. Like Android, in WP7 you need to keep inmind the compact screen, lower CPU, and limited memory while designing theapplications. In WP7, users use one application at a time, with just one screenvisible.Similar Application Design GoalsUsability and UI design are not after thoughts, but are the primary goals behindapplications on both the Android and WP7. Applications need to be simple and focuson key scenarios that most users care about.Visual Elements and Direct ManipulationLike Android, visual elements and direct manipulation of objects by touch are thekey characteristics of the WP7 application. WP7 provides a complete set of UIcontrols designed for the phone.WP7 utilizes the same set of core multi-touch gestures as the Android with similarsemantics, these include: tap, double tap, pan, flick, touch and hold, and pinch andstretch.Implications of the Similarities for the DevelopersFor the most part, the application planning process is similar on both the platforms.While designing your WP7 application, you will focus on the same information thatis critical to the user. Your key design principles from the Android application willget carried over: metaphors and direct manipulation with multi-touch. The need forimmediate feedback and aesthetic appeal remains the same. 13
  14. 14. Windows Phone 7 Guide for Android Application DevelopersApplication User Interface DesignWhile there are similarities in the design principles of the applications on bothplatforms, pay close attention to the user interface of the application for the WP7. Itis best to take advantage of the unique features and strengths of WP7 platform.For the interface to provide a consistent experience across applications, applicationson WP7 need to adopt the new Metro design guidelines.XML and XAMLAndroid uses XML for mapping purposes. A part of the compilation reads the XML,performs translations, and generates Java. For example, in layout XMLs of Android,you need to set it as content view in Activity, after defining the whole UI.In WP7, XAML act as an instantiation language. XAML does not act as a mappingmedium in WP7 as XML does in Android. The XML in a XAML document in WP7contains the actual code needed for UI and needs not be transformed into code, asin case of Android.Controls and the Application InterfaceThe WP7 development tools and SDK include a rich collection of Silverlight controlsthat are designed specifically for usability and aesthetics. While you can create yourown controls, it is best to use the standard controls wherever possible. Thesestandard controls respond to theme changes and provide a consistent userinterface.The following table shows the mapping between WP7 Silverlight controls andcorresponding Android controls.Android control Windows Phone 7 controlBorder BorderButtonView ButtonAbsoluteLayout CanvasCheckBox CheckBoxGridView Grid HyperlinkButtonImageView ImageListView ListBoxMediaController MediaElement 14
  15. 15. Windows Phone 7 Guide for Android Application DevelopersAndroid control Windows Phone 7 control MultiScaleImageViewGroup PanelEditText PasswordBoxProgressBar ProgressBarRadioButton, RadioButtonRadioGroupScrollView ScrollViewerSeekBar SliderLinearLayout StackPanelEditText TextBlockEditText TextBoxMapView MapWebView WebBrowser Panorama PivotTimePicker TimepickerDatePicker DatepickerExpandableListViewGalleryImageSwitcherSpinnerTableLayoutTextSwitcherViewFlipper 15
  16. 16. Windows Phone 7 Guide for Android Application DevelopersAndroid control Windows Phone 7 controlZoomControlTabHostSlidingDrawerRatingBarToggle button ToggleSwitch** ToggleSwitch and Datepicker/Timepicker control are part of the Silverlight forWindows Phone Toolkit available on Codeplex:http://silverlight.codeplex.com/releases/view/55034As you can see, WP7 offers controls that correspond to almost all Android controls.While the look and feel is different, they provide similar functionality.New Controls in Windows Phone 7WP7 introduces a few novel controls that have no counterpart on the Android. Hereare some of the examples:  A multi-scale image, with image data at various resolutions, is appropriate for allowing the user when zooming into a photo.  Panorama control is a multi-screen page and allows a page to span horizontally beyond the width of the phone.  The people hub is another great example. It allows a large amount of related information to be presented.  Pivot control, a novel control that is useful to manage views and display information that is logically divided in sections. 16
  17. 17. Windows Phone 7 Guide for Android Application DevelopersNotificationsBoth Android and WP7 have notification services, but notifications play a key role inWP7. The tiles are used to display non-critical information without disrupting whatthe user is doing. If you are using status bar notifications in Android, you can usetile notification as a replacement in WP7 to show critical information.The notification service also display toast notifications that provide time sensitiveinformation, such as an SMS. The toast notifications are shown for about 10seconds, but the user may choose to ignore them. These are the same as Androidtoast notification.Android Functionality Windows Phone 7Status bar Non-critical information that user Tile notificationsnotification may not respond to. That is informative to userToast Time sensitive data that user may Toast Notificationsnotification not respond toAlerts Modal alerts that the user must Application respond to notifications 17
  18. 18. Windows Phone 7 Guide for Android Application DevelopersTool and Tab Bar vs. Application BarWP7 features a versatile application bar. The application bar can include up to 4 ofthe most common views or application tasks. You can also use application barmenus for additional context-sensitive tasks. If you are using action sheets in yourAndroid application, application bar menus give you similar functionality.Android Functionality Windows Phone 7Status bar Information about Status bar deviceTitle bar: to show title Navigation, Title, Back button for backof application or activity Buttons for views or navigation actions Page title View and actions on Application barComparing Windows Phone 7 and Android NavigationWP7 application is a collection of multiple pages. Like on the Android, the usernavigates through different Activities using widgets such as buttons and links.Like Android, on WP7 the Back button on the phone allows the user to navigateback between pages within an application, or across applications. It behaves muchlike the Back button in a browser. The Back button also closes menus and dialogs.As a developer, you should consider what the Back button means to your user andplan to override it appropriately. For example, you may decide to pause a game byusing the Back button on the Phone.The other two hardware buttons on the WP7 phone, namely, Search and Home,have fixed behavior. 18
  19. 19. Windows Phone 7 Guide for Android Application DevelopersWindows Phone 7 Frame and Page StructureEach WP7 application has a single frame, and it includes areas for:  A page where application content is rendered. This is the content where widgets or graphics are rendered.  A reserved space for the system tray and application bar. It also exposes certain properties, such as orientation to the application.System Tray and Application BarOn WP7, the system tray includes indicators for various system-level statusinformation. The application bar includes the area for the most common applicationmenus, which may include various data views or tasks. 19
  20. 20. Windows Phone 7 Guide for Android Application DevelopersPage Structure of Windows Phone 7 ApplicationThe following diagram shows the structure of a typical WP7 data-bound application,which resembles a navigation-based Android application.When the user first starts the application, he or she is presented with a splashscreen, designed to welcome the user, as well as to create the perception of fastresponse. Splash screens are usually an image file of the entire size of the display.Usually the application starts with the home page, the main navigation page, withlinks for search, and other page widgets. Consider an application that showsinformation about baseball teams and their players. The primary content page,marked as the widgets page in the above diagram, have the content of interest. Forexample, a list of all baseball teams. However, depending on requirement, thehome page can also be the primary content page.This is a possible application usage scenario:  A user clicks one of the team links to visit the team details page (“Widget Details Page”) which can provide multiple views. The team details page may employ a pivot control or panorama to display different views such as the team summary and the list of all players (“List of Gadgets Page”) from that team  A user selects one of the baseball players and the application takes the user to the page with player statistics (“Gadget Details page”). The player statistics page uses controls such as textblocks, multi-scale images, or other multimedia using a MediaElement control  A user can also use the search widget to search and directly access the team page (“Widget Details Page”) or the player page (“Gadget Details Page”) 20
  21. 21. Windows Phone 7 Guide for Android Application DevelopersApplication TemplatesEclipse does not provide the project template for Android applications. But VisualStudio provides numerous templates for WP7 application development to makeyour life easier.Functionality Visual Studio Template EclipseInformation drilldown Data-bound applications Not availableapplicationsUtility applications. For Windows Phone 7 utility Not availableexample, Bubble Level applicationsGames Windows Phone 7 Game Not available (XNA) applicationsFlexible template to design General Windows Phone 7 Not availableany application applicationsYou can choose the Windows Phone application template to either create anapplication with functionality similar to the view-based or the window-basedAndroid application type. Lastly, the XNA based games application template givesyou functionality like the OpenGL-ES application.SummaryIn this chapter we looked at the similarities between the application design goals ofthe Android platform and the WP7 platform. When you plan your WP7 application,you will be able to leverage your existing work on Android applications.We also looked at the application interface design to make sure you are takingadvantage of the WP7 metro design that uses WP7 interface guidelines. You willfind that the WP7 tools offer a large library of controls and gestures that have closecounterparts on the Android.This chapter also showed you the use of innovative controls like panorama, andexplore the use of live tiles to build an engaging WP7 experience.Related ResourcesTo go deeper into the topic discussed, visit:  Windows Phone 7 User Interface Guidelines  Windows Phone 7 Developer Tools  Silverlight for Windows Phone toolkit on CodePlex  Design resources for Windows Phone 21
  22. 22. Windows Phone 7 Guide for Android Application DevelopersOther Resources that you may find useful:  Application Page Model for Windows Phone 7  Frame and Page Navigation Overview for Windows Phone 22
  23. 23. Windows Phone 7 Guide for Android Application DevelopersChapter 3: The Developer andDesigner ToolsWith the release of the Windows Phone 7 (WP7) developer tools, Microsoft bringsthe user-friendly, high productivity Visual Studio Development environment to WP7.As Android application developers you are familiar with Eclipse, and you can quicklymigrate to WP7 developer tools and work with ease.A Comparison of Android and Windows Phone 7 ToolsVisual Studio 2010 Express for Windows Phone is a full-featured IntegratedDevelopment Environment (IDE). Visual Studio 2010 facilitates designing,developing, and debugging of Windows Phone 7 applications. The other WP7 toolsthat help you in the development cycle of the Windows Phone application are:  Expression Blend  XNA Game Studio  Windows Phone EmulatorThe WP7 developer tools offer the complete functionality that is provided by theAndroid application developer tools. The following table gives an overview of thefunctionality of each of these tools. The table also indicates the equivalent tools youuse for Android application development. Functionality Audience Android Windows Phone 7 tools tools Primary UI UI designers Defined in Expression Blend design: Colors, XML, any XML gradients, and tool animation  ADT UI UI design UI designers Visual Studio 2010 Express plug-in and and Expression Blend for  Third- programmer Windows Phone party tool s like DroidDraw Application Programmers Eclipse Visual Studio 2010 Express development for Windows Phone (coding) Game Programmers Eclipse XNA Game Studio development 23
  24. 24. Windows Phone 7 Guide for Android Application Developers (coding) Testing / Testers Android Windows Phone Emulator in Emulation Emulator Visual Studio 2010 ExpressYou can use the Android team structure and overall development process to buildapplications for Windows Phone 7. The WP7 toolset ensures that the entire team ofdesigners, developers, and testers familiar with Android development tools will findit easy to migrate to the WP7 toolset.Development Life Cycle and Windows Phone 7 DeveloperToolsExpression Blend 4 and Visual Studio facilitate a close collaboration betweendesigners and developers.Both these tools share the same file structure and source files. Expression Blenduses XAML for UI design and the XAML is consumed by Visual Studio. This systemallows separation of responsibilities between the designer and the developer whileallowing them to work together seamlessly.Project Management for Windows Phone 7Like Eclipse, Visual Studio 2010 Express for WP7 is a fully-featured IDE. VisualStudio 2010 Express allows you to:  Manage the entire structure of the development project, the source, and the resource files  Configure the application codebase, known as Visual Studio Solution, as a collection of projects in a separate functional unitWith Visual Studio 2010 Express, you can manage source files, share code, andmanage the work among team members. Visual Studio integrates a compiler and a 24
  25. 25. Windows Phone 7 Guide for Android Application Developersdebugger. You can access both the compiler and the debugger either from the GUIor the command line.To create a sample application, do the following: 1. Start Visual Studio Express for WP7 from Start menu. 2. In Visual Studio Express, click File. 3. Click New Project. 4. In the New Project dialog box, select Windows Phone Application. 5. In the Name of the project text box, enter ShoppingList as the name of the project, and click OK. Visual Studio Express creates the new project.The Solution Explorer pane displays the solution that you created. This examplesolution has only the ShoppingList project. The project contains the sources,resources, and properties.Note: Visual Studio Express for WP7 does not provide integration with sourcecontrol systems. The Visual Studio Professional edition provides features such asintegration with various source control systems like Subversion. You can also useVisual Studio Team System, which is designed for greater communication andcollaboration among the development teams. 25
  26. 26. Windows Phone 7 Guide for Android Application DevelopersThe UI Design ToolsThe WP7 developer tools include:  Expression Blend  Visual Studio UI DesignerWP7 uses Silverlight and a specific XML markup language for the UI specification.Visual Studio UI design tool is equivalent to the Eclipse ADT UI plug-in. As Androidapplication developers you are familiar with Eclipse ADT UI plug-in and you will findit easy to use this tool. In our example, the main page for the ShoppingListsolution, MainPage.xaml, is already open in the Visual Studio UI Designer tool forediting.To change the titles of the application and the current page, do the following: 1. Right-click the title MY APPLICATION and select Properties. 2. In the Properties window, select Text and enter SHOPPING LIST.You can also change the title of the page by entering my list in the Text property ofthe title.To change the title of a page, do the following: 1. Drag a Text box from the Toolbox and place it above the textblock. 2. Update the Text box‟s Text property to delete any existing entry. 26
  27. 27. Windows Phone 7 Guide for Android Application Developers 3. Below Properties, click TextBox1, and enter txtItem to change the ID of the textbox to txtItem. 4. Resize the Text box by dragging its lower right corner so that its width is 300. 5. Drag a Button to the right of the TextBox. 6. Change the button‟s Content property to Add, and its ID to btnAdd. 7. Resize the button so that its width is 140. 8. Drag another TextBox and place it underneath the txtItem textbox. 9. Resize the new TextBox so that it covers the rest of the phone screen. 10.Update the ID of the new TextBox to txtList. 11.Update the Text property of the new TextBox to Nothing here yet!.Your application looks as shown below: 12.To start debugging, compile the application and launch, press F5 or click DebugThe application starts the WP7 emulator, deploys, and runs the ShoppingListapplication. You can click Add. But the application does not respond because thereis no code for the button you inserted in the previous steps. 27
  28. 28. Windows Phone 7 Guide for Android Application DevelopersNote: You can use the context menus to add the event handlers or to set thecontrol properties. The emulator‟s integration with Visual Studio allows for a directmanipulation of controls and makes it easy to add logic to the UI controls.Expression Blend for Windows Phone 7Expression Blend for WP7 is a visual UI design tool that is suitable for designers.There is no exact equivalent to Expression Blend in Android development toolset.Expression Blend is like VS Design. With Expression Blend, you can:  Drag and drop UI elements to design the UI  You can layout the controls accurately up to pixels. You can easily create and use color palettes and gradients  Add special effects, such as reflections and shadows  Import Photoshop files and Android application resources to the Windows Phone application  Create fine application behavior and animations without any programming 28
  29. 29. Windows Phone 7 Guide for Android Application DevelopersExpression Blend is for UI designers and Visual Studio Design is for programmers.Programmers can also use Visual Studio Design to integrate the application logic tothe UI design. You can also use the Visual Studio UI design tool to design UI forapplications.Both Expression Blend and Visual Studio Design have:  A single control set that provides accurate fidelity to their run-time visual representation. This feature allows you to easily visualize the application.  Same project structure and share the same source files for designers and developers.  Use or produce XAML, which is a Silverlight XML declarative markup language used for interface design. This feature allows a designer to work on the design using Expression Blend while the developer uses Visual Studio to design the logic behind the application. You can establish a smooth design and development workflow. 29
  30. 30. Windows Phone 7 Guide for Android Application DevelopersVisual StudioVisual Studio has a simple to use, full-featured, and a configurable source editor.The editor tool has various features that are familiar to Eclipse users. The featuresof the editor include:  Flexible search  Rich editing  Format code  Auto-completion of code  Outline or hide codeTo add logic to the application, do the following: 1. To stop the running application, click Debug. 2. Click Stop Debugging. 3. Double click Add. The dialog displays MainPage.xaml.cs with a method btnAdd. 4. Click the MainPage class. 5. To add logic to the items that are added to the shopping list, edit the btnAdd_click method. 6. Enter the following code: string tStr = txtItem.Text;.Note: When you enter t for txtItem, Visual Studio displays the auto-completiondialog box. The Visual Studio equivalent for Eclipse auto-completion is calledcontent assistant. 30
  31. 31. Windows Phone 7 Guide for Android Application Developers 7. Enter the following code in the btnAdd_click method: if (!String.IsNullOrEmpty(tStr))Note: When you type String, Visual Studio displays the auto-completion dialog box.When you type Is, Visual Studio displays the class methods of the String class.VS IntelliSense in Visual StudioVS IntelliSense is a feature of the IDE which uses history, code context, and .NETreflection for intelligent auto-completion. VS IntelliSense can suggest and completevariable names, parameters, classes, and method names. VS IntelliSense can alsogenerate appropriate code where needed, as shown in the code below:To complete the event hookup, Visual Studio generates an empty stub for the eventhandler button1_click method. 31
  32. 32. Windows Phone 7 Guide for Android Application DevelopersCode Snippets in Visual StudioCode Snippets in Visual Studio is equivalent to code templates in Eclipse. CodeSnippets allows you to insert code fragments with a few clicks. Visual Studiocontains a large number of snippets. These snippets help you to create their ownsnippets. You can also create an index and search for the code snippets by usingthe self-defined terms.To use a code snippet, do the following: 1. To start the Insert Snippet prompt, press CTRL+K CTRL+X 2. To insert a code snippet for an if statement in the code, select Visual C# followed by iThe inserted snippet shows the parts of the code that you need to complete.private void btnAdd_Click(object sender, RoutedEventArgs e){ string tStr = txtItem.Text; if (!String.IsNullOrEmpty(tStr)) { if (true) { } } 3. To complete writing the code for the method, enter the required code so that the body of the method is complete as follows:string tStr = txtItem.Text; if (!String.IsNullOrEmpty(tStr)) { if (txtList.Text == “Nothin here yet”) { txtList.Text = “”; } txtList.Text += txtItem.Text + “n”; txtItem.Text = “”; }Visual Studio supports various refactoring mechanisms. You can select any piece ofcode and right-click the code to access the refactoring menu. 32
  33. 33. Windows Phone 7 Guide for Android Application DevelopersVisual Studio EditorVisual Studio editor is customizable. Visual Studio editor allows you to definevarious keyboard shortcuts or create your own macros. Macros help you toautomate repetitive actions by combining a series of commands and instructions.You can easily customize Visual Studio Editor to use shortcuts and keyboardcombinations with which they are familiar.Instead of opening a separate window for each file, as in Eclipse, the default view inVisual Studio uses tabbed windows. You can change this behavior to suit your need.You can change the way in which various windows are docked within Visual StudioShell.Building ApplicationsVisual Studio Express for WP7 allows you to build the Visual Studio solution ondemand. It allows you to separately build each project to make a part of thecomplete solution.Visual Studio uses an XML based, declarative build system called MSBuild. MSBuildis equivalent to Ant and Nant. You can access the builds either from the GUI or byusing the command line for batch processing. MSBuild is flexible and allows you tocreate a specific target either as a debug build or as a release build.Windows Phone 7 EmulatorThe WP7 Emulator provides a virtualized environment in which you can deploy,debug, and test applications. The WP7 Emulator is designed to provide acomparative performance of an actual device and meets the peripheralspecifications required for application development.To access the WP7 Emulator from Visual Studio, do any of the following:  From Deploy menu, click Deploy Solution  Press F5 in the key board, this starts the Emulator along with the debugger  Press CTRL+F5, this start only the Emulator 33
  34. 34. Windows Phone 7 Guide for Android Application DevelopersThe WP7 Emulator is like the Android Simulator. However, these differences arethere:  In Android emulator you can have access to all the system application like Phone Dialer, Contacts, Mail, and Media Gallery. But the WP7 Emulator the system applications are not directly accessible to you. Though it can be accessed by the Launchers and Choosers.  Android supports various display height and width. Likewise, you can customize the Android emulator for parameters like Screen Height, Width, RAM size, and Sensors. As WP7 have specific hardware requirements, you cannot modify the WP7 Emulator for these hardware parameters.DebuggingVisual Studio Express Phone 7 includes a symbolic debugger that you can use withthe WP7 EMULATOR or with a remote device. Once the application loads in thedebugger, you can view the variables in the application and control their execution.To work with debugger, do the following: 1. To start the debugger, press F5 2. In Textbox you previously created, enter napkins and click Add. Refer to the image below.Note: napkins is added after Nothing here yet! 3. In Visual Studio, click the light blue area to the left of the string tStr = txtItem.Text; line. Visual Studio inserts a breakpoint at that line. 34
  35. 35. Windows Phone 7 Guide for Android Application Developers 4. Launch the debugger again using F5. When the application loads into the debugger, rest the mouse pointer over txtItem in the code 5. Click + in the pop-up to view the variable txtItem.Tracking VariablesYou can view the details of the variables such as the Type, Fields, and Properties.The dialog below shows how you can scroll up and down the Type Hierarchy toinspect the objects.You can set a watch on certain variables to keep them under observationcontinuously.To track variables, do the following: 1. Right-click txtList, and click Add Watch. The watch window displays the variable txtList. 2. Click + icon near txtList, to expand txtList. 35
  36. 36. Windows Phone 7 Guide for Android Application Developers 3. To ensure that the control does not enter the if statement, press F10 to step through the code.if (txtList.Text == "Nothing here yet") { txtList.Text = ""; }You can observe in the Watch window that the value of txtList.Text is Nothing hereyet. But it gets compared with Nothing here yet (with no exclamation point.) This isa bug in the code.Change the statement as shown below to add the exclamation point:if (txtList.Text == "Nothing here yet!")Note: While in the debugger, you can use the VS immediate mode where you canwrite the managed code instructions to modify or view the variables or executecode to help with debugging. 4. Update the code and re-launch the debugger by pressing F5. 5. To test the application, add items to the shopping list. 36
  37. 37. Windows Phone 7 Guide for Android Application DevelopersA Note about DebuggingYou will observe that you can easily debug a WP7 application using the managedprogramming environment. Like Eclipse, the debugging in WP7 application is doneentirely at the application level using the C# code and types.Note: The .NET framework includes two classes called Debug and Trace, which helpyou to write run-time debug messages to the output window. C# also supports anassert statement, which is evaluated at run time. If the statement returns true,Visual Studio does not respond. But if the statement returns false, the programenters the debugger. 37
  38. 38. Windows Phone 7 Guide for Android Application DevelopersSummaryIn this chapter we looked at the Windows Phone 7 Developer Toolset. The Toolsetincludes the rich tools that are designed to support every step in the entireapplication development lifecycle. The design, development, and the testing toolsare equivalent to the existing Android team roles and processes. The tightintegration between the WP7 tools helps you to streamline the design, develop theworkflow, and test the workflow. These tools provide an end-to-end functionalityand are highly customizable. 38
  39. 39. Windows Phone 7 Guide for Android Application DevelopersChapter 4: C# programmingThis chapter discusses the C# features that map to the most common Javafeatures. This chapter includes the code snippets, which help you to work fasterwith C# code. It describes important C# features that help you write safe code andenhance productivity.The chapter discusses the following features of C# programming:  Managed Programming  Class Declaration  Strong Typing  Class Constructors  Properties  Parameter Types  Access Privileges  Methods with multiple Parameters  Inheritance  Protected Access  Instance vs. Class Level Access  Abstract Classes  Interfaces  Polymorphism  Structs  Object Lifecycle: Creation and Deletion of Objects  Type Checking vs. Reflection  Exception Handling 39
  40. 40. Windows Phone 7 Guide for Android Application DevelopersManaged ProgrammingWP7 supports managed programming in C# and VB.NET.The C# compiler (and similarly, the VB compiler) compiles the C# (or VB.NET) codein an intermediate language (IL) byte code and metadata. The Common LanguageRuntime (CLR) executes the bytecode. The C# uses metadata to manage typesafety, exception handling, and array bounds. CLR also manages memory andperforms garbage collection. In Android, the Java code is compiled in a .class file,and the file is converted to a .dex file. The .dex file is optimized for low foot printon memory. The .dex file is then converted to an apk file, which is executed on anandroid platform. 40
  41. 41. Windows Phone 7 Guide for Android Application DevelopersA Comparison between C# Features and Java ClassesClass DeclarationLike Java, C# does not separate class definition from class implementation. Thecompiler derives the metadata about the classes from class implementation. As inJava we can define multiple class definition in same file. C# also defines themultiple classes in same file.using System; // In java this is similar to importnamespace FirstApplication // scope for classes. Same like package declaration in Java{class Person // only uses class implementation{ private DateTime birthDate; // a private field accessible to this class private int ageOn(DateTime date) // a private method { TimeSpan span = date.Subtract(birthDate); //uses a .notation to invoke return span.Days; } public int age // this is a property. { Get // just a getter; it’s a read-only property { return this.ageOn(DateTime.Now); } } public Person( DateTime dob) // instance constructor. Same like Java { // it combines allocation and initialization birthDate = dob; }}class Program // Same like Java, another class in the same file.{ static void Main(string[] args) // main entry point into the program { Person p = new Person(new DateTime(1973,11,12)); //construct an instance System.Console.WriteLine("The age is is" + p.age.ToString()); DateTime dt = p.birthDate; //error in compilation birthDate is private } }}The following example shows the public signature of the class Person that consistsof property, age, and constructor.Instead of using the import statement in Java, C# employs a using statement torefer to the metadata of other classes. The namespace declaration that is shown atthe top of the file is used to declare the scope and to organize the code. You canaccess classes in other namespaces by referring to a fully-qualified name. You canrefer to System.Console.WriteLine in the example above, where the console is inthe System namespace.C# uniformly uses the “ ” notation for referring to all methods, fields, andproperties.Strong Typing 41
  42. 42. Windows Phone 7 Guide for Android Application DevelopersC# is a strongly typed language like Java. The types must be specified for variablesand input/output parameters. The compiler enforces the types. In the section ongenerics, you can see how C# uses strong typing for collection classes.Strong typing works similarly for all classes. The code example below shows thestrong typing for primitive types.int a = 5;int b = a + 2; //OKbool test = true; // OKint c = a + test; // Error. Operator + cannot mix type int andbool.Class ConstructorsLike Java, C# uses instance constructors to create and initialize instances. Forexample: p is an instance of the Person class. You can construct and initialize pwith a given birthdate, in a single statement.Person p = new Person(new DateTime(1973,11,12));PropertiesYou often need to decide about whether to implement a member as a property or amethod. In this case, the design pattern is identical for both Java and C#. As ageneral rule, use properties when you need to access data. To take any action onthe data, use methods.Properties helps to abstract away from directly accessing the members of a class.This technique is similar to using accessors (getters) and modifiers (setters) inJava. You can make the property read-only by providing the getter, write-only byproviding the setter, or read-write by providing both getter and setter.Parameter TypesLike Java, C# uses the value parameters by default. C# does not have pointers. ButC# allows the passing of parameters by using the ref modifier. Instead of pointers,you can use parameters with ref where you want to achieve an additionalfunctionality in a method. In some cases, you need to use the reference parametersfor better efficiency since they avoid data copying.void Foo (ref int x, int y){ x = 0; y = 0;}.. 42
  43. 43. Windows Phone 7 Guide for Android Application Developersint a = 5;int b = 8;Foo (ref a, b);//a is zero and b is still 8C# also provides the parameters with an out modifier. This out modifier representsthe parameters that must be initialized by the called method before returning. Thisdesign pattern is often used to return the error in addition to the value of thefunction.Access PrivilegesLike Java, C# allows the access privileges on fields (for example, birthDate),properties (for example, age) and methods (for example, ageOn). C# uses public,private, and protected as modifiers to denote the three different levels of accessprivileges.In the above example, the compiler gives an error response on p.birthDate sincethat variable is private. Therefore p.birthDate is not accessible from the Programclass. Similarly, the ageOn method is also private and inaccessible from theProgram class.Methods with Multiple ParametersBoth Java and C# support methods with multiple parameters. While C# traditionallyuses positional and unnamed parameters, the latest version of C# has introducedthe named parameters. The following example shows the comparative syntax forJava and C#.Java C#void addEmployee(string name, int void addEmployee(string name, intid, int age); id, int age); Off.addEmployee("Phil",2345, 23); Off.addEmployee("Phil",2345, 23); Off.addEmployee(name: "Phil", age:23, id:2345);Like Java, C# explicitly supports method overloading. C# differentiates between themethods that have the same name by using information about the parametertypes. The following code sample shows how C# differentiates between methodsthat have the same name.void insert (myClass obj, int index);void insert (myClass obj, myClass before);The method insert may be called with both these signatures:list.insert (myObj1, 4);list.insert (myClass obj, myClass before); 43
  44. 44. Windows Phone 7 Guide for Android Application DevelopersThe following code sample shows another example of method overloading:using System;namespace SecondApplication{ struct Point // In contrast Java where struct notsupported, C# structs are closer { // classes. public double x; // struct fields can also have accessmodifiers public double y; public Point(double p1, double p2) //a constructor for the struct { x = p1; y = p2; } } interface IThreeDShape // an interface, like an Java interface { // defines the behavior double volume { get; // Volume is a read-only property. nosetter } } abstract class Shape // this class is marked abstract, i.e. maynot be instantiated. { protected Point origin; //only derived classes may access protected static int counter = 0; // Similar to protected variables in Java public string ID; protected Shape() //a constructor. Same name as the classname{ counter++; // class variable being updated } public Point Origin // similar to Java classvariables { set { origin = value; } } public abstract double Area //denotes that this property must beoverridden { // in a derived class get; } public abstract bool contains(Point p); // this method must also beoverridden } class Rectangle : Shape //Similar to Java, single iinheritance { public double length; //field accessible from others public double width; public Rectangle(Point o, double l, double w) //a public constructor { ID = "Rectangle_" + counter.ToString(); origin = o; length = l; width = w; } 44
  45. 45. Windows Phone 7 Guide for Android Application Developers public Rectangle(double l, double w) // one constructor using anotherconstructor //creates a rectangle at the origin : this(new Point(0, 0), l, w) { } public override double Area // unlike Java, overridden method must { // use override keyword get { return length * width; } } public override bool contains(Point p) { if ((origin.x < p.x && origin.x + length > p.x) || (origin.x > p.x &&origin.x - length < p.x)) if ((origin.y < p.y && origin.y + length > p.y) || (origin.y > p.y &&origin.y - length < p.y)) return true; return false; } } class Square : Rectangle { public double side; public Square(double s) : base(s, s) //constructor { ID = "Square_" + counter.ToString(); side = s; } }class Cube : Shape, IThreeDShape //similar to Java, class implementsinterface { public double side; public Cube(double s) { ID = "Cube_" + counter.ToString(); side = s; } public override double Area { get { return 6 * side * side; } } public double volume { get { return side * side * side; } } public override bool contains(Point p) … } class SecondProgram { static void printVolume(IThreeDShape tdShape) { Console.WriteLine("The volume is " + tdShape.volume); 45
  46. 46. Windows Phone 7 Guide for Android Application Developers } } static void Main(string[] args) { Rectangle r = new Rectangle(5.0, 3.0); Cube c = new Cube(4.0); SecondProgram.printVolume(c); double a = r.Area; Console.WriteLine("The area of rectangle " + r.ID + " is " +a.ToString()); bool b = r.contains(new Point(1, 2)); Console.WriteLine("The point is in " + b.ToString()); // will printTRUE } }}InheritanceLike Java, C# also uses a single inheritance mechanism. Inheritance is specified bylisting the parent class after the class name as shown below. In this example, theclass Rectangle inherits from the class Shape, whereas the class Square inheritsfrom the class Rectangle.class Rectangle : Shapeclass Square : RectangleIn C#, the constructor of the base class is automatically invoked when youconstruct an instance of a derived class. However, a derived class can invoke aspecific constructor of the base class if needed. This you can see in the constructorof the Square class.public Square(double s): base(s, s) //constructor. Calls parentconstructor explicitlyLike Java, a C# derived class may not override a method by redefining it. The classmust use the keyword override in its method definition.public override bool contains(Point p){ …}Protected AccessLike Java, in C#, you can use protected modifier to control access to fields,properties, and methods. You can implement protected variables in C# by using theprotected access modifier, as shown in the code sample below:protected Point origin; protected static int counter=0;Instance vs. Class Level Access 46
  47. 47. Windows Phone 7 Guide for Android Application DevelopersLike Java, C# uses a static modifier to denote class level methods, fields, andproperties. Everything else is at an instance level. In the above code example, thecounter is a class level variable.protected static int counter=0;Abstract ClassesThe abstract classes are classes that cannot be instantiated. Java provides a syntaxfor an abstract class. The class Shape defined in the above C# code sample is anabstract class. The abstract classes requires that both Area and the method itcontains must be overridden in any derived classes.abstract class Shape { public abstract double Area { get; } public abstract bool contains(Point p);InterfacesThe Java and the C# interfaces are similar. In the sample code shown below,IThreeDShape defines an interface that is implemented by the Cube class.interface IThreeDShape { double volume { ... class Cube : Shape, IThreeDShapePolymorphismThe working of polymorphism is the same in both Java and C#. You can pass a C#derived class as a parameter to a method that expects a base class. Similarly, youcan pass a class that implements a particular interface, as a parameter to themethod. The following sample code shows how to pass an object of the class Cubeas a parameter, where the method expects an object of the class IThreeDShape.static void printVolume(IThreeDShape tdShape) { Console.WriteLine(“The volume is ” + tdShape.volume); } … 47
  48. 48. Windows Phone 7 Guide for Android Application Developers Cube c = new Cube(4.0); SecondProgram.printVolume(c);StructsC# structs are like classes. C# structs can access modifiers and have constructors,methods, and properties. While a struct is a value, a class is a reference.struct Point { public double x; public double y; 48
  49. 49. Windows Phone 7 Guide for Android Application DevelopersObject Lifecycle: Creation and Deletion of ObjectsThe memory management in both Java and C# are similar. Both Java and C#performs automatic memory management. Instead of allocating memory, C# allowsyou to use the new operator to create objects and initialize them. When a code nolonger accesses an object, the object becomes eligible for garbage collection. The.NET CLR garbage collector in C# periodically frees up the memory for such objects.With C#, you don‟t have to track the free memory usage.In rare circumstances, you may need to perform a cleanup at the time the object isdestroyed. C# allows the use of destructors, but in practice this is rare.Type Checking vs. ReflectionJava Reflection is a versatile feature that you can find both in C# and Java. You canuse reflection to:  Get information type from an existing object  Dynamically create an instance of a type  Bind the type to an existing object, access its methods, and access its fields and properties.The following table maps the dynamic type checking in Java with its correspondingC# reflection features.Java Reflection Explanation C# ReflectionClass1 instanceOf Is Object a subclass type.IsSubclassOf(typeof(BaseClass))BaseClass or member?object.getClass() Is Object a member object.getType() or typeof ofsearch from Does the object type.GetMethod(MethodName) implement theMethod[] methods = method?c.getMethods(); Does the class type.GetMethod(MethodName) respond to the method?Method.invoke(..) Invoke a method type.InvokeMember(…)Exception HandlingException handling is similar in both C# and Java. You use a use block to handleexceptions. You can also use either catch specific exceptions or a catch-allstatements. The syntax for exception handling is similar in Java and C#. 49
  50. 50. Windows Phone 7 Guide for Android Application Developerstry { //block of code } //Most specific: catch (ArgumentNullException e) { Console.WriteLine(“{0}First exception caught.”, e); } //Least specific catch (Exception e) { Console.WriteLine(“{0}First exception caught.”, e); } 50
  51. 51. Windows Phone 7 Guide for Android Application DevelopersA Comparison of Important Class LibrariesStringsC# provides a comprehensive string class, which offers you all the features that youassociate with this class.Java C# NotesFeatureString String greeting = “Hello WP7!”; Int length = greeting.Length;Comparison String color = “pink”; Strings are compared using ==. If (color == “red”) They are compared lexicographically using compare. System.Console.WriteLine(“Matchin g colors!”); string name = “Joe”; if (string.compare(name, “Jack”) > 0) System.Console.WriteLine(name + “ comes later”);Concatenation System.Console.WriteLine Strings can be concatenated (greeting + " You rock!") with the „+‟ operator. (This is called operator overloading.)Splitting string rainbow = "Violet, Indigo, Blue, Green, Yellow, Orange, Red"; string[] rainbowColors = rainbos.Split(,); foreach (string color in rainbowColors) System.Console.WriteLine (color); 51
  52. 52. Windows Phone 7 Guide for Android Application DevelopersArraysArrays in C# are almost like arrays in Java.Java Feature C# NotesArrays of int[] table; Array size is not a part ofprimitive types table = new int[3]; the array declaration.such as int, float string[] names = new string[3] Arrays are explicitly {"Peter", "Paul", "Mary"}; initialized.Multi-dim arrays Int[,] mAray; C# supports jaggedof primitive types Int[][] jaggedArray; arrays, or arrays of string[][] singers = {new string[] arrays, and they need not {"Peter", "Paul", "Mary"}, new be rectangular. string[]{“Paul”,“Art”}}; Note: Arrays of strings, i.e. objects, work the same way.Mutable array of List<string> colors = new You can use Lists as aobjects List<string>; //list of strings replacement for mutable Colors.Add(“Red”); arrays. Colors.Add(“Green”); Colors.Insert(1,”White”); You may also use String myColor = Colors[0]; //”Red” ArrayLists. Colors[colors.IndexOf(“Red”)] = “Pink”; // replace Red with pinkDictionariesC# provides a generic dictionary class that is similar to the HashTable functionalityin Java. The generic dictionary class allows you to add, lookup, and remove objectsfrom the dictionary. Since the dictionary class uses Generics, it also utilizes strongtyping. 52
  53. 53. Windows Phone 7 Guide for Android Application DevelopersJava C# Notes Dictionary<string, int> d = new You can use Dictionary as Dictionary<string, int>(); a replacement for d.Add("Honda", 124); NSMutableDictionary. d.Add("Toyota", 95); d.Add("Ford", 135); // See if Dictionary contains string if (d.ContainsKey("Ford")) // True { int v = d["Ford"]; Console.WriteLine(v); } 53
  54. 54. Windows Phone 7 Guide for Android Application DevelopersThe New features of C#This section covers the following:  Generics  Operator Overloading  Delegates  Events  GenericsGenericsGenerics introduce the notion of type parameters that make it possible to designclasses that are type safe, even though the actual type is deferred till the object‟sinstantiation. For example, the following code shows how to define a generic stack:Stack<int> intStack = new Stack<int>(); // intStack is a stackof intintStack.Push(1); // OKintStack.Push(2); // OKint number = intStack.Pop(); // this is a type safeassignmentStack<string> strStack = new Stack<string>(); //the type of strStackis different from type of intStackstrStack.Push("green"); // OKstrStack.Push(23);The Stack<T> uses T as a type parameter, thus allowing you to instantiate a stackof any type. For example: Stack<int> or Stack<string>. You can use them in atype safe manner. The use of generics is like generics in Java. 54
  55. 55. Windows Phone 7 Guide for Android Application DevelopersOperator OverloadingOperator Overloading allows you to define the implementation of user-definedoperators for user-defined classes. Consider the following example of a complexnumber struct. Operator Overloading allows you to define a + operation by using anatural syntax.public struct Complex { public int real; public int imaginary; // Declare which operator to overload (+), define how it iscomputed public static Complex operator +(Complex c1, Complex c2) { return new Complex(c1.real + c2.real, c1.imaginary +c2.imaginary); } … Complex c1 = new Complex(3.0, 4.0); Complex c2 = new Complex(4.0, 5.0); Complex cSum = c1 + c2; 55
  56. 56. Windows Phone 7 Guide for Android Application DevelopersDelegatesThe functionality of delegates in C# is like the function pointers in C. In this designpattern, a class delegates another class even if which is not known at compile time.using System;namespace DelegateExample{ public class ConsoleLogger { public static void WriteString(string s) { Console.WriteLine("Writing to console log: {0}", s); } } public class FileLogger { public static void LogString(string s) { Console.WriteLine("Logging to file log: {0}", s); } }public class DelegatesTest { public delegate void StringDelegate(string s); public static void Main() { StringDelegate Writer, Logger; // define twpStringDelegate objects Writer = new StringDelegate(ConsoleLogger.WriteString); //Create delegates with appropriate methods Logger = new StringDelegate(FileLogger.LogString); Writer("Warning message 1n"); // Send toConsole Writer delegate method Logger("Warning message 2n"); // Send to FileLogger delegate method StringDelegate MultiLogger; // to act as the multicast delegate MultiLogger = Writer + Logger; // combine thetwo delegates, MultiLogger("Warning message 3"); // This shouldget sent to both delegates } }}In the above code example, StringDelegate is defined as a function that takes astring as a parameter and returns void. Writer, logger, and multiLogger areconstructed by passing methods that have the same signature as theStringDelegate declaration.Calling Writer invokes the writeString method of ConsoleLogger to print themessage to the console. Calling Logger invokes the logString method of FileLogger 56
  57. 57. Windows Phone 7 Guide for Android Application Developersto log the message to the file. Delegates achieve indirection while providing typesafety. Delegates may be concatenated as shown by MultiLogger, which logs themessage to both loggers.EventsEvents in C# are useful in the pub-sub (publisher and subscriber) design pattern.Events are powerful design patterns that are used for asynchronous programming.An object can publish a set of events that a subscriber can subscribe. When apublisher raises an event, all subscribers are notified. The publisher raises theevent, but does not know who listens to it. The events are built by using delegates.using System;namespace DelegateExample{ public class ConsoleLogger { public void WriteString(string s) { Console.WriteLine("Writing to console log: {0}", s); } } public class FileLogger { public void LogString(string s) { Console.WriteLine("Logging to file log: {0}", s); } } public class DelegatesTest { public delegate void LogEventHandler(string s); //definition of the delegate. public static event LogEventHandler logEvent; //the signature of the event. public static void Main() { ConsoleLogger cl = new ConsoleLogger(); //create the first subscriber FileLogger fl = new FileLogger(); //the second subscribe logEvent += new LogEventHandler(cl.WriteString); //subscribe the event and hook up the logEvent += new LogEventHandler(fl.LogString); //event handlers logEvent("A new event"); //raise event which will invoke handlers Console.ReadLine(); } }} 57
  58. 58. Windows Phone 7 Guide for Android Application DevelopersComparing API Documentation ToolsJDK contains an API documentation generation tool called Javadoc. Javadocautomatically generates documentation from the comments that are added to thejava source code file.There are a variety of document generation tools that are available for .NET:  NDoc  Sandcastle  Doxygen  Doc-O-MaticNDocNDoc is a code documentation generator for Common Language Infrastructure.NDoc uses pluggable documenters to generate documentation in several formats,including:  MSDN style HTML Help format (.chm)  Visual Studio .NET Help format (HTML Help 2)  MSDN online style web pagesUsing NDocTo use NDocs to generate documentation, do the following: 1. Open your Windows Phone 7 project. 2. Select the class library for which you want to create documentation. 3. Right-click the class library, and click Properties. 58
  59. 59. Windows Phone 7 Guide for Android Application Developers 4. In the left pane, click Build. 59
  60. 60. Windows Phone 7 Guide for Android Application Developers 5. Select the XML documentation file check box. 6. Enter the file name.Note: NDoc uses this file for creating documentation.Build your class library, the documentation file is saved in the Debug or Releasefolder depending on your build configuration. You can see the documentation file inthe XML format.You can use NDoc‟s help to get a fair idea of documenting your class library moreeffectively.Generating Better DocumentationTo generate better documentation, follow these tips:  Write elaborate code comments for your code. Elaborate comments make your documentation descriptive.  Each Public type and the Public and Protected members of the Public types should have an item describing the members.  The VS.NET C# code editor has a feature that makes it easy to create the basic code comments for each type and member. Consider the following code snippet:public class MyClass() {public MyClass(string s ) {}}Place your cursor just above the MyClass constructor, and press the / characterthree times. Visual Studio.NET creates the skeleton of a code comment block forthat member:public class MyClass() {///<summary>//////</summary>///<param name=”s”></param>Public MyClass(string s) {} }You can use this method to any type or member that have code comment tags.NDoc supports a large number of documentation tags. You can use the tags tomeet your requirements. 60
  61. 61. Windows Phone 7 Guide for Android Application DevelopersIn a code comment block, when you press the < key to start a new tag, VisualStudio.NET displays an Intellisense selector. This selector shows a list of codecomment tags. This list does not display the additional tags that NDoc supports.You must add the additional tags manually.Using the NDoc GUI UtilityTo use the NDoc GUI Utility, do the following: 1. Double-click NDocGui.exe, to start NDocGUI. 2. Click Project, then click New. 3. In the section Select and Configure Documenter, select documentation type from the Documentation Type list. 4. Under Select and Configure Documenter, specify the parameters, such as Copyright text and Output directory.Note: The most important settings are in the Visibility section. Here you canconfigure the elements that you want to document, such as private variables,protected variables, and Namespaces without summaries. 5. Click Add. 6. In the Add Assembly Filename and XML Documentation Filename dialog, select the required EXE or DLL. NDoc processes the XML documentation file based on your selection.After building your project, find the compiled documentation for your class library inthe output directory that is specified in the output message.NDocs vs. Javadoc  A Javadoc tool can be run on Windows, Mac OS, Unix, and BSD. However, NDoc can run only on Windows.  A Javadoc tool is for generating documents from java source files. The tool therefore accepts text as an input. NDoc accepts only binary files as an input.  A Javadoc tool generates documents in an HTML format by default. You need a third-party tool called Doclet to generate an output in other formats, such as CHM, RTF, PDF, and postscript. NDoc can generate documents in various formats, such as MSDN, Linear HTML, and JavaDoc.Summary 61
  62. 62. Windows Phone 7 Guide for Android Application DevelopersIn this chapter, we looked at C# programming from the perspective of a Javadeveloper. C# is a strongly typed, object-oriented programming language that usesstatic binding. Several C# concepts are similar to the Java concepts. The knowledgeof Java and object oriented programming will help you to master C# quickly. Wealso looked at NDocs, which is the API documentation tool for Windows Phone 7.Related ResourcesTo go deeper into C# and Java, visit:  http://www.25hoursaday.com/CsharpVsJava.htmlTo go deeper into NDocs, visit:  http://ndoc.sourceforge.net/  http://shfb.codeplex.com/ – Sandcastle Summary 62
  63. 63. Windows Phone 7 Guide for Android Application DevelopersChapter 5: A Comparison ofApplication Life Cycles in WindowsPhone 7 and AndroidThe Windows Phone 7 (WP7) execution model improves user experience by cuttingdown on response time and offering seamless navigation among applications. Toachieve this, WP7 prioritizes the foreground application and tombstones other openapplications. Android on the other hand, saves all the application states anddisplays only the foreground application.Android suspends an open application when a user starts another application. Thesuspended application remains alive in the phone memory. WP7 activates anddeactivates applications dynamically to enable seamless navigation by limiting thephone to run one application at a time.The WP7 execution model provides users with a consistent navigation experiencebetween applications.In Android, users open applications using the launcher screen. On the launcherscreen, all the applications are listed as icons. In WP7, users navigate forward bylaunching applications from the installed Applications List or from a tile on theStart screen.In WP7, users can use the Back button on the phone to navigate backwards to apage in a running application. With this Back button, users can also navigatethrough a stack of previously running applications. This WP7 functionality is similarto Android‟s backward navigation. All Android devices have the Back button on thephone. A user can navigate to previous screens of applications until he reaches thehome screen of phone.The Android applications consist of various components, such as Activity, Services,ContentProvider, and Broadcast receivers. These components are not available inWP7 except for an Activity which can be mapped to a Page in WP7.Multitasking in Android and Windows Phone 7Android supports multitasking and provides seamless navigation betweenapplications. WP7 achieves seamless navigation using application tombstoning.Android puts applications in the background using the Service component. TheService component runs in the background even if your application is not inforeground until the application‟s task finishes or stopService is called.The upcoming version of WP7 will support multitasking. The WP7 navigation modelallows natural navigation, similar to a browser‟s Back button. The last accessed 63
  64. 64. Windows Phone 7 Guide for Android Application Developersapplication state is preserved as a user navigates across applications using the Backbutton on the phone.Tombstoning of Applications in Windows Phone 7Tombstoning is a process by which WP7 deactivates an application when a usernavigates away from this application. WP7 keeps a record of the tombstonedapplication and stores the latest data accessed by this application. If the userreturns to a tombstoned application, WP7 reactivates this application. The user canaccess the reactivated application by using a phone‟s Back button.Consider the following example. A user is composing a blog with WordPress. Hepressed the Start button to go to the Start screen. WP 7 deactivated the WordPressapplication. The user then accessed Facebook. While in Facebook, the user pressedthe Back button. The Start screen appeared. When the user pressed the Backbutton again, WordPress appeared exactly in the same way as she had viewed itthe last time.The following table describes the user events and compares the correspondingbehavior in Android and Windows Phone 7.User Action or Event Android Behavior Windows Phone 7 BehaviorAn incoming phone call or Running application is Running application isSMS moved to the background deactivated but is still in the memoryUser presses the Home Running application is Running application isbutton on the phone moved to the background, deactivated current activity will be paused but the application is still in memoryUser starts another Background application is The upcoming version ofapplication from the moved to foreground with WP7 will supportmultitasking menu the earlier saved state multitaskingUser navigates between No navigation occurs Deactivated orapplications using the when Back button is tombstoned application isBack button on the phone pressed when user is at activated to the earlier the home screen of the saved state phone.Life Cycle of a Windows Phone 7 Application 64

×