
missingOldImpl.LocalAudio Maven / Gradle / Ivy
package berlin.yuna.tinkerforgesensor.model.missing;
import berlin.yuna.tinkerforgesensor.util.AudioControl;
import berlin.yuna.tinkerforgesensor.model.AudioCmd;
import berlin.yuna.tinkerforgesensor.model.exception.NetworkConnectionException;
import berlin.yuna.tinkerforgesensor.model.sensor.Sensor;
import berlin.yuna.tinkerforgesensor.model.AudioDevice;
import com.tinkerforge.Device;
import com.tinkerforge.DummyDevice;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.List;
import static berlin.yuna.tinkerforgesensor.model.AudioCmd.REPLAY;
import static berlin.yuna.tinkerforgesensor.model.AudioCmd.UNKNOWN;
import static java.lang.String.format;
import static java.util.Arrays.asList;
/**
* {@link LocalAudio}
* Mini audio player plays wav only
*
* Technical Info
* Play file (allowed = STRING/FILE/PATH/URL/URI)
* sensor.send("/Downloads/mySoundFile.wav");
* Set volume to 50% (0-100)
* sensor.send(50);
* Mute
* sensor.send(true);
* Play file, volume 20%, unmuted
* sensor.send("/Downloads/mySoundFile.wav", 20, false, PLAY);
*
* Audio commands {@link AudioCmd}
* One can be added anytime at sending the commands from above
* sensor.send(PLAY);
* sensor.send(REPLAY);
* sensor.send(PAUSE);
* sensor.send(STOP);
* sensor.send(MUTE);
* sensor.send(UNMUTE);
*
* Parallel sounds
* Can be done by adding different playerIds at the startAsync of the command
* sensor.send(1, "/Downloads/mySoundFile.wav");
* sensor.send(2, "/Downloads/mySoundFile.wav");
*/
public class LocalAudio extends Sensor {
private final HashMap players = new HashMap<>();
public LocalAudio(final Device device, final String uid) throws NetworkConnectionException {
super((DummyDevice) device, uid);
}
@Override
protected Sensor initListener() {
return this;
}
private AudioDevice getPlayer(final int playerId) {
if (playerId == -1) {
return new AudioControl().getDefaultDevice();
} else if (players.containsKey(playerId)) {
return players.get(playerId);
}
final AudioDevice player = new AudioDevice();
players.put(playerId, player);
return player;
}
@Override
public Sensor send(final Object... valuesArray) {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy