/** * 智能音箱类 * 实现了SmartDevice, PowerControl和AudioControl接口 */ public class SmartSpeaker implements SmartDevice, PowerControl, AudioControl { private String deviceId; private String deviceName; private boolean isPowerOn; private int volume; private boolean isPlaying; /** * 构造函数 * @param deviceId 设备ID * @param deviceName 设备名称 */ public SmartSpeaker(String deviceId, String deviceName) { this.deviceId = deviceId; this.deviceName = deviceName; this.isPowerOn = false; this.volume = 30; // 默认音量30% this.isPlaying = false; } @Override public String getDeviceId() { return deviceId; } @Override public String getDeviceName() { return deviceName; } @Override public String getDeviceType() { return "Speaker"; } @Override public String getStatusDescription() { return deviceName + " (ID: " + deviceId + ") - 状态: " + (isPowerOn ? "开启" : "关闭") + ", 音量: " + volume + "%, " + (isPlaying ? "正在播放" : "未播放"); } @Override public void turnOn() { if (!isPowerOn) { isPowerOn = true; System.out.println(deviceName + " 已开启"); } else { System.out.println(deviceName + " 已经是开启状态"); } } @Override public void turnOff() { if (isPowerOn) { isPowerOn = false; isPlaying = false; // 关闭电源时停止播放 System.out.println(deviceName + " 已关闭"); } else { System.out.println(deviceName + " 已经是关闭状态"); } } @Override public boolean isPowerOn() { return isPowerOn; } @Override public void playAudio() { if (isPowerOn) { isPlaying = true; System.out.println(deviceName + " 开始播放音频"); } else { System.out.println(deviceName + " 未开启电源,无法播放音频"); } } @Override public void pauseAudio() { if (isPowerOn && isPlaying) { isPlaying = false; System.out.println(deviceName + " 暂停播放音频"); } else { System.out.println(deviceName + " 未播放音频,无法暂停"); } } @Override public void stopAudio() { if (isPowerOn && isPlaying) { isPlaying = false; System.out.println(deviceName + " 停止播放音频"); } else { System.out.println(deviceName + " 未播放音频,无法停止"); } } @Override public void setVolume(int volume) { if (volume >= 0 && volume <= 100) { this.volume = volume; System.out.println(deviceName + " 音量已设置为: " + volume + "%"); } else { System.out.println(deviceName + " 音量必须在 0-100% 之间"); } } @Override public int getVolume() { return volume; } }