Отдельный поток для музыки и управление mp3 на Java


В одной своей заметке я уже продемонстрировал, как запустить mp3 на Java. Однако, если вы на основе данного примера попробуете создать полноценный плеер, то у вас не получится. Во-первых, необходимо вынести воспроизведение в отдельный поток, а во-вторых – немного переделать метод запуска, чтобы можно было управлять проигрывателем mp3. Вот этим мы сегодня и займемся.

Потоки на Java – отдельная интересная тема, которую мы разберем в каком-нибудь следующем материале, а сейчас все, что надо знать так это то, что поток – это как бы отдельный процесс программы. Зачем это надо? Самый простой пример – это невозможность воспользоваться GUI: то есть когда будут играть музыка, то вы ничего не сможете сделать с формой. Даже закрыть. Неудобно, верно? Так что необходимо создать отдельный поток для воспроизведения mp3 на Java.

private Player player;

public void play(String muss1) throws Exception
    {      
InputStream ist = new FileInputStream(muss1);  
    player = new Player(ist); 
        new Thread()
        {
            @Override
            public void run()
            {
                try 
                {
                    player.play();

                }
                catch (Exception ex) 
                {
                    System.err.println("Ошибка воспроизведения файла" + muss1);
                } 
            }
        }.start();  
    }
Обратите внимание на отличия от кода в предыдущей заметке. Здесь мы используем класс Player, а не AdvancedPlayer. Почему? Потому, что AdvancedPlayer, будучи запущенным уже сам идет как отдельный поток – и мы не сможем его остановить. Точнее, сможем, но только экстренными способами – типа выхода из программы – что, конечно, не есть хорошо. А для экземпляра класса Player (у нас он называется неоригинально - player) мы создаем новую нить (Thread(), поток ), в которой запускаем воспроизведение. В обработчик кнопки Play можно поместить такой код:


    try {
            play(muss1);      
        } catch (Exception ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }	
Где muss1 - путь к mp3 файлу. Для прекращения воспроизведения используем такой метод:

	     public void stop()
    {   
        if( null != player)
        {
        player.close();
        }    
    }
Все остальные методы управления реализовать несложно по аналогии. Вот так можно полноценно работать с mp3 с помощью Java.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, java, mp3, музыка




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Нейронная сеть, распознающая рукописные символы, или помощь в компиляции проекта Java/C++
Урок 26. Массивы C#
Демонстрация движения предмета, брошенного под углом к горизонту