@Override public void setLooping (boolean isLooping) { if (player == null) return; player.setLooping(isLooping); }
AndroidAudioDevice (int samplingRate, boolean isMono) { this.isMono = isMono; int minSize = AudioTrack.getMinBufferSize(samplingRate, isMono ? AudioFormat.CHANNEL_OUT_MONO : AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT); track = new AudioTrack(AudioManager.STREAM_MUSIC, samplingRate, isMono ? AudioFormat.CHANNEL_OUT_MONO : AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, minSize, AudioTrack.MODE_STREAM); track.play(); latency = minSize / (isMono ? 1 : 2); }
AndroidMusic (AndroidAudio audio, MediaPlayer player) { this.audio = audio; this.player = player; this.onCompletionListener = null; this.player.setOnCompletionListener(this); }
@Override public float getPosition () { if (player == null) return 0.0f; return player.getCurrentPosition() / 1000f; }
@Override public void setVolume (float volume) { if (player == null) return; player.setVolume(volume, volume); this.volume = volume; }
@Override public void read (short[] samples, int offset, int numSamples) { int read = 0; while (read != numSamples) { read += recorder.read(samples, offset + read, numSamples - read); } }
@Override public void setVolume (float volume) { track.setStereoVolume(volume, volume); } }
@Override public void setLooping (boolean isLooping) { if (player == null) return; player.setLooping(isLooping); }
AndroidAudioDevice (int samplingRate, boolean isMono) { this.isMono = isMono; int minSize = AudioTrack.getMinBufferSize(samplingRate, isMono ? AudioFormat.CHANNEL_OUT_MONO : AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT); track = new AudioTrack(AudioManager.STREAM_MUSIC, samplingRate, isMono ? AudioFormat.CHANNEL_OUT_MONO : AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT, minSize, AudioTrack.MODE_STREAM); track.play(); latency = minSize / (isMono ? 1 : 2); }
@Override public float getPosition () { if (player == null) return 0.0f; return player.getCurrentPosition() / 1000f; }
@Override public void setVolume (float volume) { if (player == null) return; player.setVolume(volume, volume); this.volume = volume; }
@Override public void read (short[] samples, int offset, int numSamples) { int read = 0; while (read != numSamples) { read += recorder.read(samples, offset + read, numSamples - read); } }
@Override public void setVolume (float volume) { track.setStereoVolume(volume, volume); } }