public class AudioStream extends RtpStream
RtpStream
which carrys audio payloads over
Real-time Transport Protocol (RTP). Two different classes are developed in
order to support various usages such as audio conferencing. An AudioStream
represents a remote endpoint which consists of a network mapping and a
configured AudioCodec
. On the other side, An AudioGroup
represents a local endpoint which mixes all the AudioStreams and optionally
interacts with the speaker and the microphone at the same time. The simplest
usage includes one for each endpoints. For other combinations, developers
should be aware of the limitations described in AudioGroup
.
An AudioStream becomes busy when it joins an AudioGroup. In this case most
of the setter methods are disabled. This is designed to ease the task of
managing native resources. One can always make an AudioStream leave its
AudioGroup by calling join(AudioGroup)
with null
and put it
back after the modification is done.
Using this class requires
android.Manifest.permission#INTERNET
permission.
RtpStream
,
AudioGroup
MODE_NORMAL, MODE_RECEIVE_ONLY, MODE_SEND_ONLY
Constructor and Description |
---|
AudioStream(InetAddress address)
Creates an AudioStream on the given local address.
|
Modifier and Type | Method and Description |
---|---|
AudioCodec |
getCodec()
Returns the
AudioCodec , or null if it is not set. |
int |
getDtmfType()
Returns the RTP payload type for dual-tone multi-frequency (DTMF) digits,
or
-1 if it is not enabled. |
AudioGroup |
getGroup()
Returns the joined
AudioGroup . |
boolean |
isBusy()
Returns
true if the stream has already joined an
AudioGroup . |
void |
join(AudioGroup group)
Joins an
AudioGroup . |
void |
setCodec(AudioCodec codec)
Sets the
AudioCodec . |
void |
setDtmfType(int type)
Sets the RTP payload type for dual-tone multi-frequency (DTMF) digits.
|
associate, finalize, getLocalAddress, getLocalPort, getMode, getRemoteAddress, getRemotePort, release, setMode
public AudioStream(InetAddress address) throws SocketException
address
- The network address of the local host to bind to.SocketException
- if the address cannot be bound or a problem
occurs during binding.public final boolean isBusy()
true
if the stream has already joined an
AudioGroup
.public AudioGroup getGroup()
AudioGroup
.public void join(AudioGroup group)
AudioGroup
. Each stream can join only one group at a
time. The group can be changed by passing a different one or removed
by calling this method with null
.group
- The AudioGroup to join or null
to leave.IllegalStateException
- if the stream is not properly configured.AudioGroup
public AudioCodec getCodec()
AudioCodec
, or null
if it is not set.setCodec(AudioCodec)
public void setCodec(AudioCodec codec)
AudioCodec
.codec
- The AudioCodec to be used.IllegalArgumentException
- if its type is used by DTMF.IllegalStateException
- if the stream is busy.public int getDtmfType()
-1
if it is not enabled.setDtmfType(int)
public void setDtmfType(int type)
-1
to disable DTMF and free up
the previous assigned type. This method cannot be called when the stream
already joined an AudioGroup
.type
- The RTP payload type to be used or -1
to disable it.IllegalArgumentException
- if the type is invalid or used by codec.IllegalStateException
- if the stream is busy.AudioGroup.sendDtmf(int)