1 //Create a class for music player
3 import Timer.SimulatedTimer
6 public class MusicPlayer {
9 private String displayName
13 private int trackNumber
14 private String trackData
15 private String trackDescription
17 MusicPlayer(String id, String label, String displayName, int level, String mute, String status, int trackNumber, String trackData, String trackDescription) {
20 this.displayName = displayName
24 this.trackNumber = trackNumber
25 this.trackData = trackData
26 this.trackDescription = trackDescription
30 def setValue(String value, String name) {
31 if (name == "status") {
33 println("the status of the music player with id:$id is changed to $value!")
34 } else if (name == "level") {
35 this.level = value.toInteger()
36 println("the level sound of the music player with id:$id is changed to $value!")
37 } else if (name == "trackDescription") {
38 this.trackDescription = value
39 println("the trackDescription of the music player with id:$id is changed to $value!")
40 } else if (name == "trackData") {
41 this.trackData = value
42 println("the trackData of the music player with id:$id is changed to $value!")
43 } else if (name == "mute") {
45 println("the mute state of the music player with id:$id is changed to $value!")
51 println("the music player with id:$id is muted!")
53 sendEvent([name: "mute", value: "mute", deviceId: this.id, descriptionText: "",
54 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "mute"]])
57 trackNumber = trackNumber+1
58 def trackPlaying = trackData
59 println("the $trackPlaying is selected!")
60 this.status = "playing"
61 sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
62 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
63 sendEvent([name: "trackDescription", value: "someDescriptions", deviceId: this.id, descriptionText: "",
64 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someDescriptions"]])
65 sendEvent([name: "trackData", value: "someTrack", deviceId: this.id, descriptionText: "",
66 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someTrack"]])
69 println("the music player with id:$id is paused!")
70 this.status = "paused"
71 sendEvent([name: "status", value: "paused", deviceId: this.id, descriptionText: "",
72 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "paused"]])
75 println("the music player with id:$id is starting to play!")
76 this.status = "playing"
77 sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
78 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
80 def playTrack(String trackToPlay) {
81 def trackPlaying = trackData
82 println("the $trackPlaying is selected to play!")
83 this.status = "playing"
84 sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
85 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
86 sendEvent([name: "trackDescription", value: "someDescriptions", deviceId: this.id, descriptionText: "",
87 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someDescriptions"]])
88 sendEvent([name: "trackData", value: "someTrack", deviceId: this.id, descriptionText: "",
89 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someTrack"]])
93 trackNumber = trackNumber-1
94 def trackPlaying = trackData
95 println("the $trackPlaying is selected!")
96 this.status = "playing"
97 sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
98 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
99 sendEvent([name: "trackDescription", value: "someDescriptions", deviceId: this.id, descriptionText: "",
100 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someDescriptions"]])
101 sendEvent([name: "trackData", value: "someTrack", deviceId: this.id, descriptionText: "",
102 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someTrack"]])
104 /*def restoreTrack(String trackToRestore) {
105 musicPlayers*.restoreTrack(trackToRestore)
107 def resumeTrack(String trackToResume) {
108 def trackPlaying = trackData
109 println("the $trackPlaying is resumed!")
110 this.status = "playing"
111 sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
112 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
114 def setLevel(int level) {
116 println("the level of sound is changed to $level!")
117 sendEvent([name: "level", value: "$level", deviceId: this.id, descriptionText: "",
118 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "$level"]])
120 def setTrack(String trackToSet) {
121 def trackPlaying = trackData
122 println("the $trackPlaying is set!")
123 this.status = "playing"
124 sendEvent([name: "status", value: "playing", deviceId: this.id, descriptionText: "",
125 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "playing"]])
126 sendEvent([name: "trackDescription", value: "someDescriptions", deviceId: this.id, descriptionText: "",
127 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someDescriptions"]])
128 sendEvent([name: "trackData", value: "someTrack", deviceId: this.id, descriptionText: "",
129 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "someTrack"]])
132 println("the music player with id:$id is stopped!")
133 this.status = "stopped"
134 sendEvent([name: "status", value: "stopped", deviceId: this.id, descriptionText: "",
135 displayed: true, linkText: "", isStateChange: false, unit: "", data: [value: "stopped"]])
138 def currentValue(String deviceFeature) {
139 if (deviceFeature == "musicPlayer") {