欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2014年03月07日 15:40:40   作者:  
這篇文章主要介紹了一個(gè)java播放聲音類和一個(gè)java播放聲音的應(yīng)用程序,應(yīng)用程序可以單次播放聲音、循環(huán)播放聲音,需要的朋友可以參考下


播放聲音的類

復(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);
        }   
    }

}

相關(guān)文章

  • 使用jpa原生sql@Query操作增刪改查

    使用jpa原生sql@Query操作增刪改查

    這篇文章主要介紹了使用jpa原生sql@Query操作增刪改查,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • JDBC環(huán)境設(shè)置(中文詳解)

    JDBC環(huán)境設(shè)置(中文詳解)

    要開始使用JDBC設(shè)置,按照以下所示的步驟開發(fā)JDBC環(huán)境。以下內(nèi)容假設(shè)Windows平臺(tái)上
    2014-03-03
  • 詳解java中的互斥鎖信號(hào)量和多線程等待機(jī)制

    詳解java中的互斥鎖信號(hào)量和多線程等待機(jī)制

    這篇文章主要介紹了Java編程中的互斥鎖,信號(hào)量和多線程等待機(jī)制實(shí)例詳解,簡(jiǎn)單介紹了互斥鎖和信號(hào)量的區(qū)別,需要的朋友可以了解下。
    2017-09-09
  • springboot引用kettle實(shí)現(xiàn)對(duì)接oracle數(shù)據(jù)的示例代碼

    springboot引用kettle實(shí)現(xiàn)對(duì)接oracle數(shù)據(jù)的示例代碼

    這篇文章主要介紹了springboot引用kettle實(shí)現(xiàn)對(duì)接oracle數(shù)據(jù),其實(shí)kettle集成到springboot里面沒(méi)有多少代碼,這個(gè)功能最主要的還是ktr文件的編寫,只要ktr編寫好了,放到指定文件夾下,寫個(gè)定時(shí)任務(wù)就完事了,需要的朋友可以參考下
    2022-12-12
  • mybatis源碼解讀-Java中executor包的語(yǔ)句處理功能

    mybatis源碼解讀-Java中executor包的語(yǔ)句處理功能

    這篇文章主要介紹了Java中executor包的語(yǔ)句處理功能,在mybatis映射文件中傳參數(shù),主要用到#{}或者${},下文圍繞相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • java 開發(fā)使用字符串和數(shù)字的性能分析

    java 開發(fā)使用字符串和數(shù)字的性能分析

    這篇文章主要介紹了java 開發(fā)使用字符串和數(shù)字的性能分析的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 最新評(píng)論