Mono for Android has been available for more than a year. The documentation for the product is adequate and has been improving over time, but until recently, finding a good book about the technology was difficult. Such a constraint has been lifted thanks to Wiley's Professional Android Programming with Mono for Android and .NET/C#. Written under the Wrox imprint by several contributors (Wallace B. McClure, Nathan Blevins, John J. Croft, Jonathan Dick, and Chris Hardy), the book is one of the most comprehensive and helpful Mono for Android titles currently on the market.
The book is divided into 17 chapters and a single appendix. In approaching the book's topic, the authors assume the reader is already fairly well versed in C# and the .NET Framework. The introductory chapters do a moderately good job of selling the reasons Mono for Android is worthy of a 500-plus-page book. Even so, typical Mono for Android customers who will read this book likely chose the product because of their aversion to the (syntactically close to C#) Java language, because they want to maximize their knowledge of C# syntax and the foundational .NET Framework, or because (most optimally) they want to create native applications simultaneously for the Apple iOS, Google Android, and Microsoft Windows Phone 7 platforms.
Although it would be a dream to simply port over existing C# code into a Mono for Android project, compile it, and watch it "automagically" just work, the reality is that developers will need to spend a decent amount of time learning the Mono framework UI classes and replacements for various .NET Framework equivalents. This is not a trivial task, and it's compounded by the lack of a UI builder that works as effortlessly as the one for Windows Phone 7. Even though Mono for Android works within the Visual Studio environment, the lack of a flawless UI builder makes for even more under-the-hood exploration. Fortunately, the book shines in explaining UI building for Android apps, as it also does with chapters on working with data (covering topics such as databases, SOAP, JSON, LINQ, and XML) and data binding (covering native adapters, cursors, and navigation). Also provided are examples for working with the file system and setting/getting application preferences.
The book also covers data interaction with the phone's various sensors, including accelerometer, Bluetooth, compass, Wi-Fi, and even voice recognition and text-to-speech (courtesy of a turn-by-turn directions example). Multimedia examples show readers how to leverage the Android Media classes in order to control, play back, and record audio and video and take still camera photos with help from the camera settings options, autofocus and preview. Application intents are discussed in a chapter covering the topic of talking to other applications and libraries. Examples include opening a browser, email, map location, Android Market (aka Google Play), contacts, Twitter integration, and more.
The later chapters cover more advanced topics, such as creating services, running asynchronous threads, building and animating custom graphics, and handling location-based services, geocoding, and map-based activities. Miscellaneous topics, including localization and internationalization, publishing apps on Google Play, and a final chapter on building interfaces for Android tablets, round out the book. The appendix, which contains several helpful tips and tricks, could have been a chapter in its own right.
Overall, no other Mono for Android book yet on the market covers the breadth and detail (or matches the page count) that this one does. If you're a seasoned .NET professional but new to Mono for Android, spend a few extra dollars and buy this book. It distills everything you need to know to build Android applications using Mono into a comprehensive, exceptional package.
Professional Android Programming with Mono for Android and .NET/C#
RATING: 5 out of 5 stars
RECOMMENDATION: This book is a must-have if you invest in a Mono for Android development license.
Mike Riley is an advanced computing professional specializing in emerging technologies and new development trends. He is also a contributing editor for Dev Pro.