| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Yksinkertainen mp3-soitindatahanska 23.05.06 10:57 Erittäin yksinkertainen esimerkki, kuinka soittaa mp3-tiedostoja JMF:llä.
import javax.media.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; public class Mp3Soitin extends JFrame implements ControllerListener { private Vector kappaleet = new Vector(); private String[] kappaleidenNimet; private JList kappaleLista; private JScrollPane rulla; private JPanel pohjapaneeli = new JPanel(new BorderLayout()); private Component ohjauspaneeliKomponentti; private Player soitin; private URL url; private int index = 0; private Random r = new Random(); public Mp3Soitin() { // Hakee kansion sekä alikansioiden kaikki mp3-tiedostot selaaKansio(new File ("C:\\Documents and Settings\\datahanska\\Omat tiedostot\\Omat musiikkitiedostot")); kappaleidenNimet = new String[kappaleet.size()]; for(int i=0; i<kappaleet.size(); i++) { kappaleidenNimet[i] = ((File)kappaleet.elementAt(i)).getName(); } // Alustetaan JList kappaleLista = new JList(kappaleidenNimet); kappaleLista.setFont(new Font("Verdana", Font.PLAIN, 11)); kappaleLista.setForeground(Color.white); kappaleLista.setBackground(new Color(11,22,100)); kappaleLista.setSelectionBackground(Color.black); kappaleLista.setSelectionForeground(new Color(180,180,240)); rulla = new JScrollPane(kappaleLista); // Alustetaan soitin try { // Asetetaan oletustiedostoksi listan ensimmäinen tiedosto this.url = ((File) kappaleet.elementAt(index)).toURL(); // Luodaan uusi soitin soitin = Manager.createRealizedPlayer(this.url); // Haetaan soittimen ohjauskomponentti ohjauspaneeliKomponentti = soitin.getControlPanelComponent(); // Lisätään soittimeen "kontrolli"-kuuntelija soitin.addControllerListener(this); } catch(Exception e) { JOptionPane.showMessageDialog(null, e, "Virhe!", JOptionPane.ERROR_MESSAGE); } // Hoidetaan ikkuna kuntoon pohjapaneeli.add(rulla, BorderLayout.CENTER); pohjapaneeli.add(ohjauspaneeliKomponentti, BorderLayout.NORTH); this.add(pohjapaneeli); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle("MTPlayer"); this.setLocation(150,150); this.setSize(400, 200); this.setVisible(true); // Asetetaan kappalelistaan kuuntelija kappaleLista.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent lse) { // Laitetaan soimaan listalta valittu kappale soitaKappale(kappaleLista.getSelectedIndex()); } }); } // Konstruktori loppuu private void selaaKansio(File kansio) { if(kansio.isDirectory()) { File[] tiedostot = kansio.listFiles(); for(int i=0; i < tiedostot.length; i++) { if(tiedostot[i].isDirectory()) { selaaKansio(tiedostot[i]); } else if(tiedostot[i].isFile()) { if(tiedostot[i].getName().endsWith(".mp3")) { kappaleet.add(tiedostot[i]); } } } } else { JOptionPane.showMessageDialog (null, "Virheellinen kansio!", "Virhe!", JOptionPane.ERROR_MESSAGE); } } private void soitaKappale(int i) { try { this.index = i; this.url = ((File) kappaleet.elementAt(i)).toURL(); soitin.stop(); soitin.deallocate(); soitin = Manager.createRealizedPlayer(this.url); soitin.addControllerListener(this); // Soittimen ohjauskomponentti pitää lisätä aina uuteen soittimeen int leveys = ohjauspaneeliKomponentti.getWidth(); int korkeus = ohjauspaneeliKomponentti.getHeight(); pohjapaneeli.remove(ohjauspaneeliKomponentti); ohjauspaneeliKomponentti = soitin.getControlPanelComponent(); ohjauspaneeliKomponentti.setBounds(0, 0, leveys, korkeus); pohjapaneeli.add(ohjauspaneeliKomponentti, BorderLayout.NORTH); soitin.start(); } catch(Exception e) { JOptionPane.showMessageDialog(null, e, "Virhe!", JOptionPane.ERROR_MESSAGE); } } public synchronized void controllerUpdate(ControllerEvent ce) { // Kun kappale loppuu if(ce instanceof EndOfMediaEvent) { kappaleLista.setSelectedIndex(r.nextInt(kappaleet.size())); } } public static void main(String[] args) { new Mp3Soitin(); } } Entropia 14:08 23.5.06 Tämä on siis koodipätkä UI:n tekemiseen, joka soittaa ämppäreitä. Koodaa seuraavaksi ne oikeat MP3 dekoodausrutiinit. :) editoitu: 16:17 23.5.06 Jaenis 16:16 23.5.06 Entropia kirjoitti: Tämä on siis koodipätkä UI:n tekemiseen, joka soittaa ämppäreitä. Koodaa seuraavaksi ne oikeat MP3 dekoodausrutiinit. :) Tulipahan tästä vain mieleen että pyörää ei aina kannata keksiä uudestaan - vaikka siitä jotkut tykkääkin ;) Edit: Tämä oli siis kommentti kommenttiin, ei koodinpätkään Entropia 09:45 30.5.06 Jaenis kirjoitti: Entropia kirjoitti: Tämä on siis koodipätkä UI:n tekemiseen, joka soittaa ämppäreitä. Koodaa seuraavaksi ne oikeat MP3 dekoodausrutiinit. :) Tulipahan tästä vain mieleen että pyörää ei aina kannata keksiä uudestaan - vaikka siitä jotkut tykkääkin ;) Edit: Tämä oli siis kommentti kommenttiin, ei koodinpätkään Tietysti. Mutta onhan tämäkin jo pyörän uudelleen keksimistä, jos oikein viilataan pilkkua. |
![]() Haku
|