AudioRecord
open class AudioRecord : AudioRecordingMonitor, AudioRouting, MicrophoneDirection
kotlin.Any | |
↳ | android.media.AudioRecord |
The AudioRecord class manages the audio resources for Java applications to record audio from the audio input hardware of the platform. This is achieved by "pulling" (reading) the data from the AudioRecord object. The application is responsible for polling the AudioRecord object in time using one of the following three methods: read(byte[],int,int)
, read(short[],int,int)
or read(java.nio.ByteBuffer,int)
. The choice of which method to use will be based on the audio data storage format that is the most convenient for the user of AudioRecord.
Upon creation, an AudioRecord object initializes its associated audio buffer that it will fill with the new audio data. The size of this buffer, specified during the construction, determines how long an AudioRecord can record before "over-running" data that has not been read yet. Data should be read from the audio hardware in chunks of sizes inferior to the total recording buffer size.
Applications creating an AudioRecord instance need android.Manifest.permission#RECORD_AUDIO
or the Builder will throw java.lang.UnsupportedOperationException
on build()
, and the constructor will return an instance in state STATE_UNINITIALIZED
.
Summary
Nested classes | |
---|---|
open |
Builder class for |
abstract |
Interface definition for a callback to be invoked when an AudioRecord has reached a notification marker set by |
abstract |
Defines the interface by which applications can receive notifications of routing changes for the associated |
Constants | |
---|---|
static Int |
Denotes a generic operation failure. |
static Int |
Denotes a failure due to the use of an invalid value. |
static Int |
An error code indicating that the object reporting it is no longer valid and needs to be recreated. |
static Int |
Denotes a failure due to the improper use of a method. |
static Int |
The read mode indicating the read operation will block until all data requested has been read. |
static Int |
The read mode indicating the read operation will return immediately after reading as much audio data as possible without blocking. |
static Int |
indicates AudioRecord recording state is recording |
static Int |
indicates AudioRecord recording state is not recording |
static Int |
indicates AudioRecord state is ready to be used |
static Int |
indicates AudioRecord state is not successfully initialized. |
static Int |
Denotes a successful operation. |
Inherited constants | |
---|---|
Public constructors | |
---|---|
AudioRecord(audioSource: Int, sampleRateInHz: Int, channelConfig: Int, audioFormat: Int, bufferSizeInBytes: Int) Class constructor. |
Public methods | |
---|---|
open Unit |
addOnRoutingChangedListener(listener: AudioRecord.OnRoutingChangedListener!, handler: Handler!) Adds an |
open Unit |
addOnRoutingChangedListener(listener: AudioRouting.OnRoutingChangedListener!, handler: Handler!) Adds an |
open MutableList<MicrophoneInfo!>! |
Returns a lists of |
open AudioRecordingConfiguration? |
Returns the current active audio recording for this audio recorder. |
open Int |
Returns the configured audio data encoding. |
open Int |
Returns the audio session ID. |
open Int |
Returns the audio recording source. |
open Int |
Returns the frame count of the native |
open Int |
Returns the configured channel position mask. |
open Int |
Returns the configured number of channels. |
open AudioFormat |
Returns the configured |
open LogSessionId |
Returns the |
open PersistableBundle! |
Return Metrics data about the current AudioTrack instance. |
open static Int |
getMinBufferSize(sampleRateInHz: Int, channelConfig: Int, audioFormat: Int) Returns the minimum buffer size required for the successful creation of an AudioRecord object, in byte units. |
open Int |
Returns the notification marker position expressed in frames. |
open Int |
Returns the notification update period expressed in frames. |
open AudioDeviceInfo! |
Returns the selected input specified by |
open Int |
Returns the recording state of the AudioRecord instance. |
open AudioDeviceInfo! |
Returns an |
open Int |
Returns the configured audio sink sample rate in Hz. |
open Int |
getState() Returns the state of the AudioRecord instance. |
open Int |
getTimestamp(outTimestamp: AudioTimestamp, timebase: Int) Poll for an |
open Boolean |
Returns whether this AudioRecord is marked as privacy sensitive or not. |
open Int |
Reads audio data from the audio hardware for recording into a byte array. |
open Int |
Reads audio data from the audio hardware for recording into a byte array. |
open Int |
read(audioData: FloatArray, offsetInFloats: Int, sizeInFloats: Int, readMode: Int) Reads audio data from the audio hardware for recording into a float array. |
open Int |
read(audioBuffer: ByteBuffer, sizeInBytes: Int) Reads audio data from the audio hardware for recording into a direct buffer. |
open Int |
read(audioBuffer: ByteBuffer, sizeInBytes: Int, readMode: Int) Reads audio data from the audio hardware for recording into a direct buffer. |
open Int |
read(audioData: ShortArray, offsetInShorts: Int, sizeInShorts: Int) Reads audio data from the audio hardware for recording into a short array. |
open Int |
read(audioData: ShortArray, offsetInShorts: Int, sizeInShorts: Int, readMode: Int) Reads audio data from the audio hardware for recording into a short array. |
open Unit |
Register a callback to be notified of audio capture changes via a |
open Unit |
release() Releases the native AudioRecord resources. |
open Unit |
Removes an |
open Unit |
Removes an |
open Unit |
setLogSessionId(logSessionId: LogSessionId) Sets a |
open Int |
setNotificationMarkerPosition(markerInFrames: Int) Sets the marker position at which the listener is called, if set with |
open Int |
setPositionNotificationPeriod(periodInFrames: Int) Sets the period at which the listener is called, if set with |
open Boolean |
setPreferredDevice(deviceInfo: AudioDeviceInfo!) Specifies an audio device (via an |
open Boolean |
setPreferredMicrophoneDirection(direction: Int) Specifies the logical microphone (for processing). |
open Boolean |
Specifies the zoom factor (i.e. the field dimension) for the selected microphone (for processing). |
open Unit |
Sets the listener the AudioRecord notifies when a previously set marker is reached or for each periodic record head position update. |
open Unit |
setRecordPositionUpdateListener(listener: AudioRecord.OnRecordPositionUpdateListener!, handler: Handler!) Sets the listener the AudioRecord notifies when a previously set marker is reached or for each periodic record head position update. |
open Unit |
Starts recording from the AudioRecord instance. |
open Unit |
startRecording(syncEvent: MediaSyncEvent!) Starts recording from the AudioRecord instance when the specified synchronization event occurs on the specified audio session. |
open Unit |
stop() Stops recording. |
open Unit |
Unregister an audio recording callback previously registered with |
Protected methods | |
---|---|
open Unit |
finalize() |
Constants
ERROR_BAD_VALUE
static val ERROR_BAD_VALUE: Int
Denotes a failure due to the use of an invalid value.
Value: -2
ERROR_DEAD_OBJECT
static val ERROR_DEAD_OBJECT: Int
An error code indicating that the object reporting it is no longer valid and needs to be recreated.
Value: -6
ERROR_INVALID_OPERATION
static val ERROR_INVALID_OPERATION: Int
Denotes a failure due to the improper use of a method.
Value: -3
READ_BLOCKING
static val READ_BLOCKING: Int
The read mode indicating the read operation will block until all data requested has been read.
Value: 0
READ_NON_BLOCKING
static val READ_NON_BLOCKING: Int
The read mode indicating the read operation will return immediately after reading as much audio data as possible without blocking.
Value: 1
RECORDSTATE_RECORDING
static val RECORDSTATE_RECORDING: Int
indicates AudioRecord recording state is recording
Value: 3
RECORDSTATE_STOPPED
static val RECORDSTATE_STOPPED: Int
indicates AudioRecord recording state is not recording
Value: 1
STATE_INITIALIZED
static val STATE_INITIALIZED: Int
indicates AudioRecord state is ready to be used
Value: 1
STATE_UNINITIALIZED
static val STATE_UNINITIALIZED: Int
indicates AudioRecord state is not successfully initialized.
Value: 0
Public constructors
AudioRecord
AudioRecord(
audioSource: Int,
sampleRateInHz: Int,
channelConfig: Int,
audioFormat: Int,
bufferSizeInBytes: Int)
Class constructor. Though some invalid parameters will result in an IllegalArgumentException
exception, other errors do not. Thus you should call getState()
immediately after construction to confirm that the object is usable.
Requires android.Manifest.permission#RECORD_AUDIO
Parameters | |
---|---|
audioSource |
Int: the recording source. See MediaRecorder.AudioSource for the recording source definitions. |
sampleRateInHz |
Int: the sample rate expressed in Hertz. 44100Hz is currently the only rate that is guaranteed to work on all devices, but other rates such as 22050, 16000, and 11025 may work on some devices. AudioFormat.SAMPLE_RATE_UNSPECIFIED means to use a route-dependent value which is usually the sample rate of the source. getSampleRate() can be used to retrieve the actual sample rate chosen. |
channelConfig |
Int: describes the configuration of the audio channels. See AudioFormat.CHANNEL_IN_MONO and AudioFormat.CHANNEL_IN_STEREO . AudioFormat.CHANNEL_IN_MONO is guaranteed to work on all devices. |
audioFormat |
Int: the format in which the audio data is to be returned. See AudioFormat.ENCODING_PCM_8BIT , AudioFormat.ENCODING_PCM_16BIT , and AudioFormat.ENCODING_PCM_FLOAT . |
bufferSizeInBytes |
Int: the total size (in bytes) of the buffer where audio data is written to during the recording. New audio data can be read from this buffer in smaller chunks than this size. See getMinBufferSize(int,int,int) to determine the minimum required buffer size for the successful creation of an AudioRecord instance. Using values smaller than getMinBufferSize() will result in an initialization failure. |
Exceptions | |
---|---|
java.lang.IllegalArgumentException |
Public methods
addOnRoutingChangedListener
open funaddOnRoutingChangedListener(
listener: AudioRecord.OnRoutingChangedListener!,
handler: Handler!
): Unit
Deprecated: users should switch to the general purpose AudioRouting.OnRoutingChangedListener
class instead.
Adds an OnRoutingChangedListener
to receive notifications of routing changes on this AudioRecord.
Parameters | |
---|---|
listener |
AudioRecord.OnRoutingChangedListener!: The OnRoutingChangedListener interface to receive notifications of rerouting events. |
handler |
Handler!: Specifies the Handler object for the thread on which to execute the callback. If null , the Handler associated with the main Looper will be used. |
addOnRoutingChangedListener
open fun addOnRoutingChangedListener(
listener: AudioRouting.OnRoutingChangedListener!,
handler: Handler!
): Unit
Adds an AudioRouting.OnRoutingChangedListener
to receive notifications of routing changes on this AudioRecord.
Parameters | |
---|---|
listener |
AudioRouting.OnRoutingChangedListener!: The AudioRouting.OnRoutingChangedListener interface to receive notifications of rerouting events. |
handler |
Handler!: Specifies the Handler object for the thread on which to execute the callback. If null , the Handler associated with the main Looper will be used. |
getActiveMicrophones
open fun getActiveMicrophones(): MutableList<MicrophoneInfo!>!
Returns a lists of MicrophoneInfo
representing the active microphones. By querying channel mapping for each active microphone, developer can know how the microphone is used by each channels or a capture stream. Note that the information about the active microphones may change during a recording. See AudioManager.registerAudioDeviceCallback
to be notified of changes in the audio devices, querying the active microphones then will return the latest information.
Return | |
---|---|
MutableList<MicrophoneInfo!>! |
a lists of MicrophoneInfo representing the active microphones. |
Exceptions | |
---|---|
java.io.IOException |
if an error occurs |
getActiveRecordingConfiguration
open fun getActiveRecordingConfiguration(): AudioRecordingConfiguration?
Returns the current active audio recording for this audio recorder.
Return | |
---|---|
AudioRecordingConfiguration? |
a valid AudioRecordingConfiguration if this recorder is active or null otherwise. |
getAudioFormat
open fun getAudioFormat(): Int
Returns the configured audio data encoding. See AudioFormat.ENCODING_PCM_8BIT
, AudioFormat.ENCODING_PCM_16BIT
, and AudioFormat.ENCODING_PCM_FLOAT
.
getAudioSessionId
open fun getAudioSessionId(): Int
Returns the audio session ID.
Return | |
---|---|
Int |
the ID of the audio session this AudioRecord belongs to. |
getAudioSource
open fun getAudioSource(): Int
Returns the audio recording source.
getBufferSizeInFrames
open fun getBufferSizeInFrames(): Int
Returns the frame count of the native AudioRecord
buffer. This is greater than or equal to the bufferSizeInBytes converted to frame units specified in the AudioRecord
constructor or Builder. The native frame count may be enlarged to accommodate the requirements of the source on creation or if the AudioRecord
is subsequently rerouted.
Return | |
---|---|
Int |
current size in frames of the AudioRecord buffer. |
Exceptions | |
---|---|
java.lang.IllegalStateException |
getChannelConfiguration
open fun getChannelConfiguration(): Int
Returns the configured channel position mask.
See AudioFormat.CHANNEL_IN_MONO
and AudioFormat.CHANNEL_IN_STEREO
. This method may return AudioFormat.CHANNEL_INVALID
if a channel index mask is used. Consider getFormat()
instead, to obtain an AudioFormat
, which contains both the channel position mask and the channel index mask.
getChannelCount
open fun getChannelCount(): Int
Returns the configured number of channels.
getFormat
open fun getFormat(): AudioFormat
Returns the configured AudioRecord
format.
Return | |
---|---|
AudioFormat |
an AudioFormat containing the AudioRecord parameters at the time of configuration. This value cannot be null . |
getLogSessionId
open fun getLogSessionId(): LogSessionId
Returns the LogSessionId
.
Return | |
---|---|
LogSessionId |
This value cannot be null . |
getMetrics
open fun getMetrics(): PersistableBundle!
Return Metrics data about the current AudioTrack instance.
Return | |
---|---|
PersistableBundle! |
a PersistableBundle containing the set of attributes and values available for the media being handled by this instance of AudioRecord The attributes are descibed in MetricsConstants . Additional vendor-specific fields may also be present in the return value. |
getMinBufferSize
open static fun getMinBufferSize(
sampleRateInHz: Int,
channelConfig: Int,
audioFormat: Int
): Int
Returns the minimum buffer size required for the successful creation of an AudioRecord object, in byte units. Note that this size doesn't guarantee a smooth recording under load, and higher values should be chosen according to the expected frequency at which the AudioRecord instance will be polled for new data. See AudioRecord(int,int,int,int,int)
for more information on valid configuration values.
Parameters | |
---|---|
sampleRateInHz |
Int: the sample rate expressed in Hertz. AudioFormat.SAMPLE_RATE_UNSPECIFIED is not permitted. |
channelConfig |
Int: describes the configuration of the audio channels. See AudioFormat.CHANNEL_IN_MONO and AudioFormat.CHANNEL_IN_STEREO |
audioFormat |
Int: the format in which the audio data is represented. See AudioFormat.ENCODING_PCM_16BIT . |
Return | |
---|---|
Int |
ERROR_BAD_VALUE if the recording parameters are not supported by the hardware, or an invalid parameter was passed, or ERROR if the implementation was unable to query the hardware for its input properties, or the minimum buffer size expressed in bytes. |
getNotificationMarkerPosition
open fun getNotificationMarkerPosition(): Int
Returns the notification marker position expressed in frames.
getPositionNotificationPeriod
open fun getPositionNotificationPeriod(): Int
Returns the notification update period expressed in frames.
getPreferredDevice
open fun getPreferredDevice(): AudioDeviceInfo!
Returns the selected input specified by setPreferredDevice
. Note that this is not guarenteed to correspond to the actual device being used for recording.
getRecordingState
open fun getRecordingState(): Int
Returns the recording state of the AudioRecord instance.
getRoutedDevice
open fun getRoutedDevice(): AudioDeviceInfo!
Returns an AudioDeviceInfo
identifying the current routing of this AudioRecord. Note: The query is only valid if the AudioRecord is currently recording. If it is not, getRoutedDevice()
will return null.
getSampleRate
open fun getSampleRate(): Int
Returns the configured audio sink sample rate in Hz. The sink sample rate never changes after construction. If the constructor had a specific sample rate, then the sink sample rate is that value. If the constructor had AudioFormat.SAMPLE_RATE_UNSPECIFIED
, then the sink sample rate is a route-dependent default value based on the source [sic].
getState
open fun getState(): Int
Returns the state of the AudioRecord instance. This is useful after the AudioRecord instance has been created to check if it was initialized properly. This ensures that the appropriate hardware resources have been acquired.
getTimestamp
open fun getTimestamp(
outTimestamp: AudioTimestamp,
timebase: Int
): Int
Poll for an AudioTimestamp
on demand.
The AudioTimestamp reflects the frame delivery information at the earliest point available in the capture pipeline.
Calling startRecording()
following a stop()
will reset the frame count to 0.
Parameters | |
---|---|
outTimestamp |
AudioTimestamp: a caller provided non-null AudioTimestamp instance, which is updated with the AudioRecord frame delivery information upon success. |
timebase |
Int: one of AudioTimestamp.TIMEBASE_BOOTTIME or AudioTimestamp.TIMEBASE_MONOTONIC , used to select the clock for the AudioTimestamp time. Value is android.media.AudioTimestamp#TIMEBASE_MONOTONIC , or android.media.AudioTimestamp#TIMEBASE_BOOTTIME |
Return | |
---|---|
Int |
SUCCESS if a timestamp is available, or ERROR_INVALID_OPERATION if a timestamp not available. |
isPrivacySensitive
open fun isPrivacySensitive(): Boolean
Returns whether this AudioRecord is marked as privacy sensitive or not.
See Builder.setPrivacySensitive(boolean)
Return | |
---|---|
Boolean |
true if privacy sensitive, false otherwise |
read
open fun read(
audioData: ByteArray,
offsetInBytes: Int,
sizeInBytes: Int
): Int
Reads audio data from the audio hardware for recording into a byte array. The format specified in the AudioRecord constructor should be AudioFormat.ENCODING_PCM_8BIT
to correspond to the data in the array.
Parameters | |
---|---|
audioData |
ByteArray: the array to which the recorded audio data is written. This value cannot be null . |
offsetInBytes |
Int: index in audioData from which the data is written expressed in bytes. |
sizeInBytes |
Int: the number of requested bytes. |
Return | |
---|---|
Int |
zero or the positive number of bytes that were read, or one of the following error codes. The number of bytes will not exceed sizeInBytes.
|
read
open fun read(
audioData: ByteArray,
offsetInBytes: Int,
sizeInBytes: Int,
readMode: Int
): Int
Reads audio data from the audio hardware for recording into a byte array. The format specified in the AudioRecord constructor should be AudioFormat.ENCODING_PCM_8BIT
to correspond to the data in the array. The format can be AudioFormat.ENCODING_PCM_16BIT
, but this is deprecated.
Parameters | |
---|---|
audioData |
ByteArray: the array to which the recorded audio data is written. This value cannot be null . |
offsetInBytes |
Int: index in audioData to which the data is written expressed in bytes. Must not be negative, or cause the data access to go out of bounds of the array. |
sizeInBytes |
Int: the number of requested bytes. Must not be negative, or cause the data access to go out of bounds of the array. |
readMode |
Int: one of READ_BLOCKING , READ_NON_BLOCKING . With READ_BLOCKING , the read will block until all the requested data is read. With READ_NON_BLOCKING , the read will return immediately after reading as much audio data as possible without blocking. Value is android.media.AudioRecord#READ_BLOCKING , or android.media.AudioRecord#READ_NON_BLOCKING |
Return | |
---|---|
Int |
zero or the positive number of bytes that were read, or one of the following error codes. The number of bytes will be a multiple of the frame size in bytes not to exceed sizeInBytes.
|
read
open fun read(
audioData: FloatArray,
offsetInFloats: Int,
sizeInFloats: Int,
readMode: Int
): Int
Reads audio data from the audio hardware for recording into a float array. The format specified in the AudioRecord constructor should be AudioFormat.ENCODING_PCM_FLOAT
to correspond to the data in the array.
Parameters | |
---|---|
audioData |
FloatArray: the array to which the recorded audio data is written. This value cannot be null . |
offsetInFloats |
Int: index in audioData from which the data is written. Must not be negative, or cause the data access to go out of bounds of the array. |
sizeInFloats |
Int: the number of requested floats. Must not be negative, or cause the data access to go out of bounds of the array. |
readMode |
Int: one of READ_BLOCKING , READ_NON_BLOCKING . With READ_BLOCKING , the read will block until all the requested data is read. With READ_NON_BLOCKING , the read will return immediately after reading as much audio data as possible without blocking. Value is android.media.AudioRecord#READ_BLOCKING , or android.media.AudioRecord#READ_NON_BLOCKING |
Return | |
---|---|
Int |
zero or the positive number of floats that were read, or one of the following error codes. The number of floats will be a multiple of the channel count not to exceed sizeInFloats.
|
read
open fun read(
audioBuffer: ByteBuffer,
sizeInBytes: Int
): Int
Reads audio data from the audio hardware for recording into a direct buffer. If this buffer is not a direct buffer, this method will always return 0. Note that the value returned by java.nio.Buffer#position()
on this buffer is unchanged after a call to this method. The representation of the data in the buffer will depend on the format specified in the AudioRecord constructor, and will be native endian.
Parameters | |
---|---|
audioBuffer |
ByteBuffer: the direct buffer to which the recorded audio data is written. Data is written to audioBuffer.position(). This value cannot be null . |
sizeInBytes |
Int: the number of requested bytes. It is recommended but not enforced that the number of bytes requested be a multiple of the frame size (sample size in bytes multiplied by the channel count). |
Return | |
---|---|
Int |
zero or the positive number of bytes that were read, or one of the following error codes. The number of bytes will not exceed sizeInBytes and will be truncated to be a multiple of the frame size.
|
read
open fun read(
audioBuffer: ByteBuffer,
sizeInBytes: Int,
readMode: Int
): Int
Reads audio data from the audio hardware for recording into a direct buffer. If this buffer is not a direct buffer, this method will always return 0. Note that the value returned by java.nio.Buffer#position()
on this buffer is unchanged after a call to this method. The representation of the data in the buffer will depend on the format specified in the AudioRecord constructor, and will be native endian.
Parameters | |
---|---|
audioBuffer |
ByteBuffer: the direct buffer to which the recorded audio data is written. Data is written to audioBuffer.position(). This value cannot be null . |
sizeInBytes |
Int: the number of requested bytes. It is recommended but not enforced that the number of bytes requested be a multiple of the frame size (sample size in bytes multiplied by the channel count). |
readMode |
Int: one of READ_BLOCKING , READ_NON_BLOCKING . With READ_BLOCKING , the read will block until all the requested data is read. With READ_NON_BLOCKING , the read will return immediately after reading as much audio data as possible without blocking. Value is android.media.AudioRecord#READ_BLOCKING , or android.media.AudioRecord#READ_NON_BLOCKING |
Return | |
---|---|
Int |
zero or the positive number of bytes that were read, or one of the following error codes. The number of bytes will not exceed sizeInBytes and will be truncated to be a multiple of the frame size.
|
read
open fun read(
audioData: ShortArray,
offsetInShorts: Int,
sizeInShorts: Int
): Int
Reads audio data from the audio hardware for recording into a short array. The format specified in the AudioRecord constructor should be AudioFormat.ENCODING_PCM_16BIT
to correspond to the data in the array.
Parameters | |
---|---|
audioData |
ShortArray: the array to which the recorded audio data is written. This value cannot be null . |
offsetInShorts |
Int: index in audioData to which the data is written expressed in shorts. Must not be negative, or cause the data access to go out of bounds of the array. |
sizeInShorts |
Int: the number of requested shorts. Must not be negative, or cause the data access to go out of bounds of the array. |
Return | |
---|---|
Int |
zero or the positive number of shorts that were read, or one of the following error codes. The number of shorts will be a multiple of the channel count not to exceed sizeInShorts.
|
read
open fun read(
audioData: ShortArray,
offsetInShorts: Int,
sizeInShorts: Int,
readMode: Int
): Int
Reads audio data from the audio hardware for recording into a short array. The format specified in the AudioRecord constructor should be AudioFormat.ENCODING_PCM_16BIT
to correspond to the data in the array.
Parameters | |
---|---|
audioData |
ShortArray: the array to which the recorded audio data is written. This value cannot be null . |
offsetInShorts |
Int: index in audioData from which the data is written expressed in shorts. Must not be negative, or cause the data access to go out of bounds of the array. |
sizeInShorts |
Int: the number of requested shorts. Must not be negative, or cause the data access to go out of bounds of the array. |
readMode |
Int: one of READ_BLOCKING , READ_NON_BLOCKING . With READ_BLOCKING , the read will block until all the requested data is read. With READ_NON_BLOCKING , the read will return immediately after reading as much audio data as possible without blocking. Value is android.media.AudioRecord#READ_BLOCKING , or android.media.AudioRecord#READ_NON_BLOCKING |
Return | |
---|---|
Int |
zero or the positive number of shorts that were read, or one of the following error codes. The number of shorts will be a multiple of the channel count not to exceed sizeInShorts.
|
registerAudioRecordingCallback
open fun registerAudioRecordingCallback(
executor: Executor,
cb: AudioManager.AudioRecordingCallback
): Unit
Register a callback to be notified of audio capture changes via a AudioManager.AudioRecordingCallback
. A callback is received when the capture path configuration changes (pre-processing, format, sampling rate...) or capture is silenced/unsilenced by the system.
Parameters | |
---|---|
executor |
Executor: Executor to handle the callbacks. This value cannot be null . Callback and listener events are dispatched through this Executor , providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use Context.getMainExecutor() . Otherwise, provide an Executor that dispatches to an appropriate thread. |
cb |
AudioManager.AudioRecordingCallback: non-null callback to register |
release
open fun release(): Unit
Releases the native AudioRecord resources. The object can no longer be used and the reference should be set to null after a call to release()
removeOnRoutingChangedListener
open funremoveOnRoutingChangedListener(listener: AudioRecord.OnRoutingChangedListener!): Unit
Deprecated: users should switch to the general purpose AudioRouting.OnRoutingChangedListener
class instead.
Removes an OnRoutingChangedListener
which has been previously added to receive rerouting notifications.
Parameters | |
---|---|
listener |
AudioRecord.OnRoutingChangedListener!: The previously added OnRoutingChangedListener interface to remove. |
removeOnRoutingChangedListener
open fun removeOnRoutingChangedListener(listener: AudioRouting.OnRoutingChangedListener!): Unit
Removes an AudioRouting.OnRoutingChangedListener
which has been previously added to receive rerouting notifications.
Parameters | |
---|---|
listener |
AudioRouting.OnRoutingChangedListener!: The previously added AudioRouting.OnRoutingChangedListener interface to remove. |
setLogSessionId
open fun setLogSessionId(logSessionId: LogSessionId): Unit
Sets a LogSessionId
instance to this AudioRecord for metrics collection.
Parameters | |
---|---|
logSessionId |
LogSessionId: a LogSessionId instance which is used to identify this object to the metrics service. Proper generated Ids must be obtained from the Java metrics service and should be considered opaque. Use LogSessionId.LOG_SESSION_ID_NONE to remove the logSessionId association. This value cannot be null . |
Exceptions | |
---|---|
java.lang.IllegalStateException |
if AudioRecord not initialized. |
setNotificationMarkerPosition
open fun setNotificationMarkerPosition(markerInFrames: Int): Int
Sets the marker position at which the listener is called, if set with setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener)
or setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener,android.os.Handler)
.
Parameters | |
---|---|
markerInFrames |
Int: marker position expressed in frames |
Return | |
---|---|
Int |
error code or success, see SUCCESS , ERROR_BAD_VALUE , ERROR_INVALID_OPERATION |
setPositionNotificationPeriod
open fun setPositionNotificationPeriod(periodInFrames: Int): Int
Sets the period at which the listener is called, if set with setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener)
or setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener,android.os.Handler)
. It is possible for notifications to be lost if the period is too small.
Parameters | |
---|---|
periodInFrames |
Int: update period expressed in frames |
Return | |
---|---|
Int |
error code or success, see SUCCESS , ERROR_INVALID_OPERATION |
setPreferredDevice
open fun setPreferredDevice(deviceInfo: AudioDeviceInfo!): Boolean
Specifies an audio device (via an AudioDeviceInfo
object) to route the input to this AudioRecord.
Parameters | |
---|---|
deviceInfo |
AudioDeviceInfo!: The AudioDeviceInfo specifying the audio source. If deviceInfo is null, default routing is restored. |
Return | |
---|---|
Boolean |
true if successful, false if the specified AudioDeviceInfo is non-null and does not correspond to a valid audio input device. |
setPreferredMicrophoneDirection
open fun setPreferredMicrophoneDirection(direction: Int): Boolean
Specifies the logical microphone (for processing). Applications can use this to specify which side of the device to optimize capture from. Typically used in conjunction with the camera capturing video.
Return | |
---|---|
Boolean |
true if sucessful. |
setPreferredMicrophoneFieldDimension
open fun setPreferredMicrophoneFieldDimension(zoom: Float): Boolean
Specifies the zoom factor (i.e. the field dimension) for the selected microphone (for processing). The selected microphone is determined by the use-case for the stream.
Parameters | |
---|---|
zoom |
Float: the desired field dimension of microphone capture. Range is from -1 (wide angle), though 0 (no zoom) to 1 (maximum zoom). Value is between -1.0 and 1.0 inclusive |
Return | |
---|---|
Boolean |
true if sucessful. |
setRecordPositionUpdateListener
open fun setRecordPositionUpdateListener(listener: AudioRecord.OnRecordPositionUpdateListener!): Unit
Sets the listener the AudioRecord notifies when a previously set marker is reached or for each periodic record head position update.
Parameters | |
---|---|
listener |
AudioRecord.OnRecordPositionUpdateListener!: |
setRecordPositionUpdateListener
open fun setRecordPositionUpdateListener(
listener: AudioRecord.OnRecordPositionUpdateListener!,
handler: Handler!
): Unit
Sets the listener the AudioRecord notifies when a previously set marker is reached or for each periodic record head position update. Use this method to receive AudioRecord events in the Handler associated with another thread than the one in which you created the AudioRecord instance.
Parameters | |
---|---|
listener |
AudioRecord.OnRecordPositionUpdateListener!: |
handler |
Handler!: the Handler that will receive the event notification messages. |
startRecording
open fun startRecording(): Unit
Starts recording from the AudioRecord instance.
Exceptions | |
---|---|
java.lang.IllegalStateException |
startRecording
open fun startRecording(syncEvent: MediaSyncEvent!): Unit
Starts recording from the AudioRecord instance when the specified synchronization event occurs on the specified audio session.
Parameters | |
---|---|
syncEvent |
MediaSyncEvent!: event that triggers the capture. |
Exceptions | |
---|---|
java.lang.IllegalStateException |
See Also
stop
open fun stop(): Unit
Stops recording.
Exceptions | |
---|---|
java.lang.IllegalStateException |
unregisterAudioRecordingCallback
open fun unregisterAudioRecordingCallback(cb: AudioManager.AudioRecordingCallback): Unit
Unregister an audio recording callback previously registered with registerAudioRecordingCallback(java.util.concurrent.Executor,android.media.AudioManager.AudioRecordingCallback)
.
Parameters | |
---|---|
cb |
AudioManager.AudioRecordingCallback: non-null callback to unregister |
Protected methods
finalize
protected open fun finalize(): Unit
Exceptions | |
---|---|
java.lang.Throwable |
the Exception raised by this method |