abstractaudiorenderingcontrol.java

来自「android_UPNP_DLNA_控制点」· Java 代码 · 共 207 行

JAVA
207
字号
/* * Copyright (C) 2010 Teleal GmbH, Switzerland * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program.  If not, see <http://www.gnu.org/licenses/>. */package org.teleal.cling.support.renderingcontrol;import org.teleal.cling.binding.annotations.UpnpAction;import org.teleal.cling.binding.annotations.UpnpInputArgument;import org.teleal.cling.binding.annotations.UpnpOutputArgument;import org.teleal.cling.binding.annotations.UpnpService;import org.teleal.cling.binding.annotations.UpnpServiceId;import org.teleal.cling.binding.annotations.UpnpServiceType;import org.teleal.cling.binding.annotations.UpnpStateVariable;import org.teleal.cling.binding.annotations.UpnpStateVariables;import org.teleal.cling.model.types.ErrorCode;import org.teleal.cling.model.types.UnsignedIntegerFourBytes;import org.teleal.cling.model.types.UnsignedIntegerTwoBytes;import org.teleal.cling.support.lastchange.LastChange;import org.teleal.cling.support.model.Channel;import org.teleal.cling.support.model.PresetName;import org.teleal.cling.support.model.VolumeDBRange;import org.teleal.cling.support.renderingcontrol.lastchange.RenderingControlLastChangeParser;import java.beans.PropertyChangeSupport;/** * */@UpnpService(        serviceId = @UpnpServiceId("RenderingControl"),        serviceType = @UpnpServiceType(value = "RenderingControl", version = 1),        stringConvertibleTypes = LastChange.class)@UpnpStateVariables({        @UpnpStateVariable(                name = "PresetNameList",                sendEvents = false,                datatype = "string"),        @UpnpStateVariable(                name = "Mute",                sendEvents = false,                datatype = "boolean"),        @UpnpStateVariable(                name = "Volume",                sendEvents = false,                datatype = "ui2",                allowedValueMinimum = 0,                allowedValueMaximum = 100),        @UpnpStateVariable(                name = "VolumeDB",                sendEvents = false,                datatype = "i2"),        @UpnpStateVariable(                name = "Loudness",                sendEvents = false,                datatype = "boolean"),        @UpnpStateVariable(                name = "A_ARG_TYPE_Channel",                sendEvents = false,                allowedValuesEnum = Channel.class),        @UpnpStateVariable(                name = "A_ARG_TYPE_PresetName",                sendEvents = false,                allowedValuesEnum = PresetName.class),        @UpnpStateVariable(                name = "A_ARG_TYPE_InstanceID",                sendEvents = false,                datatype = "ui4")})public abstract class AbstractAudioRenderingControl {    @UpnpStateVariable(eventMaximumRateMilliseconds = 200)    final private LastChange lastChange;    final protected PropertyChangeSupport propertyChangeSupport;    protected AbstractAudioRenderingControl() {        this.propertyChangeSupport = new PropertyChangeSupport(this);        this.lastChange = new LastChange(new RenderingControlLastChangeParser());    }    protected AbstractAudioRenderingControl(LastChange lastChange) {        this.propertyChangeSupport = new PropertyChangeSupport(this);        this.lastChange = lastChange;    }    protected AbstractAudioRenderingControl(PropertyChangeSupport propertyChangeSupport) {        this.propertyChangeSupport = propertyChangeSupport;        this.lastChange = new LastChange(new RenderingControlLastChangeParser());    }    protected AbstractAudioRenderingControl(PropertyChangeSupport propertyChangeSupport, LastChange lastChange) {        this.propertyChangeSupport = propertyChangeSupport;        this.lastChange = lastChange;    }    public LastChange getLastChange() {        return lastChange;    }    public void fireLastChange() {        getLastChange().fire(getPropertyChangeSupport());    }    public PropertyChangeSupport getPropertyChangeSupport() {        return propertyChangeSupport;    }    public static UnsignedIntegerFourBytes getDefaultInstanceID() {        return new UnsignedIntegerFourBytes(0);    }    @UpnpAction(out = @UpnpOutputArgument(name = "CurrentPresetNameList", stateVariable = "PresetNameList"))    public String listPresets(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId) throws RenderingControlException {        return PresetName.FactoryDefault.toString();    }    @UpnpAction    public void selectPreset(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                             @UpnpInputArgument(name = "PresetName") String presetName) throws RenderingControlException {    }    @UpnpAction(out = @UpnpOutputArgument(name = "CurrentMute", stateVariable = "Mute"))    public abstract boolean getMute(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                                    @UpnpInputArgument(name = "Channel") String channelName) throws RenderingControlException;    @UpnpAction    public abstract void setMute(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                                 @UpnpInputArgument(name = "Channel") String channelName,                                 @UpnpInputArgument(name = "DesiredMute", stateVariable = "Mute") boolean desiredMute) throws RenderingControlException;    @UpnpAction(out = @UpnpOutputArgument(name = "CurrentVolume", stateVariable = "Volume"))    public abstract UnsignedIntegerTwoBytes getVolume(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                                                      @UpnpInputArgument(name = "Channel") String channelName) throws RenderingControlException;    @UpnpAction    public abstract void setVolume(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                                   @UpnpInputArgument(name = "Channel") String channelName,                                   @UpnpInputArgument(name = "DesiredVolume", stateVariable = "Volume") UnsignedIntegerTwoBytes desiredVolume) throws RenderingControlException;    @UpnpAction(out = @UpnpOutputArgument(name = "CurrentVolume", stateVariable = "VolumeDB"))    public Integer getVolumeDB(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                             @UpnpInputArgument(name = "Channel") String channelName) throws RenderingControlException {        return 0;    }    @UpnpAction    public void setVolumeDB(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                            @UpnpInputArgument(name = "Channel") String channelName,                            @UpnpInputArgument(name = "DesiredVolume", stateVariable = "VolumeDB") Integer desiredVolumeDB) throws RenderingControlException {        /*        VolumeDB volumeDB = new VolumeDB();        volumeDB.setChannel(channelName);        volumeDB.setVal(new BigInteger(desiredVolumeDB.toString()));        */    }    @UpnpAction(out = {            @UpnpOutputArgument(name = "MinValue", stateVariable = "VolumeDB", getterName = "getMinValue"),            @UpnpOutputArgument(name = "MaxValue", stateVariable = "VolumeDB", getterName = "getMaxValue")    })    public VolumeDBRange getVolumeDBRange(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                                          @UpnpInputArgument(name = "Channel") String channelName) throws RenderingControlException {        return new VolumeDBRange(0, 0);    }    @UpnpAction(out = @UpnpOutputArgument(name = "CurrentLoudness", stateVariable = "Loudness"))    public boolean getLoudness(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                               @UpnpInputArgument(name = "Channel") String channelName) throws RenderingControlException {        return false;    }    @UpnpAction    public void setLoudness(@UpnpInputArgument(name = "InstanceID") UnsignedIntegerFourBytes instanceId,                            @UpnpInputArgument(name = "Channel") String channelName,                            @UpnpInputArgument(name = "DesiredLoudness", stateVariable = "Loudness") boolean desiredLoudness) throws RenderingControlException {/*        Loudness loudness = new Loudness();        loudness.setChannel(channelName);        loudness.setVal(desiredLoudness);*/    }    protected Channel getChannel(String channelName) throws RenderingControlException {        try {            return Channel.valueOf(channelName);        } catch (IllegalArgumentException ex) {            throw new RenderingControlException(ErrorCode.ARGUMENT_VALUE_INVALID, "Unsupported audio channel: " + channelName);        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?