FileDocCategorySizeDatePackage
RtpStream.javaAPI DocAndroid 5.1 API5704Thu Mar 12 22:22:52 GMT 2015android.net.rtp

RtpStream

public class RtpStream extends Object
RtpStream represents the base class of streams which send and receive network packets with media payloads over Real-time Transport Protocol (RTP).

Using this class requires {@link android.Manifest.permission#INTERNET} permission.

Fields Summary
public static final int
MODE_NORMAL
This mode indicates that the stream sends and receives packets at the same time. This is the initial mode for new streams.
public static final int
MODE_SEND_ONLY
This mode indicates that the stream only sends packets.
public static final int
MODE_RECEIVE_ONLY
This mode indicates that the stream only receives packets.
private static final int
MODE_LAST
private final InetAddress
mLocalAddress
private final int
mLocalPort
private InetAddress
mRemoteAddress
private int
mRemotePort
private int
mMode
private int
mSocket
Constructors Summary
RtpStream(InetAddress address)
Creates a RtpStream on the given local address. Note that the local port is assigned automatically to conform with RFC 3550.

param
address The network address of the local host to bind to.
throws
SocketException if the address cannot be bound or a problem occurs during binding.

     
        System.loadLibrary("rtp_jni");
    
        mLocalPort = create(address.getHostAddress());
        mLocalAddress = address;
    
Methods Summary
public voidassociate(java.net.InetAddress address, int port)
Associates with a remote host. This defines the destination of the outgoing packets.

param
address The network address of the remote host.
param
port The network port of the remote host.
throws
IllegalArgumentException if the address is not supported or the port is invalid.
throws
IllegalStateException if the stream is busy.
see
#isBusy()

        if (isBusy()) {
            throw new IllegalStateException("Busy");
        }
        if (!(address instanceof Inet4Address && mLocalAddress instanceof Inet4Address) &&
                !(address instanceof Inet6Address && mLocalAddress instanceof Inet6Address)) {
            throw new IllegalArgumentException("Unsupported address");
        }
        if (port < 0 || port > 65535) {
            throw new IllegalArgumentException("Invalid port");
        }
        mRemoteAddress = address;
        mRemotePort = port;
    
private native voidclose()

private native intcreate(java.lang.String address)

protected voidfinalize()

        close();
        super.finalize();
    
public java.net.InetAddressgetLocalAddress()
Returns the network address of the local host.

        return mLocalAddress;
    
public intgetLocalPort()
Returns the network port of the local host.

        return mLocalPort;
    
public intgetMode()
Returns the current mode.

        return mMode;
    
public java.net.InetAddressgetRemoteAddress()
Returns the network address of the remote host or {@code null} if the stream is not associated.

        return mRemoteAddress;
    
public intgetRemotePort()
Returns the network port of the remote host or {@code -1} if the stream is not associated.

        return mRemotePort;
    
intgetSocket()

        return mSocket;
    
public booleanisBusy()
Returns {@code true} if the stream is busy. In this case most of the setter methods are disabled. This method is intended to be overridden by subclasses.

        return false;
    
public voidrelease()
Releases allocated resources. The stream becomes inoperable after calling this method.

throws
IllegalStateException if the stream is busy.
see
#isBusy()

        synchronized (this) {
            if (isBusy()) {
                throw new IllegalStateException("Busy");
            }
            close();
        }
    
public voidsetMode(int mode)
Changes the current mode. It must be one of {@link #MODE_NORMAL}, {@link #MODE_SEND_ONLY}, and {@link #MODE_RECEIVE_ONLY}.

param
mode The mode to change to.
throws
IllegalArgumentException if the mode is invalid.
throws
IllegalStateException if the stream is busy.
see
#isBusy()

        if (isBusy()) {
            throw new IllegalStateException("Busy");
        }
        if (mode < 0 || mode > MODE_LAST) {
            throw new IllegalArgumentException("Invalid mode");
        }
        mMode = mode;