//Create a class for music player package MusicPlayer import SmartThing.SmartThings //Importing mutable integer class import MutableInteger.MutableInteger public class MusicPlayers extends SmartThings { List musicPlayers = new ArrayList() MusicPlayers(Closure sendEvent, boolean init) { // Only initialize one time since we only have one device for each capability musicPlayers = smartThings // Initialization StringBuilder id = new StringBuilder("musicPlayerID0") StringBuilder label = new StringBuilder("status") StringBuilder displayName = new StringBuilder("musicPlayer0") StringBuilder mute = new StringBuilder() StringBuilder status = new StringBuilder() StringBuilder trackData = new StringBuilder() StringBuilder trackDescription = new StringBuilder() MutableInteger level = new MutableInteger() if (init) { level.setValue(20) mute.append("unmuted") status.append("paused") trackData.append("someTrack") trackDescription.append("someDescriptions") } else { level.setValue(30) mute.append("muted") status.append("play") trackData.append("someTrack") trackDescription.append("someDescriptions") } musicPlayers.add(new MusicPlayer(sendEvent, id, label, displayName, level, mute, status, trackData, trackDescription)) } // Methods to set values def on(LinkedHashMap metaData) { on() } def on() { musicPlayers[0].on() } def off(LinkedHashMap metaData) { off() } def off() { musicPlayers[0].off() } def mute(LinkedHashMap metaData) { mute() } def mute() { musicPlayers[0].mute() } def unmute(LinkedHashMap metaData) { unmute() } def unmute() { musicPlayers[0].unmute() } def nextTrack(LinkedHashMap metaData) { nextTrack() } def nextTrack() { musicPlayers[0].nextTrack() } def pause(LinkedHashMap metaData) { pause() } def pause() { musicPlayers[0].pause() } def play(LinkedHashMap metaData) { play() } def play() { musicPlayers[0].play() } def playTrack(LinkedHashMap metaData) { playTrack("someTrack") } def playTrack(String trackToPlay) { musicPlayers[0].playTrack(trackToPlay) } def previousTrack(LinkedHashMap metaData) { previousTrack() } def previousTrack() { musicPlayers[0].previousTrack() } def restoreTrack(LinkedHashMap metaData) { restoreTrack() } def restoreTrack(String trackToRestore) { musicPlayers[0].restoreTrack(trackToRestore) } def resumeTrack(LinkedHashMap metaData) { resumeTrack() } def resumeTrack(String trackToResume) { musicPlayers[0].resumeTrack(trackToResume) } def setLevel(LinkedHashMap metaData) { setLevel() } def setLevel(int level) { musicPlayers[0].setLevel(level) } def setTrack(LinkedHashMap metaData) { setTrack() } def setTrack(String trackToSet) { musicPlayers[0].setTrack(trackToSet) } def stop(LinkedHashMap metaData) { stop() } def stop() { musicPlayers[0].stop() } // Methods to return values def getCurrentLevel() { List tmpValues = new ArrayList() tmpValues.add(musicPlayers[0].getCurrentLevel()) return tmpValues } def getCurrentMute() { List tmpValues = new ArrayList() tmpValues.add(musicPlayers[0].getCurrentMute()) return tmpValues } def getCurrentStatus() { List tmpValues = new ArrayList() tmpValues.add(musicPlayers[0].getCurrentStatus()) return tmpValues } def getCurrentTrackData() { List tmpValues = new ArrayList() tmpValues.add(musicPlayers[0].getCurrentTrackData()) return tmpValues } def getCurrentTrackDescription() { List tmpValues = new ArrayList() tmpValues.add(musicPlayers[0].getCurrentTrackDescription()) return tmpValues } }