TerrificTable55

Untitled

Dec 16th, 2022
879
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.37 KB | None | 0 0
  1. ```java
  2. package main.java.xyz.terrific.mp3_player;
  3.  
  4. import javazoom.jl.decoder.JavaLayerException;
  5. import javazoom.jl.player.AudioDevice;
  6. import javazoom.jl.player.FactoryRegistry;
  7. import javazoom.jl.player.JavaSoundAudioDevice;
  8. import javazoom.jl.player.advanced.AdvancedPlayer;
  9.  
  10. import java.io.BufferedInputStream;
  11. import java.io.File;
  12. import java.io.FileInputStream;
  13. import java.io.IOException;
  14. import java.util.concurrent.ExecutorService;
  15. import java.util.concurrent.Executors;
  16.  
  17. public class MusicPlayer {
  18.  
  19.     private File mp3_file;
  20.     private final String filename;
  21.     private String filepath;
  22.  
  23.     private FileInputStream fileInputStream;
  24.     private BufferedInputStream bufferedInputStream;
  25.  
  26.     Player player;
  27.     private final Thread playThread;
  28.     private final Thread resumeThread;
  29.  
  30.     private final ExecutorService executor = Executors.newCachedThreadPool();
  31.  
  32.     private long totalLength;
  33.     private long pause;
  34.  
  35.     float gain;
  36.     Boolean paused = false;
  37.  
  38.     public MusicPlayer(String mp3_in, float gain) {
  39.         this(new File(mp3_in), gain);
  40.     }
  41.     public MusicPlayer(String mp3_in) {
  42.         this(new File(mp3_in), 0);
  43.     }
  44.     public MusicPlayer(File mp3_in) {
  45.         this(mp3_in, 0);
  46.     }
  47.     public MusicPlayer(File mp3_in, float gain) {
  48.         mp3_file = mp3_in;
  49.         filename = mp3_file.getName();
  50.         filepath = mp3_file.getAbsolutePath();
  51.         this.gain = gain;
  52.  
  53.         playThread = new Thread(() -> {
  54.             try {
  55.                 fileInputStream = new FileInputStream(mp3_file);
  56.                 bufferedInputStream = new BufferedInputStream(fileInputStream);
  57.  
  58.                 player = new Player(bufferedInputStream);
  59.                 player.setGain(gain);
  60.                 totalLength = fileInputStream.available();
  61.                 player.play();
  62.             } catch (IOException | JavaLayerException e) {
  63.                 e.printStackTrace();
  64.             }
  65.         });
  66.         resumeThread = new Thread(() -> {
  67.             try {
  68.                 fileInputStream = new FileInputStream(mp3_file);
  69.                 bufferedInputStream = new BufferedInputStream(fileInputStream);
  70.  
  71.                 player = new Player(bufferedInputStream);
  72.                 player.setGain(gain);
  73.                 fileInputStream.skip(totalLength - pause);
  74.                 player.play();
  75.             } catch (JavaLayerException | IOException e) {
  76.                 e.printStackTrace();
  77.             }
  78.         });
  79.     }
  80.  
  81.     public void play() {
  82.         executor.submit(playThread);
  83.         System.out.println("Now Playing: " + filename.replace(".mp3", ""));
  84.     }
  85.  
  86.     public void pause() {
  87.         if (paused) {
  88.             paused = false;
  89.             executor.submit(resumeThread);
  90.             System.out.println("Resumed Playing: " + filename.replace(".mp3", ""));
  91.         } else if (player != null) {
  92.             try {
  93.                 pause = fileInputStream.available();
  94.                 paused = true;
  95.                 player.close();
  96.                 System.out.println("Paused Playing: " + filename.replace(".mp3", ""));
  97.             } catch (IOException e) {
  98.                 e.printStackTrace();
  99.             }
  100.         }
  101.     }
  102.  
  103.     public void stop() {
  104.         if (player != null) {
  105.             player.close();
  106.             System.out.println("Stopped Playing: " + filename.replace(".mp3", ""));
  107.         }
  108.     }
  109. }
  110. ```
Advertisement
Add Comment
Please, Sign In to add comment