sound/src/main/java/org/apidesign/html/sound/spi/AudioEnvironment.java
author Jaroslav Tulach <jaroslav.tulach@netbeans.org>
Fri, 07 Feb 2014 07:44:34 +0100
changeset 551 7ca2253fa86d
parent 537 da9edae6b0a9
child 740 f34b06e2d139
permissions -rw-r--r--
Updating copyright headers to mention current year
toni@107
     1
/**
jaroslav@358
     2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
toni@107
     3
 *
jaroslav@551
     4
 * Copyright 2013-2014 Oracle and/or its affiliates. All rights reserved.
toni@107
     5
 *
jaroslav@358
     6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
jaroslav@358
     7
 * Other names may be trademarks of their respective owners.
toni@107
     8
 *
jaroslav@358
     9
 * The contents of this file are subject to the terms of either the GNU
jaroslav@358
    10
 * General Public License Version 2 only ("GPL") or the Common
jaroslav@358
    11
 * Development and Distribution License("CDDL") (collectively, the
jaroslav@358
    12
 * "License"). You may not use this file except in compliance with the
jaroslav@358
    13
 * License. You can obtain a copy of the License at
jaroslav@358
    14
 * http://www.netbeans.org/cddl-gplv2.html
jaroslav@358
    15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
jaroslav@358
    16
 * specific language governing permissions and limitations under the
jaroslav@358
    17
 * License.  When distributing the software, include this License Header
jaroslav@358
    18
 * Notice in each file and include the License file at
jaroslav@358
    19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
jaroslav@358
    20
 * particular file as subject to the "Classpath" exception as provided
jaroslav@358
    21
 * by Oracle in the GPL Version 2 section of the License file that
jaroslav@358
    22
 * accompanied this code. If applicable, add the following below the
jaroslav@358
    23
 * License Header, with the fields enclosed by brackets [] replaced by
jaroslav@358
    24
 * your own identifying information:
jaroslav@358
    25
 * "Portions Copyrighted [year] [name of copyright owner]"
jaroslav@358
    26
 *
jaroslav@358
    27
 * Contributor(s):
jaroslav@358
    28
 *
jaroslav@358
    29
 * The Original Software is NetBeans. The Initial Developer of the Original
jaroslav@551
    30
 * Software is Oracle. Portions Copyright 2013-2014 Oracle. All Rights Reserved.
jaroslav@358
    31
 *
jaroslav@358
    32
 * If you wish your version of this file to be governed by only the CDDL
jaroslav@358
    33
 * or only the GPL Version 2, indicate your decision by adding
jaroslav@358
    34
 * "[Contributor] elects to include this software in this distribution
jaroslav@358
    35
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
jaroslav@358
    36
 * single choice of license, a recipient has the option to distribute
jaroslav@358
    37
 * your version of this file under either the CDDL, the GPL Version 2 or
jaroslav@358
    38
 * to extend the choice of license to its licensees as provided above.
jaroslav@358
    39
 * However, if you add GPL Version 2 code and therefore, elected the GPL
jaroslav@358
    40
 * Version 2 license, then the option applies only if the new code is
jaroslav@358
    41
 * made subject to such option by the copyright holder.
toni@107
    42
 */
toni@109
    43
package org.apidesign.html.sound.spi;
toni@107
    44
jaroslav@537
    45
/** Basic interface for sound playback providers. Register your implementation
jaroslav@537
    46
 * in a way {@link java.util.ServiceLoader} can find it - e.g. use
jaroslav@537
    47
 * {@link org.openide.util.lookup.ServiceProvider} annotation.
toni@107
    48
 *
toni@107
    49
 * @author antonepple
jaroslav@537
    50
 * @param <Audio> custom type representing the internal audio state
toni@107
    51
 */
jaroslav@223
    52
public interface AudioEnvironment<Audio> {
jaroslav@537
    53
    /** Checks if the provided URL can be a supported audio stream 
jaroslav@537
    54
     * and if so, it create an object to represent it. The created object
jaroslav@537
    55
     * will be used in future callbacks to other methods of this interface
jaroslav@537
    56
     * (like {@link #play(java.lang.Object)}).
jaroslav@537
    57
     * @param src the URL pointing to the media stream
jaroslav@537
    58
     * @return an internal representation object or <code>null</code> if this
jaroslav@537
    59
     *   environment does not know how to handle such stream
jaroslav@537
    60
     */
jaroslav@223
    61
    public Audio create(String src);
toni@107
    62
jaroslav@537
    63
    /** Starts playback of the audio.
jaroslav@537
    64
     * 
jaroslav@537
    65
     * @param a the internal representation of the audio as created by {@link #create(java.lang.String)} method.
jaroslav@537
    66
     */
jaroslav@223
    67
    public void play(Audio a);
toni@107
    68
jaroslav@537
    69
    /** Pauses playback of the audio.
jaroslav@537
    70
     * 
jaroslav@537
    71
     * @param a the internal representation of the audio as created by {@link #create(java.lang.String)} method.
jaroslav@537
    72
     */
jaroslav@223
    73
    public void pause(Audio a);
toni@107
    74
jaroslav@537
    75
    /** Changes volume for the playback of the audio.
jaroslav@537
    76
     * 
jaroslav@537
    77
     * @param a the internal representation of the audio as created by {@link #create(java.lang.String)} method.
jaroslav@537
    78
     * @param volume value between 0.0 and 1.0
jaroslav@537
    79
     */
jaroslav@223
    80
    public void setVolume(Audio a, double volume);
jaroslav@537
    81
jaroslav@537
    82
    /** Checks whether given audio is supported
jaroslav@537
    83
     * 
jaroslav@537
    84
     * @param a
jaroslav@537
    85
     * @return <code>true</code> or <code>false</code>
jaroslav@537
    86
     */
jaroslav@248
    87
    public boolean isSupported(Audio a);
toni@107
    88
}