国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java播放聲音類和一個(gè)簡單示例

2019-11-26 15:37:20
字體:
供稿:網(wǎng)友


播放聲音的類

復(fù)制代碼 代碼如下:

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;

//播放聲音的類
public class PlaySounds extends Thread {

 private String filename;
 public PlaySounds(String wavfile) {

  filename = System.getProperty("user.dir")+wavfile;
 }
 public void run() {

  File soundFile = new File(filename);

  AudioInputStream audioInputStream = null;
  try {
   audioInputStream = AudioSystem.getAudioInputStream(soundFile);
  } catch (Exception e1) {
   e1.printStackTrace();
   return;
  }
  AudioFormat format = audioInputStream.getFormat();
  SourceDataLine auline = null;
  DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
  try {
   auline = (SourceDataLine) AudioSystem.getLine(info);
   auline.open(format);
  } catch (Exception e) {
   e.printStackTrace();
   return;
  }
  auline.start();
  int nBytesRead = 0;
  //這是緩沖
  byte[] abData = new byte[512];
  try {
   while (nBytesRead != -1) {
    nBytesRead = audioInputStream.read(abData, 0, abData.length);
    if (nBytesRead >= 0)
     auline.write(abData, 0, nBytesRead);
   }
  } catch (IOException e) {
   e.printStackTrace();
   return;
  } finally {
   auline.drain();
   auline.close();
  }
 } 
}


下面是一個(gè)java播放聲音的應(yīng)用程序,可以單次播放聲音、循環(huán)播放聲音

MusicPaly myMusicPlay = new MusicPlay(getClass().getResource("/music/button.wav"));
myMusicPlay.start();//播放一次
myMusicPlay .stop();//停止
myMusicPlay .continuousStart();//循環(huán)播放
myMusicPlay .continuousStop();//停止

復(fù)制代碼 代碼如下:

// 文件名:MuiscPlay.java
import java.io.*;
import java.net.URL;
import sun.audio.*;

/**
*
* @author wuhuiwen
* 播放音頻文件,產(chǎn)生音效
*/
public class MusicPlay {
    private AudioStream  as; //單次播放聲音用
    ContinuousAudioDataStream cas;//循環(huán)播放聲音
    // 構(gòu)造函數(shù)
    public MusicPlay(URL url)
    {
        try {
            //打開一個(gè)聲音文件流作為輸入
            as = new AudioStream (url.openStream());
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    // 一次播放 開始
    public void start()
    {
        if( as==null ){
            System.out.println("AudioStream object is not created!");
            return;
        }else{
            AudioPlayer.player.start (as);
        }
    }
    // 一次播放 停止
    public void stop()
    {
        if( as==null ){
            System.out.println("AudioStream object is not created!");
            return;
        }else{
            AudioPlayer.player.stop(as);
        }       
    }
    // 循環(huán)播放 開始
    public void continuousStart()
    {
        // Create AudioData source.
        AudioData data = null;
        try {
            data = as.getData();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // Create ContinuousAudioDataStream.
        cas = new ContinuousAudioDataStream (data);

        // Play audio.
        AudioPlayer.player.start(cas);
    }
    // 循環(huán)播放 停止
    public void continuousStop()
    {
        if(cas != null)
        {
            AudioPlayer.player.stop (cas);
        }   
    }

}

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 岑溪市| 句容市| 易门县| 德安县| 望都县| 屏边| 闽侯县| 进贤县| 微博| 开平市| 如东县| 固镇县| 清徐县| 涟源市| 嘉黎县| 出国| 东源县| 宜君县| 定结县| 衡东县| 集贤县| 福鼎市| 尼玛县| 宁都县| 达拉特旗| 宁国市| 井研县| 阜阳市| 清河县| 荥经县| 班玛县| 西藏| 沭阳县| 乌海市| 中牟县| 银川市| 嵊州市| 邢台县| 大冶市| 宝兴县| 大英县|