j2me声音播放

 
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文件中播放
 
  1. try {  
  2.    Player musicPlayer;  
  3.    InputStream is = getClass().getResourceAsStream(\"/Music.mid\");   //以输入流的形式获取声音资源 
  4.    musicPlayer = Manager.createPlayer(is, \"audio/midi\");//创建播放器 
  5. catch(IOException ex){} 
  6. catch(MediaException ex){} 
  7. try{ 
  8.    musicPlayer.prefetch();//确保声音已经准备好以最小的滞后播放。 
  9.    musicPlayer.start();//开始播放} 
  10. } catch (IOException ioe) { //捕获IO 异常} 
  11.    catch (MediaException me) { //捕获声音文件异常} 
  12. 二、播放来自url的音乐 
  13. try { 
  14.    Player musicPlayer; 
  15.    musicPlayer = Manager.createPlayer(\"http://yourserver/Music.mid\"); 
  16.    musicPlayer.prefetch(); 
  17.    musicPlayer.start(); 
  18. } 
  19.    catch (IOException ioe) { 
  20. } 
  21.    catch (MediaException me) { 
  22. } 
  23.  
  24. (j2me)播放声音文件的完整源代码   
  25. //可以在你的j2me项目中,用这个类文件来播放声音 
  26. //使用方法: 
  27. // source = new Source("1.mid"); 
  28. // source.start(); 
  29. //我的手机不支持mp3,^_^,没关系,我自己写个程序来放歌听,只是效果差点. 
  30. import javax.microedition.media.*; 
  31. import javax.microedition.media.Player; 
  32. import javax.microedition.media.control.VolumeControl; 
  33. import java.io.*; 
  34. /** 
  35. * @author 赤脚 * TODO To change the template for this generated type comment go to 
  36. * Window - Preferences - Java - Code Style - Code Templates 
  37. */ 
  38. public class Source implements PlayerListener{ 
  39. Player p; 
  40. VolumeControl volC; 
  41. /** 
  42. * @param filename 声音文件名称 
  43. */ 
  44. public Source(String fileName) { 
  45. super(); 
  46. // TODO Auto-generated constructor stub 
  47. //定义用来读取声音文件的InputStream 
  48. InputStream is = getClass().getResourceAsStream(fileName); 
  49. if(is == null){ 
  50. System.out.println("Error happens: InputStream not found " + fileName);  
  51. }  
  52. try {  
  53. p = Manager.createPlayer(is, "audio/midi"); 
  54. if(p == null){ 
  55. System.out.println("Error handler happens: InputStream " + fileName); 
  56. }else{ 
  57. p.addPlayerListener(this); 
  58.  
  59. //"具现"播放器 
  60. p.realize(); 
  61. //预取播放器 
  62. p.prefetch(); 
  63. //将播放器设置为无限次播放 
  64. p.setLoopCount(-1); 
  65. System.out.println("Realized Player: " + fileName); 
  66. } 
  67. } catch (IOException e) { 
  68. // TODO Auto-generated catch block 
  69. e.printStackTrace(); 
  70. System.out.println(e); 
  71. } catch (MediaException e) { 
  72. // TODO Auto-generated catch block 
  73. e.printStackTrace(); 
  74. System.out.println(e); 
  75. } 
  76. //从播放器中获取音量控件 
  77. volC = (VolumeControl)p.getControl("VolumeControl"); 
  78. } 
  79. /**关闭播放器 
  80. */ 
  81. public void destroy(){ 
  82. if(p != null){ 
  83. p.close(); 
  84. } 
  85. } 
  86. /** 
  87. * 从"媒体当前播放到的时刻"开始播放 
  88. */ 
  89. public void start(){ 
  90. if(p != null){ 
  91. try { 
  92. p.start(); 
  93. } catch (MediaException e) { 
  94. // TODO Auto-generated catch block 
  95. e.printStackTrace(); 
  96. System.out.println(e); 
  97. } 
  98. } 
  99. } 
  100. /** 
  101. * 停止当前播放器,注意当调用stop时 
  102. * 播放器不会重绕到开头 
  103. */ 
  104. public void stop(){ 
  105. if(p != null && p.getState() == Player.STARTED){ 
  106. try { 
  107. p.stop(); 
  108. System.out.println("The Player stoped here:" + p.getMediaTime()); 
  109. } catch (MediaException e) { 
  110. // TODO Auto-generated catch block 
  111. e.printStackTrace(); 
  112. System.out.println(e); 
  113. } 
  114. } 
  115. } 
  116. /** 
  117. * 将媒体当前播放到的时刻设置为负值 
  118. * 使媒体重绕到开头位置开始播放 
  119. */ 
  120. public void rewind(){ 
  121. if(p != null & p.getState() == Player.PREFETCHED){ 
  122. try { 
  123. p.setMediaTime(-1); 
  124. p.start(); 
  125. } catch (MediaException e) { 
  126. // TODO Auto-generated catch block 
  127. e.printStackTrace(); 
  128. System.out.println(e); 
  129. } 
  130. } 
  131. } 
  132. /**更新播放器的音量 
  133. * @param level 
  134. * @return 
  135. */ 
  136. public int setLevel(int level){ 
  137. return volC.setLevel(level); 
  138. } 
  139. /** 响应PlayerListener接口的预定义标准事件 
  140. * @see javax.microedition.media.PlayerListener#playerUpdate(javax.microedition.media.Player, java.lang.String, java.lang.Object) 
  141. */ 
  142. public void playerUpdate(Player p, String event, Object eventData){ 
  143. // TODO Auto-generated method stub 
  144. if(event == STARTED){ 
  145. System.out.println("MySound Player STARTED");  
  146. }else if(event == CLOSED){  
  147. System.out.println("MySound Player CLOSED"); 
  148. }else if(event == END_OF_MEDIA){ 
  149. System.out.println("MySound Player END_OF_MEDIA"); 
  150. }else if(event == ERROR){ 
  151. System.out.println("MySound Player ERROR"); 
  152. }else if(event == VOLUME_CHANGED){ 
  153. System.out.println("MySound Player VOLUME_CHANGED"); 
  154. }else if(event == DURATION_UPDATED){ 
  155. System.out.println("MySound Player DURATION_UPDATED");  
  156. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值