NetBeans使用mobility包開發手機程序,采用了流設計使得開發過程簡便和可視化。在這里我主要介紹如何在使用mobility包開發播放多媒體數據(圖片、音頻、視頻)的Demo,和大家一起分享。
Demo開發環境:
NetBeans 5.5.1
Mobility Package
一.圖片
在NetBeans上手機顯示圖片非常方便,只需要幾個拖拽和設置即可完成,甚至不需要寫到一行代碼。主要步驟為:
1. 把圖片放到程序主目錄/src/ 文件夾里面
2. 在資源中增加一個Image資源,并設置其屬性,把資源路徑屬性設置為某個圖片資源。
3. 在form中增加一個ImageItem,將其圖片屬性設為上述的Image資源,并根據需要設置圖片的布局。
設置完運行程序即可發現圖片已經可以顯示。
二.音頻
在J2ME中,移動媒體API(MMAPI)是一個可選包,它提供了一個標準的API,可以用來表現和獲得以時間為基礎的媒體。例如聲音軌道和視頻片斷。在mobility包安裝后就會有這個MMAPI包,在程序->屬性->可選包中即可發現MMAPI包。
在此Demo中使用的MMAPI1.1,這個版本支持以下媒體類型:
MIME類型 描述
audio/midi MIDI文件
audio/sp-midi 可升級的多音MIDI
audio/x-tone-seq MIDP2.0音調序列
audio/x-wav WAV PCM取樣音頻
image/gif FIG89a(活動的GIF)
video/mpeg MPEG視頻
video/vnd.sun.rgb565 視頻記錄
其他媒體類型(Mp4,3gp)等現在還沒支持,相信在不久的將來MMAPI新版本就會支持。
播放音頻的主要開發步驟為:
1. 獲得音頻資源
2. 創建Player類
3. 播放音頻
主要的代碼如下:
if (command == playMusicCommand) {
// Insert pre-action code here
isPlay = !isPlay;
if(isPlay == true)
{
form2.removeCommand(playMusicCommand);
playMusicCommand = new Command("暫停", Command.OK, 1);
form2.addCommand(playMusicCommand);
if(music == null)
{
try {
in = null; //in為InputStream類,此部分代碼未顯示
//獲取音頻資源,創建Player
in = getClass().getResourceAsStream("qhc.wav");
music = Manager.createPlayer(in,"audio/x-wav");
} catch (Exception e) {
e.printStackTrace();
}
try {
music.start(); //開始播放
ticker1.setString("正在播放音樂 ");
} catch (Exception e) {
e.printStackTrace();
}
}
else
{
try {
music.setMediaTime(pauseTime); //暫停后繼續播放
music.start();
ticker1.setString("正在播放音樂 ");
} catch (Exception e) {
e.printStackTrace();
}
}
}
else
{
try {
pauseTime = music.getMediaTime(); //暫停播放
music.stop();
ticker1.setString("暫停播放");
form2.removeCommand(playMusicCommand);
playMusicCommand = new Command("播放", Command.OK, 1);
form2.addCommand(playMusicCommand);
} catch (Exception e) {
e.printStackTrace();
}
}
// Do nothing
// Insert post-action code here
} else if (command == backCommand5) {
// Insert pre-action code here
try {
music.stop(); //停止播放
music.close();
isPlay = false;
} catch (Exception e) {
e.printStackTrace();
}
form2.removeCommand(playMusicCommand);
playMusicCommand = new Command("播放", Command.OK, 1);
form2.addCommand(playMusicCommand);
getDisplay().setCurrent(get_list1());
// Insert post-action code here
}
三.視頻
播放視頻仍然要注意播放的視頻格式是否是正在使用的MMAPI版本所支持的,這里我們主要播放.mpg視頻。
播放視頻和播放音頻的主要步驟是一樣的,主要的區別在于視頻需要建立VideoControl類,用來設置視頻的顯示模式等。
主要的代碼如下:
if (command == playVideoCommand) {
// Insert pre-action code here
isPlay = !isPlay;
if(isPlay == true)
{
form3.removeCommand(playVideoCommand);
playVideoCommand = new Command("暫停", Command.OK, 1);
form3.addCommand(playVideoCommand);
//isPlay = false;
if(video == null)
{
try {
iv = null; //iv為InputStream類,此部分代碼未顯示
//獲取視頻資源,創建Player
iv = getClass().getResourceAsStream("sun.mpg");
video = Manager.createPlayer(iv,"video/mpeg");
video.realize();
} catch (Exception e) {
e.printStackTrace();
}
try {
// 設置VideoControl控制類
VideoControl vc = (VideoControl)video.getControl("VideoControl");
//設置視頻播放的Item
Item videoItem = (Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE,null);
//form3.deleteAll();
form3.append(videoItem);
video.start(); //開始播放
ticker2.setString("正在播放視頻");
} catch (Exception e) {
e.printStackTrace();
}
}
else
{
try {
video.setMediaTime(pauseTime); //暫停后繼續播放
video.start();
ticker2.setString("正在播放視頻”");
} catch (Exception e) {
e.printStackTrace();
}
}
}
else
{
try {
pauseTime = video.getMediaTime(); //暫停播放
video.stop();
ticker2.setString("暫停播放視頻 ");
form3.removeCommand(playVideoCommand);
playVideoCommand = new Command("播放", Command.OK, 1);
form3.addCommand(playVideoCommand);
} catch (Exception e) {
e.printStackTrace();
}
}
// Do nothing
// Insert post-action code here
} else if (command == backCommand4) {
// Insert pre-action code here
try {
video.stop(); //停止播放
video.close();
isPlay = false;
} catch (Exception e) {
e.printStackTrace();
}
form3.removeCommand(playVideoCommand);
playVideoCommand = new Command("播放", Command.OK, 1);
form3.addCommand(playVideoCommand);
getDisplay().setCurrent(get_list1());
// Insert post-action code here
}
四.注意事項
開發播放多媒體程序時應該注意資源的大小和模擬器設置的大小以及開發應用的手機的資源等。在開發如果程序都還沒有錯誤(如未釋放內存資源等)還是出現OutOfMemoryError就應該模擬器設置的內存大小太小。
打開程序->屬性->管理仿真器->工具和擴展->打開首選項->存儲,可以設置存儲大小和內存大小。但是此大小不能大于程序將應用的手機的內存大小,否則就算是程序能在模擬器中運行還是不能在手機中運行。