| 10 | import javazoom.jl.player.advanced.PlaybackListener; |
| 11 | |
| 12 | public class AudioMusic implements IAudioMusic { |
| 13 | private AdvancedPlayer musicPlayer; |
| 14 | private FileInputStream fileStream; |
| 15 | private BufferedInputStream bufferedStream; |
| 16 | private boolean canResume; |
| 17 | private String filename; |
| 18 | private int total; |
| 19 | private int stopped; |
| 20 | private boolean valid; |
| 21 | private Runnable onComplete; |
| 22 | private volatile boolean isPlaying = false; |
| 23 | private VolumeAudioDevice volumeDevice; |
| 24 | |
| 25 | public AudioMusic(String filename0) { |
| 26 | filename = filename0; |
| 27 | } |
| 28 | |
| 29 | @Override |
| 30 | public void play(final Runnable onComplete0) { |
| 31 | onComplete = onComplete0; |
| 32 | play(-1); |
| 33 | } |
| 34 | |
| 35 | private boolean play(int pos) { |
| 36 | valid = true; |
| 37 | canResume = false; |
| 38 | try { |
| 39 | fileStream = new FileInputStream(filename); |
| 40 | total = fileStream.available(); |
| 41 | if (pos > -1) { |
| 42 | fileStream.skip(pos); |
| 43 | } |
| 44 | bufferedStream = new BufferedInputStream(fileStream); |
| 45 | volumeDevice = new VolumeAudioDevice(); |
| 46 | musicPlayer = new AdvancedPlayer(bufferedStream, volumeDevice); |
| 47 | musicPlayer.setPlayBackListener(new PlaybackListener() { |
| 48 | @Override |
| 49 | public void playbackFinished(PlaybackEvent evt) { |
| 50 | if (onComplete != null) { |
| 51 | onComplete.run(); |
| 52 | } |
| 53 | } |
| 54 | }); |
| 55 | Thread musicThread = new Thread(() -> { |
| 56 | try { |
| 57 | isPlaying = true; |
| 58 | musicPlayer.play(); |
| 59 | } |
| 60 | catch (Exception e){ |
| 61 | e.printStackTrace(); |
| 62 | valid = false; |
| 63 | isPlaying = false; |
| 64 | } |
| 65 | }, "Audio Music"); |
| 66 | musicThread.setDaemon(true); |
| 67 | musicThread.start(); |
| 68 | } |
| 69 | catch (Exception e) { |
nothing calls this directly
no outgoing calls
no test coverage detected