About the Author |
|
xiii | |
About the Technical Reviewer |
|
xv | |
Acknowledgments |
|
xvii | |
|
Introducing Mobile Media API (MMAPI) |
|
|
1 | (6) |
|
What Is Mobile Media API (MMAPI)? |
|
|
1 | (2) |
|
MMAPI Features and Requirements |
|
|
2 | (1) |
|
|
3 | (1) |
|
How Does MMAPI Fit with MIDP 2.0? |
|
|
3 | (2) |
|
|
5 | (1) |
|
|
6 | (1) |
|
|
7 | (12) |
|
Understanding Players and DataSources |
|
|
7 | (2) |
|
|
8 | (1) |
|
|
9 | (1) |
|
Understanding the Manager Class |
|
|
9 | (4) |
|
Creating Player Instances |
|
|
10 | (1) |
|
Creating Player Instances for MIDI and Tone Sounds |
|
|
11 | (1) |
|
Supported Protocols and Content Types |
|
|
11 | (2) |
|
|
13 | (1) |
|
|
14 | (1) |
|
Feature Set Implementations |
|
|
15 | (1) |
|
|
16 | (1) |
|
|
17 | (2) |
|
Getting Started with MMAPI |
|
|
19 | (20) |
|
A Simple Multimedia Player |
|
|
19 | (3) |
|
Creating a Functional Player |
|
|
22 | (15) |
|
|
23 | (6) |
|
Improving AudioPlayerCanvas: Caching Player Instances |
|
|
29 | (8) |
|
|
37 | (2) |
|
Media Player Lifecycle and Events |
|
|
39 | (20) |
|
|
39 | (1) |
|
Exploring the Different Player States |
|
|
39 | (8) |
|
|
40 | (1) |
|
|
41 | (2) |
|
|
43 | (1) |
|
|
44 | (2) |
|
|
46 | (1) |
|
Responding to Player Events |
|
|
47 | (11) |
|
Understanding the Event Delivery Mechanism |
|
|
50 | (1) |
|
Creating an Event Handling Class |
|
|
51 | (4) |
|
|
55 | (3) |
|
|
58 | (1) |
|
Accessing Media Over the Network |
|
|
59 | (14) |
|
Understanding Threads in Java ME |
|
|
59 | (4) |
|
Understanding Permissions for Network Access |
|
|
63 | (4) |
|
|
67 | (4) |
|
|
71 | (2) |
|
Creating and Playing Tones Using ToneControl |
|
|
73 | (22) |
|
Understanding Synthetic Tones |
|
|
73 | (6) |
|
Understanding Note, Pitch, and Frequency |
|
|
74 | (2) |
|
Using a MMAPI Formula to Calculate Note Values |
|
|
76 | (3) |
|
Using the playTone() Method |
|
|
79 | (2) |
|
Using Tone Sequences with ToneControl |
|
|
81 | (12) |
|
|
82 | (6) |
|
Playing Sequences Using ToneControl and Player |
|
|
88 | (1) |
|
Distributing Tone Sequences |
|
|
89 | (4) |
|
|
93 | (2) |
|
Managing MIDI Using MIDIControl, TempoControl, and PitchControl |
|
|
95 | (32) |
|
|
95 | (7) |
|
Understanding the MIDI Specification |
|
|
96 | (5) |
|
Storing and Distributing MIDI Messages |
|
|
101 | (1) |
|
|
102 | (23) |
|
Playing MIDI Without MIDIControl |
|
|
102 | (11) |
|
Playing MIDI with MIDIControl |
|
|
113 | (12) |
|
|
125 | (2) |
|
Working with Audio and Video |
|
|
127 | (58) |
|
Querying the Capabilities of Your Device |
|
|
127 | (6) |
|
Understanding Media Encodings |
|
|
132 | (1) |
|
A Brief Overview of Sampled Audio |
|
|
133 | (1) |
|
|
133 | (1) |
|
Controlling Sampled Audio |
|
|
134 | (8) |
|
Setting Preset Stop Times with StopTimeControl |
|
|
134 | (5) |
|
Gathering Information Using MetaDataControl |
|
|
139 | (3) |
|
Mixing Sampled Audio, MIDI, and Tones |
|
|
142 | (4) |
|
|
146 | (17) |
|
Timed Capture and Playback |
|
|
147 | (4) |
|
Controlled Capture and Playback |
|
|
151 | (7) |
|
|
158 | (4) |
|
Capturing Audio from Existing Audio |
|
|
162 | (1) |
|
|
163 | (18) |
|
|
163 | (6) |
|
Positioning Video and Controlling Volume |
|
|
169 | (4) |
|
Capturing Video and Images |
|
|
173 | (8) |
|
Seeking Video Frames with FramePositioningControl |
|
|
181 | (1) |
|
|
181 | (3) |
|
|
184 | (1) |
|
Case Study: Device Blogging |
|
|
185 | (54) |
|
About the Companion Web Site |
|
|
185 | (1) |
|
The Finished MIDIet in Action |
|
|
185 | (7) |
|
|
186 | (1) |
|
Registering with the Device Blog Web Site |
|
|
186 | (1) |
|
Logging in to Device Blog Web Site |
|
|
187 | (1) |
|
Creating and Posting Blog Entries |
|
|
188 | (4) |
|
Creating the MIDIet Design |
|
|
192 | (6) |
|
|
192 | (2) |
|
|
194 | (3) |
|
|
197 | (1) |
|
|
198 | (34) |
|
Creating the Model Classes |
|
|
198 | (7) |
|
Creating the Utility Classes |
|
|
205 | (6) |
|
|
211 | (16) |
|
Creating the Control Classes |
|
|
227 | (5) |
|
|
232 | (5) |
|
|
237 | (2) |
|
APPENDIX A Mobile Media Api (MMAPI) Reference |
|
|
239 | (10) |
|
Package javax.microedition.media |
|
|
239 | (3) |
|
|
239 | (1) |
|
|
239 | (1) |
|
|
240 | (1) |
|
|
240 | (1) |
|
|
240 | (1) |
|
|
241 | (1) |
|
|
242 | (1) |
|
Package javax.microedition.media.control |
|
|
242 | (4) |
|
Interface FramePositioningControl |
|
|
242 | (1) |
|
|
242 | (1) |
|
Interface MetaDataControl |
|
|
242 | (1) |
|
|
243 | (1) |
|
|
243 | (1) |
|
|
243 | (1) |
|
|
244 | (1) |
|
Interface StopTimeControl |
|
|
244 | (1) |
|
|
244 | (1) |
|
|
245 | (1) |
|
|
245 | (1) |
|
|
246 | (1) |
|
Package javax.microedition.media.protocol |
|
|
246 | (3) |
|
|
246 | (1) |
|
|
246 | (1) |
|
|
247 | (2) |
|
APPENDIX B URI Syntax for Media Locators |
|
|
249 | (2) |
|
APPENDIX C Advanced Multimedia Supplements---JSR 234 |
|
|
251 | (4) |
|
|
251 | (4) |
|
|
252 | (1) |
|
|
252 | (1) |
|
|
252 | (1) |
|
|
252 | (1) |
|
|
252 | (1) |
|
|
253 | (2) |
Index |
|
255 | |