?? (j2me)播放聲音文件的完整源代碼.txt
字號(hào):
發(fā)表時(shí)間: 2006-09-19 14:20
//可以在你的j2me項(xiàng)目中,用這個(gè)類文件來(lái)播放聲音
//使用方法:
// source = new Source("1.mid");
// source.start();
//我的手機(jī)不支持mp3,^_^,沒關(guān)系,我自己寫個(gè)程序來(lái)放歌聽,只是效果差點(diǎn).
import javax.microedition.media.*;
import javax.microedition.media.Player;
import javax.microedition.media.control.VolumeControl;
import java.io.*;
/**
* @author 鐘偉海
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Source implements PlayerListener{
Player p;
VolumeControl volC;
/**
* @param filename 聲音文件名稱
*/
public Source(String fileName) {
super();
// TODO Auto-generated constructor stub
//定義用來(lái)讀取聲音文件的InputStream
InputStream is = getClass().getResourceAsStream(fileName);
if(is == null){
System.out.println("Error happens: InputStream not found " + fileName);
}
try {
p = Manager.createPlayer(is, "audio/midi");
if(p == null){
System.out.println("Error handler happens: InputStream " + fileName);
}else{
p.addPlayerListener(this);
//"具現(xiàn)"播放器
p.realize();
//預(yù)取播放器
p.prefetch();
//將播放器設(shè)置為無(wú)限次播放
p.setLoopCount(-1);
System.out.println("Realized Player: " + fileName);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e);
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e);
}
//從播放器中獲取音量控件
volC = (VolumeControl)p.getControl("VolumeControl");
}
/**關(guān)閉播放器
*/
public void destroy(){
if(p != null){
p.close();
}
}
/**
* 從"媒體當(dāng)前播放到的時(shí)刻"開始播放
*/
public void start(){
if(p != null){
try {
p.start();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e);
}
}
}
/**
* 停止當(dāng)前播放器,注意當(dāng)調(diào)用stop時(shí)
* 播放器不會(huì)重繞到開頭
*/
public void stop(){
if(p != null && p.getState() == Player.STARTED){
try {
p.stop();
System.out.println("The Player stoped here:" + p.getMediaTime());
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e);
}
}
}
/**
* 將媒體當(dāng)前播放到的時(shí)刻設(shè)置為負(fù)值
* 使媒體重繞到開頭位置開始播放
*/
public void rewind(){
if(p != null & p.getState() == Player.PREFETCHED){
try {
p.setMediaTime(-1);
p.start();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e);
}
}
}
/**更新播放器的音量
* @param level
* @return
*/
public int setLevel(int level){
return volC.setLevel(level);
}
/** 響應(yīng)PlayerListener接口的預(yù)定義標(biāo)準(zhǔn)事件
* @see javax.microedition.media.PlayerListener#playerUpdate(javax.microedition.media.Player, java.lang.String, java.lang.Object)
*/
public void playerUpdate(Player p, String event, Object eventData){
// TODO Auto-generated method stub
if(event == STARTED){
System.out.println("MySound Player STARTED");
}else if(event == CLOSED){
System.out.println("MySound Player CLOSED");
}else if(event == END_OF_MEDIA){
System.out.println("MySound Player END_OF_MEDIA");
}else if(event == ERROR){
System.out.println("MySound Player ERROR");
}else if(event == VOLUME_CHANGED){
System.out.println("MySound Player VOLUME_CHANGED");
}else if(event == DURATION_UPDATED){
System.out.println("MySound Player DURATION_UPDATED");
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -