Professional Android Programming with Mono for Android and .NET/C#
Buy Rights Online Buy Rights

Rights Contact Login For More Details

  • Wiley

More About This Title Professional Android Programming with Mono for Android and .NET/C#

English

A one-of-a-kind book on Android application development with Mono for Android

The wait is over! For the millions of .NET/C# developers who have been eagerly awaiting the book that will guide them through the white-hot field of Android application programming, this is the book. As the first guide to focus on Mono for Android, this must-have resource dives into writing applications against Mono with C# and compiling executables that run on the Android family of devices.

Putting the proven Wrox Professional format into practice, the authors provide you with the knowledge you need to become a successful Android application developer without having to learn another programming language. You'll explore screen controls, UI development, tables and layouts, and MonoDevelop as you become adept at developing Android applications with Mono for Android.

Answers the demand for a detailed book on the extraordinarily popular field of Android application developmentStrengthens your existing skills of writing applications and shows you how to transfer your talents to building Android apps with Mono for Android and .NET/C#Dives into working with data, REST, SOAP, XML, and JSONDiscusses how to communicate with other applications, deploy apps, and even make money in the process

Professional Android Programming with Mono for Android and .NET/C# gets you up and running with Android app development today.

English

Wallace B. McClure is a Microsoft MVP, ASPInsider, and member of the national INETA Speaker's Bureau, and has a popular blog and podcast.

Nathan Blevins is an ASPInsider, a public speaker, and blogs at http://nathanblevins.com.

John J. Croft IV is an author, developer, and senior technical manager for Turner Broadcasting System in Atlanta.

Jonathan Dick develops mobile applications, maintains and contributes to several open source projects for mobile, and blogs about it all at http://redth.info.

Chris Hardy, a Microsoft ASPInsider, is a .NET consultant focusing on MonoTouch and Mono for Android development and tweets @chrisntr.

English

FOREWORD xxiii

INTRODUCTION xxv

CHAPTER 1: INTRODUCTION TO ANDROID, MOBILE DEVICES, AND THE MARKETPLACE 1

Product Comparison 2

The .NET Framework 2

Mono 3

Mono for Android 4

Mono for Android Components 5

Development Tools 6

Mobile Development 6

Getting Around Support Issues 7

Design Issues 7

Android 8

History of Android 8

Writing Web-Based Applications for Android 9

Writing Native Applications for Android 9

Android Development Issues 9

Android SDK Tools 10

Android Development Costs 11

Cross-Platform Alternatives 12

Other Cross-Platform Tools 12

Considerations for Selecting a Cross-Platform Tool 12

How Does the Tool Allow You to Author Your Application? 13

What Device Features Does the Tool Support? 13

What Platforms Does the Tool Support? 14

What Skill Sets Does the Tool Require? 14

What Tools Exist to Support Development? 14

How Active Are the Development Community and Support Channels? 14

What Are the Successful Application Deployments for This Tool? 14

Summary 15

CHAPTER 2: INTRODUCTION TO MONO FOR ANDROID 17

Before You Begin Developing 17

What Is Mono? 17

Mono Implementation Goals 18

Mono Standards 18

What Is Mono for Android? 18

Why Do I Need Mono for Android? 18

Familiar Development Environment 19

Familiar API and Library Structure 19

What Are the Trade-Off s of Working with Mono for Android? 21

Waiting for Improvements 21

Taking a Potential Performance Hit 21

Memory Management 21

What Do I Need for the Mono for Android Development Environment? 22

Java SDK 22

Android SDK 22

Visual Studio 24

Visual Studio Development with Mono for Android 25

General Setup 25

Building Hello Android 26

Logging 28

Debugging 30

Testing 30

Deploying 31

Mono for Android Development with MonoDevelop 31

General Setup 31

Building Hello Android 32

Logging 34

Debugging 34

Testing 34

Deploying 35

Summary 35

CHAPTER 3: UNDERSTANDING ANDROID/MONO FOR ANDROID APPLICATIONS 37

What Is an Android Application? 38

The Building Blocks of an Android Application 39

Activities 39

Services 44

Content Providers 44

Broadcast Receivers 47

Communicating between Components: Android Intents 49

Binding the Components: The Android Manifest 50

Android Manifest Basics 51

Editing the Manifest for Mono for Android via Visual Studio 54

Summary 56

CHAPTER 4: PLANNING AND BUILDING YOUR APPLICATION’S USER INTERFACE 59

Guidelines for a Successful Mobile UI 59

Building an Android UI 60

Views 60

Design Surface 61

Choosing a Control Layout 61

AbsoluteLayout 62

FrameLayout 63

LinearLayout 63

RelativeLayout 65

TableLayout 67

Optimizing Layouts 68

Designing Your User Interface Controls 69

TextView 70

EditText 70

AutoCompleteTextView 71

Spinner 71

Button 73

Check Box 73

Radio Buttons and Groups 73

Clocks 76

Pickers 77

Images 79

ImageView 80

ImageButton 80

Gallery 80

Virtual Keyboards 84

Selecting Your Virtual Keyboard 86

Removing the Keyboard 86

Controlling Your Menus 87

Introducing the Menu System 87

Menus 87

Submenus 90

Context Menus 90

Defi ning Menus as a Resource 92

Menus 93

Context Menus 94

Resolution-Independent UI 95

Supporting Various Screen Resources 95

Supporting Screen Sizes 95

Supporting Pixel Densities 96

Using Android Market Support 97

Multiple Screen Resolution Best Practices 97

Constructing a User Interface: A Phone and Tablet Example 98

Summary 104

CHAPTER 5: WORKING WITH DATA 105

Working with SQLite 105

Setting Up a Database 106

Setting Up Tables 107

Using SQL Statements 108

Using Read/Select to Read Data 108

Using SQL Statements to Insert Data 110

Upgrading Strategies 110

Upgrading in Place 111

Copying Data 111

Android-Specific Database Options 111

SQLiteOpenHelper 111

Storing Data Remotely 113

Working with Remote Data 113

Accessing Enterprise Services 114

Using SOAP 115

Working with ASMX Web Services 115

Working with Windows Communication Foundation (WCF) 116

Using REST-Based Web Services 119

Using JavaScript Object Notation (JSON) 120

Posting Data with POST 124

Retrieving Data Using LINQ and XML 125

Using Asynchronous Data Retrieval 127

Using Web Services Responsibly 128

Working with Remote SQL Server Databases 128

Summary 130

CHAPTER 6: BINDING DATA TO CONTROLS 131

Databinding in Mono for Android 132

What Is a Data Adapter? 133

What Is an Adapter View? 133

How Do These Items Relate to One Another? 134

Working with Adapter Views and Large Data Sets 134

Exploring Adapters in Depth 137

Using Native Adapters 137

Exploring Adapter Views in Depth 138

Using Native Adapter Views 138

Working with Cursors 139

Using a Cursor to Populate a Spinner 139

Setting Up the Spinner and Data Source 140

Using a Spinner Adapter 143

Adding a Listener Event for a Spinner 144

Using a Cursor with a Gallery 147

Setting Up the Project 148

Adding the Cursor 150

Completing the Custom Adapter 152

Working with Lists 154

Displaying Simple Data in a List 155

Working with Android’s ListAdapters 158

Customizing ListView with a Custom List Adapter 160

Handling ListView Events 166

Preferences Screen 168

Nested Navigation 171

Grouped Lists 173

Displaying Data in a Grid 177

Summary 182

CHAPTER 7: WORKING WITH THE FILE SYSTEM AND APPLICATION PREFERENCES 183

Working with the File System 184

File System Type and Structure 184

QuickEdit Sample Program: Working with a File Storage Example 189

Working with Application Preferences 195

Application Preference Types 195

Creating Your Own Application Preferences 196

Preferences Program 197

Listening for Preference Changes 202

Processing XML 204

Summary 205

CHAPTER 8: PROGRAMMING WITH THE DEVICE HARDWARE 207

Working with Sensors 208

Referencing the Sensor Manager 208

Sensor Support 208

Accessing Sensors 209

Using Sensors 209

Understanding the Sensor Type Values 211

Responding to Acceleration 212

Using the XYZ Coordinate System 213

Coding with the Accelerometer 213

Building a Compass 214

Vibration 218

Networking Connectivity 219

ConnectivityManager 219

Checking User Communication Preferences 219

Checking for Changes to BackgroundDataSetting 220

Checking Current Network Configuration 221

Creating Network Connectivity Notifications 221

Wifi Manager 221

WiFi States 224

WiFi Changes 225

Bluetooth Manager 225

Working with Bluetooth State 226

Enabling Voice Recognition in Your App 227

Getting Turn-by-Turn Directions 229

Summary 235

CHAPTER 9: USING MULTIMEDIA — AUDIO, VIDEO, AND THE CAMERA 237

Android Media Classes 238

Playing Audio and Video 239

Media Player Supported Formats 239

Programming Audio Playback 240

Programming Video Playback 244

Controlling Playback 247

Managing Playback Output 247

Recording Audio and Video 247

Using Intents to Record Video 248

Using the Media Recorder 251

Confi guring Video Recording 251

Previewing Video Recording 252

Audio Recording 253

Images and Using the Camera 254

Using Intents to Take Pictures 254

Controlling the Camera 257

Managing Camera Settings and Picture Options 257

Monitoring Autofocus 259

Using the Camera Preview 260

Taking a Picture 261

Reading and Writing JPEG Exif Values 262

Adding New Media to the Media Store 263

Using the Media Scanner 263

Adding New Media to the Store 264

Speech Recognition 265

Summary 266

CHAPTER 10: TALKING TO OTHER APPLICATIONS AND LIBRARIES 269

Android Application Integration 269

Opening the Browser 269

Opening E-mail 272

Making a Telephone Call 273

Sending a Text/SMS Message 274

Opening a Location in the Maps Application 276

Opening a YouTube Video 276

Opening the Market 277

Application Integration 278

Simple Integration with HootSuite and Other Twitter Applications 279

Configuring Your Intent Filters 279

Handling Incoming Intent Requests 280

Integrating with Contacts 280

Displaying Contact Details 283

Picking a Contact 284

Creating a New Contact 285

Creating a New Contact or Adding to an Existing Contact 286

Summary 287

CHAPTER 11: DEVELOPING BACKGROUND SERVICES AND ASYNCHRONOUS CODE 289

The Life Cycle of a Service 290

Creating Your First Service 290

Prioritizing Services 293

Using Threads for Asynchronous Processing 294

Threading Manually 295

Utilizing System.Threading.Tasks 297

Implicit Threading with the IntentService 298

Communicating with the UI 299

Using the Binder and Service Connection Method 299

Using the Broadcast Receiver Method 303

Using the Static Event Method 305

Notifying the User with Notifications 308

Scheduling Intents with Alarms and the IntentService 310

Push Notifi cations Using Cloud to Device Messaging (C2DM) 312

Listening for C2DM in Your Application 313

Sending a C2DM Message from Your Server 317

Summary 321

CHAPTER 12: CANVAS AND DRAWABLES: BUILDING CUSTOM ANDROID GRAPHICS 323

Working with Graphics in Mono for Android 324

Using the Canvas Object 325

Graphics Primitives 326

The Canvas Object 327

The Paint Object 328

The Bitmap Object 329

Bringing It All Together 330

A Path Primer 330

Case 1: Creating a Custom Graphic 331

Case 2: Responding to Events 336

Case 3: Animating Custom Graphics 342

Case 4: Improving Performance Using SurfaceView 347

Selecting the Best Approach 351

The 2D Graphics Library 352

Using Drawables 352

Drawables as XML Resources 353

Simple and Compound Drawables 354

Drawables in Action 354

Case 1: Using Default Drawables 354

Case 2: Adding Polish with the Shape Drawable 356

Case 3: Using the Gradient Drawable 360

Case 4: Using the Compound Drawable 362

Case 5: Interacting with a Custom Drawable 366

Summary 369

CHAPTER 13: WORKING WITH LOCATION INFORMATION 371

Understanding Location Basics 372

Determining Location 373

Location-Based Data Interruptions 373

Using Location-Based Services 374

Confi guring Location-Based Applications on the Emulator 374

Selecting a Location Provider 377

Determining Which Providers Are Available 377

Finding Location Providers with Criteria 377

Geocoding 379

Forward Geocoding 379

Reverse Geocoding 380

Constructing Proximity Alerts 382

Using Google Maps 384

Getting Your Development/Debugging MD5 Fingerprint 385

Getting Your Production/Release MD5 Fingerprint 386

Creating the Maps-Based Activity 386

Creating a Map in a Layout File 387

Using the MapView Controller with an Overlay 388

Summary 391

CHAPTER 14: INTERNATIONALIZATION AND LOCALIZATION 393

Selecting a Localization Strategy 395

Updating Language and Regional Settings 396

Understanding the Mechanics of Android Localization 398

Setting Up Default Resources 398

Adding Localization Support 399

Resource Selection in Detail 399

Supporting Multiple Languages 400

Utilizing the Strings.xml File 400

Translating Text 401

Translating Control Text 404

Localizing Other Resources 406

Localizing the Menu Icon and Application Name 409

Advanced Usage of Strings.xml 410

String Array 410

Plurals 410

String Replacements 411

Working with Format Conversions 414

Formatting Dates 414

Formatting Numbers and Currency 414

Summary 415

CHAPTER 15: SHARING CODE BETWEEN MONO FOR ANDROID, MONOTOUCH, AND WINDOWS PHONE 7 417

Overview of the Three Platforms 417

Mono for Android 418

MonoTouch 418

Windows Phone 7 419

Using Class Libraries to Separate the Code 420

Using Preprocessor Directives 420

Mono for Android 421

Windows Phone 7 421

MonoTouch 422

Assemblies Available on Each Platform 422

One Class Library to Rule Them All 425

Mono for Android 426

MonoTouch 428

Windows Phone 7 429

Putting It All Together: Creating a Cross-Platform Application 431

Summary 443

CHAPTER 16: PREPARING AND PUBLISHING YOUR APPLICATION TO THE MARKET 445

Preparing Your Application 446

Testing Your Application 446

Hitting the Key Testing Areas 447

Tools for the Testing Trade 449

Unit Testing 449

DDMS 449

The Emulator 452

Traceviews 453

Stress Testing via the Application Exerciser Monkey 455

UI Testing via the Monkeyrunner 456

Involving Peers and Users in the Testing Process 456

Publishing Your Application to the Android Market 457

Versioning Your Application 457

Creating the Final Build 459

Signing Your Application 461

Creating a Private Key 461

Creating a Self-Signed Certificate 464

Aligning the Final Package 464

Uploading to the Android Market 465

Summary 466

CHAPTER 17: ANDROID TABLETS 469

Examining the Android Tablet Marketplace 469

Designing a Tablet UI 470

Using the Action Bar 472

Removing the Action Bar 473

Adding Items to the Action Bar 473

Using the Application Icon 477

Navigating “Up” the Stack 477

Adding and Using Action Items 478

Creating a Tabbed Interface 479

Partial Screen Control Using Fragments 480

Creating Fragments 481

More Fragments 486

Summary 494

APPENDIX A: TIPS FOR DEVELOPERS AND THE FUTURE OF MONO AND ANDROID 495

Best Practices, Hints, Tips, and Gotchas 495

Android Honeycomb (3.0) and Ice Cream Sandwich (4.0) 499

Fragments for All! 502

Android Version and Device Fragmentation 503

What’s Next for Mono for Android? 504

Using Xamarin.Mobile for Cross-Platform Mobile Functionality 505

INDEX 507

loading