博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
播放声音文件的完整源代码
阅读量:4043 次
发布时间:2019-05-24

本文共 3057 字,大约阅读时间需要 10 分钟。

//可以在你的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");
        }
    }
}

转载地址:http://hdedi.baihongyu.com/

你可能感兴趣的文章
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>
qt5 everywhere编译完成后,找不到qmake
查看>>
qt 创建异形窗体
查看>>
可重入函数与不可重入函数
查看>>
简单Linux C线程池
查看>>
内存池
查看>>
输入设备节点自动生成
查看>>
GNU hello代码分析
查看>>
Qt继电器控制板代码
查看>>
wpa_supplicant控制脚本
查看>>
gstreamer相关工具集合
查看>>
RS232 四入四出模块控制代码
查看>>
gstreamer插件之 videotestsrc
查看>>
linux 驱动开发 头文件
查看>>
/etc/resolv.conf
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
linux sfdisk partition
查看>>
ipconfig,ifconfig,iwconfig
查看>>