Главная » Статьи » Игры на java

Класс для воспроизведения звуков в приложениях Java

Класс для воспроизведения звуковых файлов

________________________________________________________________

для воспроизведения файла - создать объект согласно конструктора

Audio a_enem = new Audio("res/boom1.wav",0.8);

Для воспроизведения вызвать метод sound для объекта

a_enem.sound();//играть звук 

Для задания уровня громкости - вызвать метод setVolume()

a_enem.setVolume();

Метод play() - воспроизводит муз. файл один раз и позволяет остановить его методом stop().

Полный код класса Audio

Код
/**
 * звук
 */
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.*;

public class Audio {

 private String track; // адрес трека(файла)
 private Clip clip = null;// ссылка на объект класса
 private FloatControl volumeC = null;// контролер громкости
 private double wt; //уровень громкости
 private boolean pl_audio;// воспроизведение звука

 private long timer_p = 0;// начальное время для таймера звучания
 private long timer_f = 0;// конечное время звучания
 private long timer_d;// (количество миллисекунд) длительность трека

 //конструктор (адрес файла, уровень громкости)
 public Audio( String track, double wt){
 this.track = track;
 this.wt =wt;
 this.pl_audio = false;
 }
 //конструктор (адрес файла, уровень громкости, кол.милсек звук трек)
 public Audio( String track, double wt,long timer_d){
 this.timer_d = timer_d;
 this.track = track;
 this.pl_audio = false;
 this.wt =wt;
 }
 


 public void sound() {
 File f = new File(this.track);// передаем звуковой файл в f
 //поток для записи и считывания
 AudioInputStream tr = null; // обьект потока AudioInputStream пуст
 try {
 tr = AudioSystem.getAudioInputStream(f); // Получаем AudioInputStream (нужный файл)
 } catch (UnsupportedAudioFileException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 }
 try {
 clip = AudioSystem.getClip();//Получаем реализацию интерфейса Clip
 clip.open(tr); //Загружаем наш звуковой поток в Clip
 //Получаем контроллер громкости
 volumeC = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);

 clip.setFramePosition(0); //устанавливаем указатель на старт
 clip.start(); //Поехали!!!

 } catch (LineUnavailableException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 }
 }

 // пероигрывать звук объкта одиночное проигрывание с stop()
 public void play() {
 File f = new File(this.track);// передаем звуковой файл в f
 //поток для записи и считывания
 AudioInputStream tr = null; // обьект потока AudioInputStream пуст
 try {
 tr = AudioSystem.getAudioInputStream(f); // Получаем AudioInputStream (нужный файл)
 } catch (UnsupportedAudioFileException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 }
 try {
 clip = AudioSystem.getClip();//Получаем реализацию интерфейса Clip
 clip.open(tr); //Загружаем наш звуковой поток в Clip
 //Получаем контроллер громкости
 volumeC = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);

 if(!this.pl_audio) {
 clip.setFramePosition(0); //устанавливаем указатель на старт
 clip.start(); //Поехали!!!
 this.pl_audio = true; // играет
 }

 } catch (LineUnavailableException e) {
 e.printStackTrace();
 } catch (IOException e) {
 e.printStackTrace();
 }


 }

 //стоп
 public void stop() {

 clip.stop();
 clip.close(); //Закрываем
 this.pl_audio = false;
 }

 //уровень громкости
 public void setVolume() {
 if (wt<0) wt = 0;
 if (wt>1) wt = 1;
 float min = volumeC.getMinimum();
 float max = volumeC.getMaximum();
 volumeC.setValue((max-min)*(float)wt+min);
 }

 // повтор (работает с треками запущенными методом play())
 public void repeat() {
 if (this.pl_audio)
 clip.loop(10); //повторить n раз
 }
 // таймер звука ( для треков запущ. play() и конструктор с timer_d)
 public void timer_play (){
 if (timer_p == 0) { //если таймер не запущен
 timer_p = System.currentTimeMillis();// получаем текущее время милсек
 timer_f = timer_p + timer_d; // конечное время трека
 }
 if(timer_f<=System.currentTimeMillis()) { //если время звучания меньше текущювремени
 this.stop();//стоп трек
 timer_p=0;// обнуляем счетчик
 }
 }
}
Категория: Игры на java | Добавил: kuzma (08.04.2017)
Просмотров: 2477 | Комментарии: 1 | Рейтинг: 3.0/2
Всего комментариев: 1
avatar
1 oasis-2015sony • 19:10, 11.05.2018
а код метода run, можно посмотреть?
avatar

Программирование игр на Python

Django - создание сайтов с нуля

Javascript - просто используем готовые решения