国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 古田县| 秦皇岛市| 遵义市| 加查县| 乌兰浩特市| 河津市| 门源| 来宾市| 息烽县| 五峰| 巴林左旗| 登封市| 磐安县| 湖州市| 禹州市| 兴化市| 封丘县| 松原市| 宝丰县| 内江市| 镇赉县| 南漳县| 伊宁市| 苏州市| 钟祥市| 益阳市| 甘泉县| 安岳县| 宽甸| 基隆市| 米林县| 洪雅县| 海口市| 景德镇市| 光山县| 施秉县| 怀来县| 沅陵县| 千阳县| 游戏| 运城市|