重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
playCycle(String s)这个是单曲重复播放;play(String s)这个是单曲播放。
创新互联长期为成百上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为西安企业提供专业的成都做网站、网站建设、外贸营销网站建设,西安网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
/******* part one start *******/
//获取媒体文件流
AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));
//获取文件格式
AudioFormat aif = ais.getFormat();
//这个类不知道是什么,没用过,在这里应该是对媒体流处理的一个类
SourceDataLine sdl = null;
//这个貌似通过媒体格式,获取媒体文件的信息
DataLine.Info info = new DataLine.Info(SourceDataLine.class,aif);
//通过媒体文件的信息初始化处理媒体文件的类
sdl = (SourceDataLine)AudioSystem.getLine(info);
//媒体工具类 打开媒体流
sdl.open(aif);
//媒体工具(播放器)开启
sdl.start();
/******* part one end *******/
/******* part two start ********/
int nByte = 0;
byte[] buffer = new byte[128];
//媒体工具类(播放器类)对媒体流进行写入处理,此时应该会有音乐响起吧
while(nByte != -1){
nByte = ais.read(buffer,0,128);
if(nByte = 0){
int oByte = sdl.write(buffer, 0, nByte);
//System.out.println(oByte);
}
}
//媒体流结束,并关闭这个媒体工具类
sdl.stop();
/******* part two end********/
java控制window系统音量有两种办法,一是JNA或者JNI调用,二是执行VBS脚本。
这里推荐使用第二种方式,它比较灵活,控制可以放在程序内,也可以将控制文件独立出来,便于后期维护更改。
核心代码如下:
public static void main(String[] args){
File file = File.createTempFile("ylkz_vba",".vbs");
file.deleteOnExit();
FileWriter fw = new FileWriter(file);
String vbs ="'以下命令实现音量减(用循环可以实现一直减):\n" +
"Set WshShell = CreateObject(\"WScript.Shell\")\n" +
"WshShell.SendKeys(chr(hAE))\n" +
"'音量增(用循环可以实现一直增):\n" +
"Set WshShell = CreateObject(\"WScript.Shell\")\n" +
"WshShell.SendKeys(chr(hAF))";
fw.write(vbs);
fw.close();
Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor();
import javax.sound.sampled.*;
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("some_file.wav")); //some_file.wav是你需要修改的文件名
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
FloatControl gainControl = (FloatControl)
clip.getControl(FloatControl.Type.MASTER_GAIN);
long dbValue=gainControl.getValue();//获取原音量值 ,你要获取所有的话,自己写循环,每次循环都把样本音量放到集合或者数组去
gainControl.setValue(-10.0f); // -10.0f就是减少10分贝的意思,自己看需要调整
clip.start();
同样,设置铃声和音量的方法也很简单!设置音量的方法也很简单,AudioManager提供了方法: publicvoidsetStreamVolume(intstreamType,intindex,intflags)其中streamType有内置的常量,去文档里面就可以看到。 JAVA代码: AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);//通话音量int max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL ); int current = mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL ); Log.d(VIOCE_CALL, max : + max + current : + current);//系统音量max = mAudioManager.getStreamMaxVolume( AudioManager.STREAM_SYSTEM );