Pro Android Media Developing Graphics Music Video and Rich Media Apps for Smartphones and Tablets

by Shawn Van Every

Pro Android Media Developing Graphics Music Video and Rich Media Apps for Smartphones and Tablets

Publisher :

Author : Shawn Van Every

ISBN : 9781430232674

Year : 2010

Language: en

File Size : 7.52 MB

Category : Computers Technology

Utilize the Android media APIs
to create dynamic mobile apps

Pro

Android Media

Developing Graphics, Music, Video and
Rich Media Apps for Smartphones and Tablets
Shawn Van Every





Pro Android Media
Developing Graphics, Music, Video,
and Rich Media Apps for Smartphones
and Tablets

■■■
Shawn Van Every

i


Pro Android Media: Developing Graphics, Music, Video, and Rich Media Apps for Smartphones
and Tablets
Copyright © 2009 by Shawn Van Every
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including photocopying, recording, or by any information
storage or retrieval system, without the prior written permission of the copyright owner and the
publisher.
ISBN-13 (pbk): 978-1-4302-3267-4
ISBN-13 (electronic): 978-1-4302-3268-1
Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos,
and images only in an editorial fashion and to the benefit of the trademark owner, with no
intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
President and Publisher: Paul Manning
Lead Editor: Matthew Moodie
Technical Reviewers: Steve Bull and Wallace Jackson
Editorial Board: Steve Anglin, Mark Beckner, Ewan Buckingham, Gary Cornell, Jonathan
Gennick, Jonathan Hassell, Michelle Lowman, Matthew Moodie, Duncan Parkes, Jeffrey
Pepper, Frank Pohlmann, Douglas Pundick, Ben Renow-Clarke, Dominic Shakeshaft,
Matt Wade, Tom Welsh
Coordinating Editor: Corbin Collins
Copy Editor: Mary Ann Fugate
Compositor: MacPS, LLC
Indexer: BIM Indexing & Proofreading Services
Artist: April Milne
Cover Designer: Anna Ishchenko
Distributed to the book trade worldwide by Springer Science+Business Media, LLC., 233 Spring
Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail
[email protected], or visit www.springeronline.com.
For information on translations, please e-mail [email protected], or visit www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or
promotional use. eBook versions and licenses are also available for most titles. For more
information, reference our Special Bulk Sales–eBook Licensing web page at
www.apress.com/info/bulksales.
The information in this book is distributed on an “as is” basis, without warranty. Although every
precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall
have any liability to any person or entity with respect to any loss or damage caused or alleged to
be caused directly or indirectly by the information contained in this work.
The source code for this book is available to readers at www.apress.com.

ii


Contents at a Glance
■Contents ......................................................................................................... iv
■About the Author .......................................................................................... viii
■About the Technical Reviewers ...................................................................... ix
■Acknowledgments ........................................................................................... x
■Preface ........................................................................................................... xi
■Chapter 1: Introduction to Android Imaging .................................................... 1
■Chapter 2: Building Custom Camera Applications......................................... 23
■Chapter 3: Image Editing and Processing ..................................................... 47
■Chapter 4: Graphics and Touch Events .......................................................... 79
■Chapter 5: Introduction to Audio on Android ............................................... 105
■Chapter 6: Background and Networked Audio ............................................ 125
■Chapter 7: Audio Capture ............................................................................ 151
■Chapter 8: Audio Synthesis and Analysis ................................................... 179
■Chapter 9: Introduction to Video ................................................................. 195
■Chapter 10: Advanced Video ....................................................................... 211
■Chapter 11: Video Capture ........................................................................... 229
■Chapter 12: Media Consumption and Publishing Using Web Services ........ 251
■Index ............................................................................................................ 291

iii


Contents
■Contents at a Glance....................................................................................... iii
■About the Author .......................................................................................... viii
■About the Technical Reviewers ...................................................................... ix
■Acknowledgments ........................................................................................... x
■Preface ........................................................................................................... xi
■Chapter 1: Introduction to Android Imaging .................................................... 1
Image Capture Using the Built-In Camera Application ............................................................................................1
Returning Data from the Camera App ................................................................................................................3
Capturing Larger Images ...................................................................................................................................5
Displaying Large Images....................................................................................................................................6
Image Storage and Metadata................................................................................................................................10
Obtaining an URI for the Image ........................................................................................................................11
Updating Our CameraActivity to Use MediaStore for Image Storage and to Associate Metadata ...................12
Retrieving Images Using the MediaStore .........................................................................................................16
Creating an Image Viewing Application ...........................................................................................................18
Internal Metadata.............................................................................................................................................21
Summary ..............................................................................................................................................................21
■Chapter 2: Building Custom Camera Applications......................................... 23
Using the Camera Class ........................................................................................................................................23
Camera Permissions ........................................................................................................................................24
Preview Surface ...............................................................................................................................................24
Implementing the Camera ...............................................................................................................................25
Putting It All Together ......................................................................................................................................35
Extending the Custom Camera Application ...........................................................................................................38
Building a Timer-Based Camera App ...............................................................................................................38
Building a Time-Lapse Photography App .........................................................................................................43
Summary ..............................................................................................................................................................45


iv


■ CONTENTS

■Chapter 3: Image Editing and Processing ..................................................... 47
Selecting Images Using the Built-In Gallery Application .......................................................................................47
Drawing a Bitmap onto a Bitmap ..........................................................................................................................52
Basic Image Scaling and Rotating ........................................................................................................................54
Enter the Matrix ...............................................................................................................................................55
Matrix Methods ................................................................................................................................................58
Alternative to Drawing .....................................................................................................................................64
Image Processing .................................................................................................................................................65
ColorMatrix ......................................................................................................................................................65
Altering Contrast and Brightness .....................................................................................................................67
Changing Saturation ........................................................................................................................................69
Image Compositing ...............................................................................................................................................69
Summary ..............................................................................................................................................................78
■Chapter 4: Graphics and Touch Events .......................................................... 79
Canvas Drawing ....................................................................................................................................................79
Bitmap Creation ...............................................................................................................................................79
Bitmap Configuration .......................................................................................................................................80
Creating the Canvas .........................................................................................................................................81
Working with Paint...........................................................................................................................................82
Drawing Shapes ...............................................................................................................................................83
Drawing Text ....................................................................................................................................................87
Finger Painting ......................................................................................................................................................93
Touch Events ...................................................................................................................................................93
Drawing on Existing Images ............................................................................................................................97
Saving a Bitmap-Based Canvas Drawing.......................................................................................................101
Summary ............................................................................................................................................................104
■Chapter 5: Introduction to Audio on Android ............................................... 105
Audio Playback ...................................................................................................................................................105
Supported Audio Formats ..............................................................................................................................106
Using the Built-In Audio Player via an Intent .................................................................................................107
Creating a Custom Audio-Playing Application ...............................................................................................109
MediaStore for Audio .....................................................................................................................................115
Summary ............................................................................................................................................................123
■Chapter 6: Background and Networked Audio ............................................ 125
Background Audio Playback ...............................................................................................................................125
Services .........................................................................................................................................................125
Local Service plus MediaPlayer .....................................................................................................................129
Controlling a MediaPlayer in a Service ..........................................................................................................132
Networked Audio ................................................................................................................................................137
HTTP Audio Playback .....................................................................................................................................137
Streaming Audio via HTTP .............................................................................................................................143
RTSP Audio Streaming ...................................................................................................................................150
Summary ............................................................................................................................................................150
■Chapter 7: Audio Capture ............................................................................ 151
Audio Capture with an Intent ..............................................................................................................................151
Custom Audio Capture ........................................................................................................................................154
v


■ CONTENTS

MediaRecorder Audio Sources.......................................................................................................................155
MediaRecorder Output Formats .....................................................................................................................155
MediaRecorder Audio Encoders .....................................................................................................................156
MediaRecorder Output and Recording ...........................................................................................................156
MediaRecorder State Machine.......................................................................................................................156
MediaRecorder Example ................................................................................................................................157
Other MediaRecorder Methods ......................................................................................................................162
Inserting Audio into the MediaStore ...................................................................................................................167
Raw Audio Recording with AudioRecord ............................................................................................................167
Raw Audio Playback with AudioTrack ................................................................................................................170
Raw Audio Capture and Playback Example ........................................................................................................172
Summary ............................................................................................................................................................177

■Chapter 8: Audio Synthesis and Analysis ................................................... 179
Digital Audio Synthesis .......................................................................................................................................179
Playing a Synthesized Sound .........................................................................................................................180
Generating Samples.......................................................................................................................................182
Audio Analysis.....................................................................................................................................................187
Capturing Sound for Analysis.........................................................................................................................188
Visualizing Frequencies .................................................................................................................................189
Summary ............................................................................................................................................................193
■Chapter 9: Introduction to Video ................................................................. 195
Video Playback ....................................................................................................................................................195
Supported Formats ........................................................................................................................................195
Playback Using an Intent ...............................................................................................................................196
Playback Using VideoView .............................................................................................................................197
Adding Controls with MediaController ...........................................................................................................199
Playback Using a MediaPlayer .......................................................................................................................200
Summary ............................................................................................................................................................210
■Chapter 10: Advanced Video ....................................................................... 211
MediaStore for Retrieving Video .........................................................................................................................211
Video Thumbnails from the MediaStore .........................................................................................................212
Full MediaStore Video Example .....................................................................................................................212
Networked Video.................................................................................................................................................218
Supported Network Video Types ....................................................................................................................218
Network Video Playback ................................................................................................................................221
Summary ............................................................................................................................................................228
■Chapter 11: Video Capture ........................................................................... 229
Recording Video Using an Intent .........................................................................................................................229
Adding Video Metadata .......................................................................................................................................232
Custom Video Capture ........................................................................................................................................235
MediaRecorder for Video ...............................................................................................................................235
Full Custom Video Capture Example ..............................................................................................................246
Summary ............................................................................................................................................................250
■Chapter 12: Media Consumption and Publishing Using Web Services ........ 251
Web Services ......................................................................................................................................................251
HTTP Requests ....................................................................................................................................................252
vi


■ CONTENTS

JSON ...................................................................................................................................................................254
Pulling Flickr Images Using JSON ..................................................................................................................257
Location .........................................................................................................................................................263
Pulling Flickr Images Using JSON and Location ............................................................................................266
REST ...................................................................................................................................................................273
Representing Data in XML .............................................................................................................................273
SAX Parsing ...................................................................................................................................................274
HTTP File Uploads ...............................................................................................................................................278
Making an HTTP Request ...............................................................................................................................278
Uploading Video to Blip.TV .............................................................................................................................280
Summary ............................................................................................................................................................290

■Index ............................................................................................................ 291

vii


■ ACKNOWLEDGMENTS

About the Author
Shawn Van Every runs a mobile and streaming media consultancy to help
companies better utilize emerging technologies related to audio and video
with a focus on mobile and streaming applications. His clients have ranged
from 19 Entertainment, MoMA, and Disney to Morgan Stanley, Lehman
Brothers, and NYU Medical School, along with countless start-ups and other
small clients.
Additionally, Shawn is an Adjunct Assistant Professor of Communication in
NYU's Interactive Telecommunications Program. His teaching is varied and
includes courses on participatory and social media, programming, mobile
technologies, and interactive telephony. In 2008 he was honored with the David Payne Carter
award for excellence in teaching.
He has demonstrated, exhibited, and presented work at many conferences and technology
demonstrations, including O'Reilly's Emerging Telephony, O'Reilly's Emerging Technology, ACM
Multimedia, Vloggercon, and Strong Angel II. He was a co-organizer of the Open Media
Developers Summit, Beyond Broadcast (2006), and iPhoneDevCamp NYC.
Shawn holds a Master's degree in Interactive Telecommunications from NYU and a Bachelor's
degree in Media Study from SUNY at Buffalo.

viii


■ CONTENTS

About the Technical
Reviewers
Steve Bull has been coding and manipulating mobile devices since his days
at Paul Allen's Interval Research in Palo Alto. As a mixed-media technology
artist and entrepreneur, for the last nine years Bull has created locationspecific narratives and games that explore the social, technological and
creative possibilities of cell phones. He can be reached at
www.stevebull.org.

Wallace Jackson is a seasoned multimedia producer and i3D programmer for Acrobat3D PDF,
Android mobile apps, iTV Design, JavaFX, and JavaTV. He has been designing rich media since
the Atari ST1040 and AMIGA 3000 and has been writing for leading multimedia publications on
new media content development since the advent of Multimedia Producer magazine nearly two
decades ago. He can be reached at www.wallacejackson.com.

ix


■ ACKNOWLEDGMENTS

Acknowledgments

Download from Wow! eBook

The idea for this book came out of my work teaching at NYU. A huge debt of gratitude is owed to
the ever encouraging faculty, staff, and students who comprise NYU’s Interactive
Telecommunications Program and who provide an endless source of inspiration. Thank you to
Red Burns for creating, fostering, and ever improving ITP. Thank you to Dan O’Sullivan for
constantly challenging me. Thank you to Tom Igoe and Dan Shiffman for showing me that it can
be done. Thank you to Rob Ryan and Marianne Petite for all of your support. Thank you to all of
the rest of the faculty, staff, and residents that I have worked with. And thank you to all of my
current and former students who have made me realize how rewarding it can be to teach and see
projects come alive; particularly Nisma Zaman, who provided very valuable early feedback.
This book would not have come close to being in existence if it weren’t for the dedicated and very
talented staff at Apress. Thank you Steve Anglin, Matthew Moodie, Corbin Collins, Mary Ann
Fugate, Adam Heath, Anne Collette, and the rest of the Apress staff for your extraordinary effort.
A huge thank you to Steve Bull and Wallace Jackson, the technical reviewers for testing every
piece of code and for filling in the blanks when I missed something. Your contributions were
invaluable!
It goes without saying but this book could not have been written if it weren’t for the folks
responsible for bringing Android into existence. Thank you to them, particularly Dave Sparks
from Google who made himself available for some very valuable fact checking and question
answering.
To all of my friends and family who were so encouraging, thank you.
Finally, of course, this book would not have happened without the support of my wonderful wife,
Karen Van Every. Thank you!

x


■ CONTENTS

Preface
Among all the things that mobile phones are and have become, one definite trend is the increase
in the media production and consumption capabilities they offer. This trend began with the
advent of the camera phone in the late 1990s, and over the last few years has dramatically taken
off with the surging popularity of smart phones. In terms of media capabilities, today’s mobile
handsets are simultaneously cameras, photo albums, camcorders, movie players, music players,
dictation machines, and potentially much more.
In particular, Android has rich capabilities available within the SDK that this book seeks to
illuminate with discussion and examples so that you can get a jump-start on developing the next
generation media applications. It walks you through examples that not only show how to display
and play media but also allow you to take advantage of the camera, microphone, and video
capture capabilities. It is organized more or less into four sections: The first four chapters deal
with imaging; the second four handle audio; and the final four are about video and harnessing
web services for finding and sharing media.
The examples presented within get a bit more challenging as the book progresses, as the
amount of work that needs to be done to develop applications that harness the capabilities
increases. Regardless, with some familiarity with Android application development you, the
reader should be able to jump to any section and utilize the discussion and example code to
create an application that utilizes the capabilities presented.
The examples are generally in the form of a full class that extends an Activity targeted to run
with the SDK version 4 (Android 1.6) or later. The examples also include the contents of an XML
layout file and in many cases the contents of the AndroidManifest.xml file. It is assumed that you
will be using Eclipse (Galileo or later) with the ADT plugin (0.9.9 or later) and using the Android
SDK (r7 or later). Since much of the book is geared toward audio and video, I advise that you run
the examples on a handset (running Android 1.6 or later) rather than on the emulator, because in
many cases the examples do not function on the emulator.
I am excited to see what the future of media applications on mobile devices is. It is my hope
that through this book I can help you to create and define that future. I look forward to seeing
your Android media applications in action.
With all that out of the way, let’s get started!

xi


■ ACKNOWLEDGMENTS

xii


1

Chapter

1

Introduction to Android
Imaging
In this chapter, we’ll look at the basics of image capture and storage on Android. We’ll
explore the built-in capabilities that Android provides first and in later chapters move
into more custom software. The built-in capabilities for image capture and storage
provide a good introduction to the overall media capabilities on Android and pave the
way toward what we’ll be doing in later chapters with audio and video.
With that in mind, we’ll start with how to harness the built-in Camera application and
move on to utilizing the MediaStore, the built-in media and metadata storage
mechanism. Along the way, we’ll look at ways to reduce memory usage and leverage
EXIF, the standard in the consumer electronics and image processing software worlds
for sharing metadata.

Image Capture Using the Built-In Camera Application
With mobile phones quickly becoming mobile computers, they have in many ways
replaced a whole variety of consumer electronics. One of the earliest non-phone related
hardware capabilities added to mobile phones was a camera. Currently, it seems
someone would be hard pressed to buy a mobile phone that doesn’t include a camera.
Of course, Android-based phones are no exception; from the beginning, the Android
SDK has supported accessing the built-in hardware camera on phones to capture
images.
The easiest and most straightforward way to do many things on Android is to leverage
an existing piece of software on the device by using an intent. An intent is a core
component of Android that is described in the documentation as a “description of an
action to be performed.” In practice, intents are used to trigger other applications to do
something or to switch between activities in a single application.
All stock Android devices with the appropriate hardware (camera) come with the Camera
application. The Camera application includes an intent filter, which allows developers to

1


© 2018-2019 uberlabel.com. All rights reserved