- 浏览: 177974 次
- 性别:
- 来自: 北京
文章分类
最新评论
/** *//**
* 自动播放,循环停止后结束。
*
* @return
*/
public boolean AutoPlay() ...{
_isRun = true;
_thread = new Thread(this);
_thread.start();
return _playing;
}
/** *//**
* 停止播放
*/
public void stop() ...{
if (_audio != null && _audio.isActive()) ...{
try ...{
_audio.stop();
} catch (Exception e) ...{
}
}
if (_midi != null) ...{
_midi.stop();
}
_playing = false;
_isRun = false;
}
/** *//**
* 释放数据
*
*/
public void reset() ...{
stop();
_loop = false;
_soundType = 0;
if (_midi != null) ...{
_midi.close();
_midi = null;
}
if (_audio != null && _audio.isOpen()) ...{
_audio.close();
_audio = null;
}
_isRun = false;
_thread = null;
}
/** *//**
* 设定MetaMessage
*/
public void meta(MetaMessage meta) ...{
// 判断是否循环播放MIDI
if (_loop && _soundType == SoundData._L_SOUNDTYPE_MIDI
&& meta.getType() == 47) ...{
if (_midi != null && _midi.isOpen()) ...{
_midi.setMicrosecondPosition(0);
_midi.start();
}
}
}
public void run() ...{
while (_isRun) ...{
play();
// 因为播放类型唯一,所以只会返回一个_playing结果,以此判定。
if (_midi != null) ...{
_playing = _midi.isRunning();
}
if (_audio != null) ...{
_playing = _audio.isRunning();
}
// 当播放停止
if (!_playing) ...{
// 释放
reset();
}
try ...{
Thread.sleep(_sleepTime);
} catch (InterruptedException e) ...{
e.printStackTrace();
}
}
}
public int getSleepTime() ...{
return _sleepTime;
}
/** *//**
* 设定AutoPlay线程循环时间。
*
* @param time
*/
public void setSleepTime(int time) ...{
_sleepTime = time;
}
}
这时我们需要面对的,仅是封装为实体的SoundData数据和SoundPlay操作,而不必和繁复的javax.sound再打交道。
调用方法如下:
import org.loon.framework.game.helper.StreamHelper;
import org.loon.framework.game.net.URI;
import org.loon.framework.game.sound.SoundData;
import org.loon.framework.game.sound.SoundPlay;
/** *//**
* <p>Title: LoonFramework</p>
* <p>Description:SoundPlay播放测试</p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: LoonFramework</p>
* @author chenpeng
* @email:ceponline@yahoo.com.cn
* @version 0.1
*/
public class SoundPlayTest ...{
static void selectPlay(int ftype)...{
SoundData data=null;
switch(ftype)...{
//通过loonframework下uri从网络播放音乐
case 0:
data=new SoundData(new URI("http://looframework.sourceforge.net/midi/谁是大英雄.mid"),SoundData._L_SOUNDTYPE_MIDI,false);
break;
//通过本地资源下音乐文件的byte[]对象播放音乐
case 1:
byte[] bytes=StreamHelper.GetResourceData("/midi/谁是大英雄.mid");
data=new SoundData(bytes,SoundData._L_SOUNDTYPE_MIDI,false);
break;
//通过音乐文件路径播放音乐
case 2:
data=new SoundData("C:/谁是大英雄.mid",SoundData._L_SOUNDTYPE_MIDI,false);
break;
}
SoundPlay play=new SoundPlay();
//AutoPlay与Play方法的区别在于,AutoPlay播放完毕会自动停止并释放资源,play需手动中止。
//play.play(data);
play.AutoPlay(data);
}
public static void main(String[]args)...{
selectPlay(2);
}
}
更详细方法,会待Loonframework-game完全公布后,再进行解释。
另:由于StreamHelper关联其他Loonframework中方法,暂不给出,inputStream转byte[]可用如下写法:
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
//用于承接byte[]
byte[] arrayByte = null;
try ...{
// 每次传输大小为4096
byte[] bytes = new byte[4096];
bytes = new byte[is.available()];
int read;
while ((read = is.read(bytes)) >= 0) ...{
byteArrayOutputStream.write(bytes, 0, read);
}
arrayByte = byteArrayOutputStream.toByteArray();
} catch (IOException e) ...{
return null;
} finally ...{
try ...{
if (byteArrayOutputStream != null) ...{
byteArrayOutputStream.close();
byteArrayOutputStream = null;
}
if (is != null) ...{
is.close();
is = null;
}
} catch (IOException e) ...{
}
}
发表评论
-
人民币转换数字
2012-11-07 15:14 1066该贴原因: ... -
个人收集的java精品网站
2012-05-30 08:19 0java进阶网 http://www.javady.com ... -
JVM(java 虚拟机)内存设置
2011-06-02 16:37 15135JVM(java 虚拟机)内存 ... -
汉字全半角转化程序
2011-02-25 08:52 1443转载一个牛人的。方便以后查看使用: 也许. 这个代码对很多人 ... -
md5JAVA实现
2010-06-07 22:43 1178MD5算法研究 MD5的 ... -
在Java中操作串口实现短信收发2
2010-06-07 22:08 13554.发送数据成功进行初 ... -
在Java中操作串口实现短信收发1
2010-06-07 22:06 1572在Java中操作串口实现短信收发 采用串口操作进行短信收发 ... -
JVM内存参数调优
2010-06-07 22:03 1902JVM内存参数调优 我们前面所提到的堆内存(heap)是由 ... -
多线程程序设计的要点
2010-06-07 22:00 818多线程中有主内存和工 ... -
Java 处理事务精要
2010-06-07 21:58 964简单事务的概念 我 ... -
如何开公司及手续过程
2010-06-07 21:55 1177注册一个公司,首先想好经营什么,怎样经营好,再来注册。要不,注 ... -
运用加密技术保护Java源代码
2010-06-07 21:52 916Java程序的源代码很容易被别人偷看,只要有一个反编译器,任何 ... -
连接池的基本工作原理
2010-06-07 21:39 813连接池的基本工作原理 1、基本概念及原理 由上面的分析可以 ... -
高效的Java音乐播放类 2
2010-06-07 21:32 1160/** *//** * 直接播放url文件 * ... -
高效的Java音乐播放类
2010-06-07 21:26 1321Java音频播放,因为必须依赖到本地环境,所以JAVA在音频处 ... -
用开源的 InnoSetup 为 Java 应用制作 Windows 安装程序
2010-04-24 11:30 1651在这个例子里, 我将给大家展示如何使用 InnoSetup 自 ... -
Swing: 用 GlassPane 显示一个透明的正在操作框
2010-04-24 10:25 2005这个组件可以让用户看到界面里的显示但是无法操作. 需要的图: ... -
文本放大器
2010-04-24 10:06 1238/** * @(#)Text2Image.java 1.0 D ... -
在自定义 JToolTip 里面显示组件
2010-04-24 10:03 2270在自定义 JToolTip 里面显示组件 我们经常可以看 ... -
JIDE的开源Swing组件
2010-04-24 09:57 9516虽然它们早就开源了(去年吧),我也是今天才看到,虽然目前也用不 ...
相关推荐
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
本音乐网站是一个基于Java JSP和SERVLET技术的在线音乐平台,提供了丰富的音乐资源和高...总之,本音乐网站是一个集音乐播放、管理、推荐和定制于一体的综合性在线音乐平台,为用户提供了便捷、高效的音乐服务体验。
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
《计算机毕业设计:Java实现的音乐管理系统》是一项融合创新与实践的优质学术资源,它采用了SpringBoot与Vue.js的前沿技术,构建了一个功能丰富、交互友好的音乐管理平台。该资源不仅提供了完整的源码和详尽的说明...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...
本项目是一个基于Java语言开发的在线音乐网站,包含222个文件,主要文件类型包括Java类文件、Java源代码、XML配置文件、JSP页面、图片、JavaScript脚本、属性文件、CSS样式表和Idea缓存文件。系统设计旨在为用户提供...
2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机...
随着互联网和宽带上网的普及,网络传输以其特有的快速、高效、便捷的传 输方式越来越被人们接受。在当今社会的影响下,人们因为快节奏的工作和生活 产生了极大的压力,这时就需要一个放松的环境去释放这些压力,因此...
基于JSP(Java Server Pages)和Servlet技术的音乐网站,通过其高效、稳定的技术架构,为用户提供了一个丰富、便捷的音乐体验空间。 JSP作为Java Web开发的核心技术之一,负责动态生成网页内容。在音乐网站中,JSP...
本系统前端使用JQuery框架对DOM操作,后端代码使用Java语言编写的,高效快速。数据库管理系统使用开源软件MYSQL,节约成本。该系统页面简洁,能够让浏览系统的用户快速查询到自己想要获得的信息,并做出相应的处理。...
在数字音乐消费快速增长的背景下,提供一个高效、便捷、并具备高度定制化的音乐听歌系统显得尤为重要。本项目旨在开发一个基于Uni-app和Node技术的音乐听歌系统,满足不同用户的音乐收听与管理需求。该系统不仅支持...
音乐流媒体播放及周边产品运营的信息服务管理系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知音乐流媒体播放及周边产品运营的信息服务管理系统的便捷高效,不仅为群众提供了服务,而且也推广...