科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道使用Java ME以流形式播放Web服务器上的音乐文件

使用Java ME以流形式播放Web服务器上的音乐文件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文介绍如何使用JavaME在SonyEricsson Java 平台6或者更新的电话上,例如W550,W900等,以流形式播放Web服务器上的音乐文件。

作者:mingjava 来源:J2ME开发网 2008年6月23日

关键字: 网吧 网吧组网 网吧服务器架设

  • 评论
  • 分享微博
  • 分享邮件

  本文介绍如何使用JavaME在SonyEricsson Java 平台6或者更新的电话上,例如W550,W900等,以流形式播放Web服务器上的音乐文件。当然,音乐文件可以使用实时流媒体协议播放,但是这里使用的是输入流。

  首先,我们需要和服务器端的音乐文件建立流连接,然后把音乐文件存储在在手机的文件系统上。由于JP6平台的电话支持渐进播放音乐文件,因此我们不必等到所有文件都下载完成后才开始播放。

  有两方面的问题需要我们考虑好:

  1)下载的速度,程序需要建立一个缓冲区。

  2)媒体时间,程序需要跟踪媒体时间,如果下载的速度比媒体播放速度慢,当播放器到达文件终点的时候,我们需要重新创建一个缓冲区然后设置正确的媒体时间开始播放。

  下面的程序可以在电话的文件系统上创建一个文件并打开输出流。

  fConn = (FileConnection)Connector.open("file:///c:/other/mymusic.mp3");

  fConn.create();

  outputStream = fConn.openOutputStream();

  接下来把从输入流的数据写入到输出流中。

  HttpConnection conn = (HttpConnection)Connector.open(url);

  InputStream is = conn.openInputStream();

  int chunkSize = 512;

  byte []data = new byte[chunkSize];

  int length = 0;

  do{

  length = is.read(data, 0, chunkSize);

  progress += length;

  if(length != -1){

  outputStream.write(data, 0, length);

  }

  }while(length != -1);

  当下载的缓冲区就绪之后,我们就可以播放文件了。

  final String file = "file:///c:/other/mymusic.mp3";

  player = Manager.createPlayer(file);

  player.addPlayerListener(this);

  player.realize();

  player.setMediaTime(startTime);

  记得记录媒体时间,当我们重新播放音乐的时候用得着。

  Player应该实现PlayerListener接口,这样可以跟踪媒体的播放状态,如下所示:

  public void playerUpdate(javax.microedition.media.Player player, String str, Object obj) {

  if(str == PlayerListener.END_OF_MEDIA){

  playerBufferAdd();

  player.close();

  }

  }

  在playerUpdate()方法中我们跟踪是否播放器到达了文件的终点,如果是的话,创建一个新的缓冲区和新的播放器,把前面的播放器关闭,然后继续播放。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章