MMAPI是在JSR 135中提出的,增強了Java ME平台對多媒體編程的支持。例如播放音頻和視頻文件,捕獲聲音和圖像等。目前大多數支持JTWI 1.0的手機都支持了MMAPI。本文介紹如何使用MMAPI播放gif格式的動畫。 Feedom.Net國內最早的網管網站
其實制作動畫效果可以有很多辦法,例如准備一個圖片數組,在程序中不斷的切換顯示不同的圖片,只要時間的間隔設置合理即可出現動畫的效果。如果使用MMAPI則可以直接播放gif的動畫。其實這和播放視頻文件的方法和流程是類似的。 Play.bitsCN.com小游戲
首先我們應該准備一個gif文件,放在能夠訪問到的位置,且確保這個文件會被打包進jar內。在創建播放器之前應該先確認手機上的MMAPI實現是否支持image/gif格式的播放,如果支持則創建Player,如下。
BBS.bitsCN.com國內最早的網管論壇
private void createPlayer(InputStream is){
String[] contents = Manager.getSupportedContentTypes(null);
for(int i = 0;i<contents.length;i++){
if(contents[i].toLowerCase().indexOf("image/gif") != -1){
try {
player = Manager.createPlayer(is,"image/gif");
player.realize();
} catch (IOException ex) {
ex.printStackTrace();
Feedom.Net國內最早的網管網站
Player創建後,我們需要獲得VideoControl,然後將內容渲染到屏幕上,VideoControl提供了兩種模式,這裡我們使用USE_GUI_PRIMITIVE方式,將返回的Item追加到一個Form中顯示。最後調用Player.start()即可播放。注意在退出之前一定要釋放Player資源,關閉Player並設置為null。GifPlayer的源碼如下: Play.bitsCN.com小游戲
源程序如下 bitscn.com中國網管聯盟
/*
* GifPlayer.Java
*
* Created on 2006年6月21日, 下午7:28
*/
DL.bitsCN.com網管軟件下載
package com.J2MEdev.gif; Feedom.Net國內最早的網管網站
import Java.io.IOException;
import Java.io.InputStream;
import Javax.microedition.lcdui.Display;
import Javax.microedition.lcdui.Form;
import Javax.microedition.lcdui.Item;
import Javax.microedition.media.Manager;
import Javax.microedition.media.MediaException;
import Javax.microedition.media.Player;
import Javax.microedition.media.control.VideoControl;
import Javax.microedition.midlet.*;
Feedom.Net國內最早的網管網站
/**
*
* @author ming
* @version
*/
public class GifPlayer extends MIDlet {
private Display display = null;
private Player player = null;
public void startApp() {
if(display == null)
display = Display.getDisplay(this);
Form form = new Form("gif player");
InputStream is = getClass().getResourceAsStream("/a.gif");
createPlayer(is);
if(player == null){
form.append("can not play image/gif");
}else{ www.bitsCN.Net網管博客等你來搏
VideoControl vc = (VideoControl)player.getControl("VideoControl");
if(vc != null){
form.append((Item)vc.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE,null));
}
}
display.setCurrent(form);
try {
player.start();
} catch (MediaException ex) {
ex.printStackTrace();
}
}
private void createPlayer(InputStream is){
www.bitsCN.Net網管博客等你來搏
String[] contents = Manager.getSupportedContentTypes(null);
for(int i = 0;i<contents.length;i++){
if(contents[i].toLowerCase().indexOf("image/gif") != -1){
try {
player = Manager.createPlayer(is,"image/gif");
player.realize();
} catch (IOException ex) {
ex.printStackTrace();
} catch (MediaException ex) {
搜一搜so.bitsCN.com
ex.printStackTrace();
}
}
}
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
if(player != null){
player.close();
player = null;
} bitsCN.Net中國網管博客
}
}