`
wuce7758
  • 浏览: 177516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • YTT1121: 有网络拓扑发现的源代码么?能不能发我一份学习一下,现在我正要做 ...
    java拓扑图
  • YTT1121: 大神,有网络拓扑发现的源代码么?或者您会编写么?我需要做科研改 ...
    java拓扑图
  • YTT1121: 大神,有网络拓扑发现的源代码么?或者您会编写么?我需要做科研改 ...
    java拓扑图
  • poettang: 求代码分享学习,谢谢!膜拜大神!258026921@qq.co ...
    java拓扑图
  • oiqio: 87836238@qq.com,感谢楼主,来一份~
    java拓扑图

高效的Java音乐播放类 2

阅读更多

/** *//**
     * 直接播放url文件
     * 
     * 
@param uri
     * 
@param ftype
     * 
@param loop
     * 
@return
     
*/

    
public boolean load(URI uri, int ftype, boolean loop) ...{

        
// 刷新数据
        reset();
        
if (uri == null...{
            
return false;
        }

        
// 获得SoundData
        SoundData data = new SoundData(uri, ftype, loop);
        
if (data == null || data.getData() == null...{
            
return false;
        }

        
return init(data.getData(), data.getType(), data.getLoop());

    }


    
/** *//**
     * 初始化sound相关数据
     * 
     * 
@param data
     * 
@param ftype
     * 
@param loop
     * 
@return
     
*/

    
private boolean init(byte[] data, int ftype, boolean loop) ...{
        
boolean result = false;

        ByteArrayInputStream bis 
= null;

        
try ...{
            bis 
= new ByteArrayInputStream(data);
        }
 catch (Exception e) ...{
            bis 
= null;
        }


        
if (bis == null...{
            
return false;
        }


        
// 判断类型
        switch (ftype) ...{

        
// MIDI
        case SoundData._L_SOUNDTYPE_MIDI:

            
// 当MIDI不存在时
            if (_midi == null...{

                
try ...{
                    
// 获得Sequencer
                    _midi = MidiSystem.getSequencer();
                    _midi.open();

                }
 catch (Exception ex) ...{
                    _midi 
= null;
                }


                
if (_midi != null...{
                    _midi.addMetaEventListener(
this);
                }


            }


            
// 当MIDI依旧未获得时
            if (_midi != null...{
                
// 重新创建Sequence
                Sequence sc = null;

                
try ...{
                    sc 
= MidiSystem.getSequence(bis);
                }
 catch (Exception e) ...{
                    sc 
= null;
                }


                
if (sc != null...{

                    
try ...{

                        _midi.setSequence(sc);

                        
// 获得是否循环播放
                        _loop = loop;

                        
// 获得是否载入
                        result = true;

                    }
 catch (Exception ee) ...{
                    }


                    
// 获得声音类型
                    _soundType = SoundData._L_SOUNDTYPE_MIDI;

                }


            }


            
try ...{
                bis.close();
            }
 catch (Exception ee) ...{
            }


            
break;

        
// Wav
        case SoundData._L_SOUNDTYPE_WAV:

            AudioFileFormat type 
= null;

            
// 获得Audio
            try ...{
                type 
= AudioSystem.getAudioFileFormat(bis);
            }
 catch (Exception e) ...{
                type 
= null;
            }


            
// 关闭流
            try ...{
                bis.close();
            }
 catch (Exception ex) ...{
            }


            
if (type == null...{
                
return false;
            }


            
// 根据指定信息构造数据行的信息对象
            DataLine.Info di = new DataLine.Info(Clip.class, type.getFormat());

            
// 转为Clip
            try ...{
                _audio 
= (Clip) AudioSystem.getLine(di);
            }
 catch (Exception e) ...{
            }


            
// 播放文件
            try ...{

                _audio.open(type.getFormat(), data, 
0, data.length);

                _loop 
= loop;

                result 
= true;

            }
 catch (Exception e) ...{
            }


            
// 获得文件类型
            _soundType = SoundData._L_SOUNDTYPE_WAV;

            
break;

        }


        
return result;
    }


    
public boolean play(SoundData data) ...{

        
if (!load(data)) ...{
            
return false;
        }


        
return play();

    }


    
public boolean play() ...{

        
switch (_soundType) ...{

        
case SoundData._L_SOUNDTYPE_MIDI:

            
try ...{

                _midi.start();

                _playing 
= true;

                _soundType 
= SoundData._L_SOUNDTYPE_MIDI;

            }
 catch (Exception ee) ...{
            }


            
break;

        
case SoundData._L_SOUNDTYPE_WAV:

            
if (_audio != null...{

                
if (_loop) ...{

                    
// 设定循环
                    _audio.setLoopPoints(0-1);
                    _audio.setFramePosition(
0);

                    _audio.loop(Clip.LOOP_CONTINUOUSLY);

                }
 else ...{

                    
// 强制设定播放位置至0
                    _audio.setFramePosition(0);

                    _audio.start();

                }


                _playing 
= true;

            }


            
break;

        }


        
return _playing;

    }


    
/** *//**
     * 自动播放,循环停止后结束。
     * 
     * 
@param data
     * 
@return
     
*/

    
public boolean AutoPlay(SoundData data) ...{
        
if (!load(data)) ...{
http:

分享到:
评论

相关推荐

    高效的Java音乐播放类

    转载--------高效的Java音乐播放类

    java源码包---java 源码 大量 实例

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java源码包2

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java_jsp项目源码_音乐网站(+SERVLET)130222.rar

    本音乐网站是一个基于Java JSP和SERVLET技术的在线音乐平台,提供了丰富的音乐资源和高质量的音频播放服务。它采用了先进的后台管理系统,支持用户进行音乐的上传、下载、收藏和分享等操作,同时具备个性化推荐功能...

    java源码包4

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java源码包3

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...

    JAVA上百实例源码以及开源项目源代码 java开源包2

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    基于Java的在线音乐网站协同过滤推荐算法设计源码

    本项目是一个基于Java语言开发的在线音乐网站,包含222个文件,主要文件类型包括Java类文件、Java源代码、XML配置文件、JSP页面、图片、JavaScript脚本、属性文件、CSS样式表和Idea缓存文件。系统设计旨在为用户提供...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...

    基于Java-web的音乐网站的设计与实现论文

    音乐网站系统以 Struts2 为框架进行开发,以 JSP 作为页面载体,后台数据 库使用 Mysql,在 Windows 环境下使用 MyEclipse开发工具进行开发,采用 Ajax 和 Jqury技术,使得系统更易维护。前台主要实现了用户的登陆...

    音乐网站(JSP+SERVLET).zip

    基于JSP(Java Server Pages)和Servlet技术的音乐网站,通过其高效、稳定的技术架构,为用户提供了一个丰富、便捷的音乐体验空间。 JSP作为Java Web开发的核心技术之一,负责动态生成网页内容。在音乐网站中,JSP...

    Java毕业设计:基于SpringBoot的儿童音乐赏析网站(源码+文档+录像演示).zip

    本系统前端使用JQuery框架对DOM操作,后端代码使用Java语言编写的,高效快速。数据库管理系统使用开源软件MYSQL,节约成本。该系统页面简洁,能够让浏览系统的用户快速查询到自己想要获得的信息,并做出相应的处理。...

    计算机毕业设计:Java实现的音乐管理系统(SpringBoot+Vue,源码+详细说明),保证可靠运行,赠计算机答辩PPT模版

    《计算机毕业设计:Java实现的音乐管理系统》是一项融合创新与实践的优质学术资源,它采用了SpringBoot与Vue.js的前沿技术,构建了一个功能丰富、交互友好的音乐管理平台。该资源不仅提供了完整的源码和详尽的说明...

    【计算机毕业设计】5.音乐网站及周边产品运营系统vue源码

    音乐流媒体播放及周边产品运营的信息服务管理系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知音乐流媒体播放及周边产品运营的信息服务管理系统的便捷高效,不仅为群众提供了服务,而且也推广...

    基于java web技术实现音乐网管理系统v3附项目源码+数据库文件+文档说明

    1. 简化开发:Spring提供了一系列的模块和工具,可以帮助开发人员更快速、更高效地开发Web应用程序。例如,Spring MVC框架可以帮助开发人员构建Web应用程序的控制器、视图和模型,简化了Web应用程序的开发过程。 2....

Global site tag (gtag.js) - Google Analytics