`
wuce7758
  • 浏览: 182231 次
  • 性别: 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音乐播放器是一种基于Java编程语言开发的软件,它能够解析和播放音频文件。这个播放器需要JMF(Java Media Framework)插件的支持,JMF是Sun Microsystems开发的一个开源框架,用于处理各种多媒体数据,包括音频...

    Java mp3 格式音乐的播放插件

    Java MP3格式音乐的播放插件是用于在Java应用程序中播放MP3音频文件的软件组件。这个插件或库使得开发者能够轻松地集成音乐播放功能,无需依赖操作系统原生的媒体播放器。在Java平台上,由于它自身的跨平台特性,...

    Java,android,音乐播放器

    这个应用结合了Java作为后端处理语言以及Android作为前端平台,为用户提供了一个方便、高效的音乐播放体验。以下将详细介绍相关知识点。 1. **Java基础知识**: - **面向对象编程**:Java是基于面向对象编程的,它...

    java mp3 音乐播放器

    Java MP3音乐播放器是一种基于Java编程语言开发的软件,用于播放MP3音频格式的音乐。这个项目不依赖于Java Foundation Classes (JFC)中的Java Media Framework (JMF),而是选择了第三方的Java库来实现MP3播放功能。...

    java 音乐盒系统源码

    Java音乐盒系统选择了SQLServer2005作为其数据库管理系统,支持高效的数据查询和存储。通过SQL语句,系统能快速检索音乐信息,如歌手、专辑、歌曲名等,并提供排序、过滤等功能。 4. **Eclipse集成开发环境** 开发...

    纯Java音乐共享平台

    【纯Java音乐共享平台】是一个由个人开发的项目,它完全基于Java编程语言,利用Swing库构建用户界面,同时结合多线程和Socket网络通信技术来实现音乐资源的共享功能。这个平台允许用户在客户端与服务器之间进行交互...

    JAVA版MP3音乐播放器+源代码(初学者)

    Java提供了FileInputStream和BufferedInputStream等类来读取文件内容,它们能够高效地处理大文件,如MP3音乐。 3. **Java音频API**:Java Sound API是Java标准库中的一个部分,用于处理音频数据。它包括了Audio...

    JAVA 上传音乐

    在Java编程语言中,上传音乐涉及的主要知识点是IO流(Input/Output Stream)的使用,特别是对于大文件如音乐的高效处理。IO流是Java中处理数据传输的核心机制,允许程序读取或写入数据到各种来源,如硬盘、网络、...

    java实现坦克大战源码+图片+音乐

    2. **面向对象编程**:在Java中,坦克大战的各个元素可以被设计为类,如Tank类代表坦克,Bullet类代表子弹,Field类代表游戏场地等。这些类通过继承、封装和多态等面向对象特性,实现游戏的模块化和可扩展性。 3. *...

    java编写炫酷界面音乐播放器

    如果是可执行的jar文件,用户只需双击即可运行,享受由Java带来的高效且美观的音乐播放体验。 总的来说,这款Java编写的炫酷界面音乐播放器展示了Java在GUI应用开发方面的强大能力,同时也提供了学习和借鉴的实例,...

    Java实现音乐播放器【碉堡版】源码

    这个"碉堡版"的Java音乐播放器源码是一个很好的学习资源,可以帮助开发者深入理解Java编程,尤其是多媒体处理、GUI设计和多线程等方面的知识。通过研究和分析源码,可以提升自己的Java编程技能和实际项目开发经验。

    Java 开发的android音乐播放器,界面优美。性能稳定。

    总结,这个“Java开发的Android音乐播放器”项目展示了Java在移动开发中的强大功能,以及如何通过良好的设计和编程实践来创建一个高质量的本地音乐播放应用。对于学习Android开发的初学者来说,这样的项目是一个很好...

    AudioCore-Java音频转码和播放依赖包|AudioCore.zip

    总之,AudioCore凭借其对FFmpeg的高效封装,为Java开发者提供了便捷的音频转码和播放解决方案。无论是在服务器端处理大量音频文件,还是在客户端提供流畅的播放体验,AudioCore都是值得信赖的工具。开发者可以通过...

    JAVA版音乐播放器源代码

    【JAVA版音乐播放器源代码】是一个项目,它涵盖了服务器端、客户端以及数据库的实现,目的是为了构建一个功能完备的音乐播放平台。这个平台允许用户进行登录和注册操作,通过在客户端与服务器端之间建立通信,实现了...

    java的MP3播放插件

    Java MP3播放插件是一种专为Java平台设计的软件组件,它允许开发者通过Java编程语言创建功能丰富的音乐播放器应用程序。这款插件扩展了Java Media Framework (JMF) 的功能,使得开发者不仅可以处理常见的音频格式如...

    JAVA 版MPEG播放器(Java音乐播放器)

    2. **Java GUI设计**:使用Swing或JavaFX创建用户界面,包括播放、暂停、停止、音量控制等按钮,以及进度条和音视频信息显示区域。 3. **MPEG解码**:通过JMF或JavaFX的内置功能,解析MPEG文件,提取音频和视频流...

    java写的音乐播放器(含源码)

    Java编写的音乐播放器,如"YoYoPlayer"或简称为"java Player",是一种用Java编程语言实现的多媒体应用程序,旨在为用户提供便捷、高效的音乐播放体验。在本项目中,开发者模仿了知名的TTPlayer的界面设计,为用户...

    简约的java音乐播放器

    Java音乐播放器是一款基于Java编程语言开发的音频播放软件,其设计目标是提供一个简洁易用的用户界面,让用户能够方便地管理和播放各种格式的音乐文件。Java作为跨平台的编程语言,使得该音乐播放器具备了在不同操作...

    java mp3音乐播放器

    Java MP3音乐播放器是一种利用Java编程语言开发的软件,专用于播放MP3格式的音频文件。这个项目展示了如何在Java环境下实现一个功能完备、用户界面友好的音乐播放器。在设计过程中,开发者运用了单例模式来确保程序...

Global site tag (gtag.js) - Google Analytics