PacktLib: Android NDK Beginner’s Guide

Android NDK

Credits

About the Author

About the Reviewers

www.PacktPub.com

Preface

Setting Up your Environment

Getting started with Android development

Setting up Windows

Time for action — preparing Windows for Android development

Installing Android development kits on Windows

Time for action — installing Android SDK and NDK on Windows

Setting up Mac OS X

Time for action — preparing Mac OS X for Android development

Installing Android development kits on Mac OS X

Time for action — installing Android SDK and NDK on Mac OS X

Setting up Linux

Time for action — preparing Ubuntu Linux for Android development

Installing Android development kits on Linux

Time for action — installing Android SDK and NDK on Ubuntu

Setting up the Eclipse development environment

Time for action — installing Eclipse

Emulating Android

Time for action — creating an Android virtual device

Developing with an Android device on Windows and Mac OS X

Time for action — setting up your Android device on Windows and Mac OS X

Developing with an Android device on Linux

Time for action — setting up your Android device on Ubuntu

Troubleshooting a development device

Summary

Creating, Compiling, and Deploying Native Projects

Compiling and deploying NDK sample applications

Time for action — compiling and deploying the hellojni sample

Exploring Android SDK tools

Creating your first Android project using eclipse

Time for action — initiating a Java project

Interfacing Java with C/C++

Time for action — calling C code from Java

Compiling native code from Eclipse

Time for action — creating a hybrid Java/C/C++ project

Summary

Interfacing Java and C/C++ with JNI

Working with Java primitives

Time for action — building a native key/value store

Referencing Java objects from native code

Time for action — saving a reference to an object in the Store

Throwing exceptions from native code

Time for action — raising exceptions from the Store

Handling Java arrays

Time for action — saving a reference to an object in the Store

Summary

Calling Java Back from Native Code

Synchronizing Java and native threads

Time for action — running a background thread

Calling Java back from native code

Time for action — invoking Java code from a native thread

Processing bitmaps natively

Time for action — decoding camera feed from native code

Summary

Writing a Fully-native Application

Creating a native activity

Time for action — creating a basic native activity

Handling activity events

Time for action — handling activity events

Accessing window and time natively

Time for action — displaying raw graphics and implementing a timer

Summary

Rendering Graphics with OpenGL ES

Initializing OpenGL ES

Time for action — initializing OpenGL ES

Reading PNG textures with the asset manager

Time for action — loading a texture in OpenGL ES

Drawing a sprite

Time for action — drawing a Ship sprite

Rendering a tile map with vertex buffer objects

Time for action — drawing a tile-based background

Summary

Playing Sound with OpenSL ES

Initializing OpenSL ES

Time for action — creating OpenSL ES engine and output

Playing music files

Time for action — playing background music

Playing sounds

Time for action — creating and playing a sound buffer queue

Recording sounds

Summary

Handling Input Devices and Sensors

Interacting with Android

Time for action — handling touch events

Detecting keyboard, D-Pad, and Trackball events

Time for action — handling keyboard, D-Pad, and trackball, natively

Probing device sensors

Time for action — turning your device into a joypad

Summary

Porting Existing Libraries to Android

Developing with the Standard Template Library

Time for action — embedding GNU STL in DroidBlaster

Compiling Boost on Android

Time for action — embedding Boost in DroidBlaster

Porting third-party libraries to Android

Time for action — compiling Box2D and Irrlicht with the NDK

Mastering Makefiles

Towards Professional Gaming

Simulating physics with Box2D

Time for action — simulating physics with Box2D

Running a 3D engine on Android

Time for action — rendring 3D graphics with Irrlicht

Summary

Debugging and Troubleshooting

Debugging with GDB

Time for action — debugging DroidBlaster

Stack trace analysis

Time for action — analysing a crash dump

Performance analysis

Time for action — running GProf

Summary

Afterword

Afterword

Afterword

Afterword

Afterword