您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术使用JavaME在SonyEricssonJava平台6或者更新的电话上以流形式播放Web服务器上的音乐文件 正文
使用JavaME在SonyEricssonJava平台6或者更新的电话上以流形式播放Web服务器上的音乐文件

使用JavaME在SonyEricssonJava平台6或者更新的电话上以流形式播放Web服务器上的音乐文件

点击数:7425 次   录入时间:03-04 11:54:41   整理:http://www.55dianzi.com   嵌入式系统-技术

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

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

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

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

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

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

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

    fConn.create();

    outputStream=fConn.openOutputStream();

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

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

    InputStreamis=conn.openInputStream();

    iNTChunkSize=512;

    byte[]data=newbyte[chunkSize];

    intlength=0;

    do{

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

    progress+=length;

    if(length!=-1){

    outputStream.write(data,0,length);

    }

    }while(length!=-1);

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

    finalStringfile="file:///c:/other/mymusic.mp3";

    player=Manager.createPlayer(file);

    player.addPlayerListener(this);

    player.realize();

    player.setMediaTime(startTime);

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

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

    publicvoidplayerUpdate(javax.microedition.media.Playerplayer,Stringstr,Objectobj){

    if(str==PlayerListener.END_OF_MEDIA){

    playerBufferAdd();

    player.close();

    }

    }

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




本文关键字:音乐  服务器  电话  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术

《使用JavaME在SonyEricssonJava平台6或者更新的电话上以流形式播放Web服务器上的音乐文件》相关文章>>>