Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > запуск внешних программ


Автор: sergioK 18.12.2008, 10:58
Имеется некая директория содержащая MP3 файлы , хочется запустить чтоб играли один за другим , т,е, первый отыграл 
закрыл окно , запустился следующий , а еще лучше написать bat file  не пользуясь явой(если это возможно) естесно речь идет об XP.


Автор: Asal 18.12.2008, 11:06
не понял в чем вопрос

Цитата(sergioK @  18.12.2008,  10:58 Найти цитируемый пост)
а еще лучше написать bat file  не пользуясь явой

так а Java раздел тут причем ?

Цитата(sergioK @  18.12.2008,  10:58 Найти цитируемый пост)
т,е, первый отыграл закрыл окно , запустился следующий

это типо плЕЕр проиграл и закрылся

Автор: sergioK 18.12.2008, 14:17
Цитата(Asal @ 18.12.2008,  11:06)
 

не понял в чем вопрос

Цитата(sergioK @  18.12.2008,  10:58 Найти цитируемый пост)
а еще лучше написать bat file  не пользуясь явой

так а Java раздел тут причем ?

Цитата(sergioK @  18.12.2008,  10:58 Найти цитируемый пост)
т,е, первый отыграл закрыл окно , запустился следующий

это типо плЕЕр проиграл и закрылся

если есть возможност сделать батку(в чем я не уверен)
то Java  ни  причем , если нельзя очень то причем ,
проблема как автоматизировать закрытие файла из кода ,
т,е, после команды process.waitFor(); нажать автоматом мышку  в медиа плеере, в этом и есть проблема 



да типо плеер , 
сидишь в компании кушаешь пьеш пыво, и музыка играет, 

Автор: math64 18.12.2008, 15:57
Ставишь tomcat, пишешь Mp3Servlet, открывавешь браузер, набираешь адрес http://locahost:8080/Mp3Servlet, выбираешь файлы для прослушивания, закрываешь браузер - никаких лишних окон, слушаешь музыку. Надоело - заходишь по тому же адресу и останавливаешь воспроизведение.

Автор: sergioK 18.12.2008, 20:22
Цитата(math64 @ 18.12.2008,  15:57)
Ставишь tomcat, пишешь Mp3Servlet, открывавешь браузер, набираешь адрес http://locahost:8080/Mp3Servlet, выбираешь файлы для прослушивания, закрываешь браузер - никаких лишних окон, слушаешь музыку. Надоело - заходишь по тому же адресу и останавливаешь воспроизведение.

идея хорошая , а как запускать файлы в браузере , ну понятно не должно быть сложным ,
но все-таки можно пример , для неграмотных    smile 

Автор: math64 19.12.2008, 09:54
Для организации воспроизведения можно использовать Bean:
Код

<%@ page contentType="text/html; charset=windows-1251" %>
<%@ page errorPage="mp3error.jsp" %>
<%@ page import="mymp3">
<jsp:useBean id="mp3bean" scope="application" class="mymp3.Mp3Bean" />
<%
   ...
   mp3bean.reamoveAll();
   ...  
   mp3bean.addFile(filename);
   ...
   mp3bean.play();
   ...
   mp3bean.stop();
%>
<html>
   ...
</html>

Код

package mymp3;
public class Mp3Bean implements Runnable{
Thread thread;
ArrayList playList;
boolean stop = true;

public Mp3Bean {
thread = new Thread(this);
...
}

public void removeAll() {
...
}

public void addFile(String filename) {
...
}

public void play() {
  ...
  stop=false;
  tread.start();
}

public void stop() {
  stop= true;
  ...
}
public void run() {
  while(!stop) {
     ...
  }
}

Нитку воспроизведения нужно останавливать при удалении или обновлении приложения, можно поставить фильтр(но может есть лучшее решение?)
Код

package mymp3;
public class Mp3Filter extends HttpServlet implements Filter {
Mp3Bean mp3bean;
private FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
    ServletContext servletContext = filterConfig.getServletContext();
    synchronized (servletContext) {
      mp3bean = (Mp3Bean)servletContext.getAttribute("mp3bean");
      if (mp3bean == null) {
        mp3bean = new Mp3Bean();
        servletContext.setAttribute("mp3bean", mp3bean);
      }
    }
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) {
    try {
      filterChain.doFilter(request, response);
    } catch (ServletException sx) {
      filterConfig.getServletContext().log(sx.getMessage());
    } catch (IOException iox) {
      filterConfig.getServletContext().log(iox.getMessage());
    }
}
public void destroy() {
  if (mp3bean != null) {
    mp3bean.stop();
    mp3bean0 = null;
  }
}
}

Ну и нужно подобрать библиотеку для воспроизведения mp3 - какую лучше, я не знаю.
Также не знаю как лучше хранить списки воспроизводимых файлов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)