MIDP 2.0手机支持的常见音频MIME类型: .
audio/x-tone-seq 单个的音符和音符序列 .
audio/x-wav 声波声音 .
audio/mid MIMD 声乐 .
audio/mpeg MP3 音频 Player接口中提供了一些重要的方法来播放和控制声音播放 .
realize():实现没有获取音频资源的播放器 .
prefetch():获取音频资源以减少播放滞后 .
getState():获取播放器的状态 .
setLoopCount():设置声音的循环次数 .
start():开始播放一个声音 .
stop():停止播放一个声音 .
getDuration():获取声音总的播放时间(毫秒) .
getMediaTime():获取当前的播放点(毫秒),声音已经播放了多久 .
setMediaTime():设置当前的播放点(毫秒) .
close():关闭播放器
一、从一个jar文件中播放
audio/x-tone-seq 单个的音符和音符序列 .
audio/x-wav 声波声音 .
audio/mid MIMD 声乐 .
audio/mpeg MP3 音频 Player接口中提供了一些重要的方法来播放和控制声音播放 .
realize():实现没有获取音频资源的播放器 .
prefetch():获取音频资源以减少播放滞后 .
getState():获取播放器的状态 .
setLoopCount():设置声音的循环次数 .
start():开始播放一个声音 .
stop():停止播放一个声音 .
getDuration():获取声音总的播放时间(毫秒) .
getMediaTime():获取当前的播放点(毫秒),声音已经播放了多久 .
setMediaTime():设置当前的播放点(毫秒) .
close():关闭播放器
一、从一个jar文件中播放
- try {
- Player musicPlayer;
- InputStream is = getClass().getResourceAsStream(\"/Music.mid\"); //以输入流的形式获取声音资源
- musicPlayer = Manager.createPlayer(is, \"audio/midi\");//创建播放器
- catch(IOException ex){}
- catch(MediaException ex){}
- try{
- musicPlayer.prefetch();//确保声音已经准备好以最小的滞后播放。
- musicPlayer.start();//开始播放}
- } catch (IOException ioe) { //捕获IO 异常}
- catch (MediaException me) { //捕获声音文件异常}
- 二、播放来自url的音乐
- try {
- Player musicPlayer;
- musicPlayer = Manager.createPlayer(\"http://yourserver/Music.mid\");
- musicPlayer.prefetch();
- musicPlayer.start();
- }
- catch (IOException ioe) {
- }
- catch (MediaException me) {
- }
- (j2me)播放声音文件的完整源代码
- //可以在你的j2me项目中,用这个类文件来播放声音
- //使用方法:
- // source = new Source("1.mid");
- // source.start();
- //我的手机不支持mp3,^_^,没关系,我自己写个程序来放歌听,只是效果差点.
- 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
- //定义用来读取声音文件的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);
- //"具现"播放器
- p.realize();
- //预取播放器
- p.prefetch();
- //将播放器设置为无限次播放
- 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");
- }
- /**关闭播放器
- */
- public void destroy(){
- if(p != null){
- p.close();
- }
- }
- /**
- * 从"媒体当前播放到的时刻"开始播放
- */
- public void start(){
- if(p != null){
- try {
- p.start();
- } catch (MediaException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println(e);
- }
- }
- }
- /**
- * 停止当前播放器,注意当调用stop时
- * 播放器不会重绕到开头
- */
- 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);
- }
- }
- }
- /**
- * 将媒体当前播放到的时刻设置为负值
- * 使媒体重绕到开头位置开始播放
- */
- 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);
- }
- /** 响应PlayerListener接口的预定义标准事件
- * @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");
- }