The proposed Multimedia API specification provides a high-levelinterface to sound and multimedia capabilities of a device runningJ2ME. The target is to enable versatile multimedia functionality inJ2ME applications. The specification willl address the scalability of aMultimedia API for various devices. To focus the effort, care will begiven to ensure that this API will support basic sound functionality onconstrained memory devices, with the possibility of additionalfunctionality supported by more capable devices
播放单
try
{
Manager.playTone(ToneControl.C4, 5000
/* millisec */, 100 /* max vol */);
}
catch (MediaException e){}
简单媒体重放功能实现:
try
{
Player p = Manager.createPlayer
("http://webserver/music.mp3");
p.setLoopCount(5);
p.start();
}
catch (IOException ioe){}
catch (MediaException me){}
重放控制:
static final long SECS_TO_MICROSECS = 1000000L;
Player p;
VolumeControl vc;
try {
p = Manager.createPlayer("http://webserver/music.mp3");
p.realize();
// Set a listener.
p.addPlayerListener(new Listener());
// Grab volume control for the player.
// Set Volume to max.
vc = (VolumeControl)p.getControl
("VolumeControl");
if (vc != null)
vc.setLevel(100);
// Set a start time.
p.setMediaTime(5 * SECS_TO_MICROSECS);
// Guarantee that the player
can start with the smallest latency.
p.prefetch();
// Non-blocking start
p.start();
} catch (IOException ioe){}
catch (MediaException me){}
class Listener implements PlayerListener
{
public void playerUpdate(Player p,
String event, Object eventData)
{
if (event == END_OF_MEDIA || event == STOP_AT_TIME)
{
System.out.println
("Done processing");
try {
p.setMediaTime
(5 * SECS_TO_MICROSECS);
p.start();
} catch (MediaException me){}
break;
}
}
}
实现MIDI重放控制:
Player p;
TempoControl tc;
try {
p = Manager.createPlayer
("http://webserver/tune.mid");
p.realize();
// Grab the tempo control.
tc = (TempoControl)p.getControl
("TempoControl");
tc.setTempo(120000);
// 120 beats/min
p.start();
} catch (IOException ioe)
{
} catch (MediaException me)
{
}
视频重放功能实现:
Player p;
VideoControl vc;
try {
p = Manager.createPlayer
("http://webserver/movie.mpg");
p.realize();
// Grab the video control
and set it to the current display.
vc = (VideoControl)p.getControl
("VideoControl");
if (vc != null)
{
Form form = new Form("video");
form.append
((Item)vc.initDisplayMode
(vc.USE_GUI_PRIMITIVE, null));
Display.getDisplay(midlet)
.setCurrent(form);
}
p.start();
} catch (IOException ioe)
{
} catch (MediaException me)
{
}
播放RMS内存储的数据:
RecordStore rs;
int recordID;
: // code to set up the record store.
try {
InputStream is = new
ByteArrayInputStream
(rs.getRecord(recordID));
Player p = Manager.createPlayer
(is, "audio/X-wav");
p.start();
} catch (IOException ioe)
{
} catch (MediaException me)
{
}
播放Jar文件中存储的媒体
/** Notice that in MIDP 2.0,
the wav format is mandatory only */
/** in the case that the
device supports sampled audio. */
try {
InputStream is =
getClass().getResourceAsStream
("audio.wav");
Player p = Manager.createPlayer
(is, "audio/X-wav");
p.start();
} catch (IOException ioe)
{
} catch (MediaException me)
{
}
不同Player的同步
Player p1, p2;
try {
p1 = Manager.createPlayer
("http://webserver/tune.mid");
p1.realize();
p2 = Manager.createPlayer
("http://webserver/movie.mpg");
p2.realize();
p2.setTimeBase(p1.getTimeBase());
p1.prefetch();
p2.prefetch();
p1.start();
p2.start();
} catch (IOException ioe)
{
} catch (MediaException me)
{
}
产生单音序列
byte tempo = 30;
// set tempo to 120 bpm
byte d = 8;
// eighth-note
byte C4 = ToneControl.C4;
byte D4 = (byte)(C4 + 2);
// a whole step
byte E4 = (byte)(C4 + 4);
// a major third
byte G4 = (byte)(C4 + 7);
// a fifth
byte rest = ToneControl.SILENCE;
// rest
byte[] mySequence = {
ToneControl.VERSION, 1,
// version 1
ToneControl.TEMPO, tempo,
// set tempo
ToneControl.BLOCK_START, 0,
// start define "A" section
E4,d, D4,d, C4,d, E4,d,
// content of "A" section
E4,d, E4,d, E4,d, rest,d,
ToneControl.BLOCK_END, 0,
// end define "A" section
ToneControl.PLAY_BLOCK, 0,
// play "A" section
D4,d, D4,d, D4,d, rest,d,
// play "B" section
E4,d, G4,d, G4,d, rest,d,
ToneControl.PLAY_BLOCK, 0,
// repeat "A" section
D4,d, D4,d, E4,d, D4,d, C4,d
// play "C" section
};
try{
Player p = Manager.createPlayer
(Manager.TONE_DEVICE_LOCATOR);
p.realize();
ToneControl c = (ToneControl)
p.getControl("ToneControl");
c.setSequence(mySequence);
p.start();
} catch (IOException ioe)
{
} catch (MediaException me)
{
}
语音捕获和录音功能的实现
try
{
// Create a DataSource that
captures live audio.
Player p = Manager.createPlayer
("capture://audio");
p.realize();
// Get the RecordControl,
set the record location, and
// start the Player and
record for 5 seconds.
RecordControl rc =
(RecordControl)p.getControl
("RecordControl");
rc.setRecordLocation
("file:/tmp/audio.wav");
rc.startRecord();
p.start();
Thread.currentThread()
.sleep(5000);
p.stop();
rc.stopRecord();
rc.commit();
} catch (IOException ioe)
{
} catch (MediaException me)
{
} catch (InterruptedException e)
{
}
实现摄像功能
Player p;
VideoControl vc;
// initialize camera
try {
p = Manager.createPlayer
("capture://video");
p.realize();
// Grab the video control
and set it to the current
display.
vc = (VideoControl)p.getControl
("VideoControl");
if (vc != null)
{
Form form =
new Form("video");
form.append((Item)vc.initDisplayMode
(vc.USE_GUI_PRIMITIVE, null));
Display.getDisplay(midlet).setCurrent(form);
}
p.start();
} catch (IOException ioe)
{
} catch (MediaException me)
{
}
// now take a picture
try {
byte[] pngImage =
vc.getSnapshot(null);
// do something with the image ...
} catch (MediaException me)
{
}
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=676838