AudioTrack.Write 方法

定义

重载

Write(ByteBuffer, Int32, WriteMode)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

Write(Byte[], Int32, Int32)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

Write(Int16[], Int32, Int32)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

Write(ByteBuffer, Int32, WriteMode, Int64)

将音频数据写入音频接收器,以便在HW_AV_SYNC轨道上的流模式下播放。

Write(Byte[], Int32, Int32, WriteMode)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

Write(Int16[], Int32, Int32, WriteMode)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

Write(Single[], Int32, Int32, WriteMode)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

Write(ByteBuffer, Int32, WriteMode)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

[Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;II)I", "GetWrite_Ljava_nio_ByteBuffer_IIHandler")]
public virtual int Write (Java.Nio.ByteBuffer audioData, int sizeInBytes, Android.Media.WriteMode writeMode);
[<Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;II)I", "GetWrite_Ljava_nio_ByteBuffer_IIHandler")>]
abstract member Write : Java.Nio.ByteBuffer * int * Android.Media.WriteMode -> int
override this.Write : Java.Nio.ByteBuffer * int * Android.Media.WriteMode -> int

参数

audioData
ByteBuffer

保存要写入的数据的缓冲区,从报告 audioData.position()的位置开始。 <BR>注意,返回后,缓冲区位置 (audioData.position()) 将已提前反映成功写入 AudioTrack 的数据量。

sizeInBytes
Int32

要写入的字节数。 建议不要强制要求请求的字节数是帧大小的倍数(样本大小(以字节为单位的样本大小乘以通道计数)。 <BR>注意,这可能不同于 audioData.remaining(),但不能超过它。

writeMode
WriteMode

其中一个#WRITE_BLOCKING#WRITE_NON_BLOCKING 它在静态模式下不起作用。 <BR>With #WRITE_BLOCKING,写入将阻塞,直到所有数据都写入音频接收器。 <BR>With #WRITE_NON_BLOCKING, 写入将在排队后立即返回尽可能多的音频数据进行播放,而不会阻止。

返回

写入的字节数为零或正数,或以下错误代码之一。 <如果轨道未正确初始化</li li<>如果参数无法解析为有效的数据和索引</li li#ERROR_DEAD_OBJECT><>(如果 AudioTrack 不再有效并且需要重新创建),则为 ul><li。#ERROR_BAD_VALUE>>#ERROR_INVALID_OPERATION 如果成功传输某些数据,则不会返回死对象错误代码。 在这种情况下,在下次写入时返回错误()</li li#ERROR>><,以防其他错误</li></ul>

属性

注解

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。 ByteBuffer 中的 audioData 应与 AudioTrack 构造函数中指定的格式匹配。

在流式处理模式下,阻止行为取决于写入模式。 如果写入模式为 #WRITE_BLOCKING,则写入通常会阻止,直到所有数据都排队播放,并返回完全传输计数。 但是,如果写入模式是 #WRITE_NON_BLOCKING,或者跟踪在条目上停止或暂停,或者另一个线程通过调用停止或暂停来中断写入,或者在写入期间发生 I/O 错误,则写入可能会返回短传输计数。

在静态缓冲区模式下,将数据复制到从偏移量 0 开始的缓冲区,并忽略写入模式。 请注意,此函数返回后,可能会出现此数据的实际播放。

适用于 . 的 android.media.AudioTrack.write(java.nio.ByteBuffer, int, int)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Write(Byte[], Int32, Int32)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

[Android.Runtime.Register("write", "([BII)I", "GetWrite_arrayBIIHandler")]
public virtual int Write (byte[] audioData, int offsetInBytes, int sizeInBytes);
[<Android.Runtime.Register("write", "([BII)I", "GetWrite_arrayBIIHandler")>]
abstract member Write : byte[] * int * int -> int
override this.Write : byte[] * int * int -> int

参数

audioData
Byte[]

保存要播放的数据的数组。

offsetInBytes
Int32

在要写入的数据开始的 audioData 中以字节表示的偏移量。 不得为负值,或导致数据访问超出数组的边界。

sizeInBytes
Int32

在偏移量后在 audioData 中写入的字节数。 不得为负值,或导致数据访问超出数组的边界。

返回

写入的字节数为零或正数,或以下错误代码之一。 字节数将是帧大小的倍数,以字节为单位,不能超过 sizeInBytes。 <如果轨道未正确初始化</li li<>如果参数无法解析为有效的数据和索引</li li#ERROR_DEAD_OBJECT><>(如果 AudioTrack 不再有效并且需要重新创建),则为 ul><li。#ERROR_BAD_VALUE>>#ERROR_INVALID_OPERATION 如果成功传输某些数据,则不会返回死对象错误代码。 在这种情况下,在下一个 write()/li li 中返回错误()</li<>,>#ERROR以防其他错误</li></ul> 这等效于#write(byte[], int, int, int)writeMode设置为 。#WRITE_BLOCKING

属性

注解

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。 AudioTrack 构造函数中指定的格式应 AudioFormat#ENCODING_PCM_8BIT 对应于数组中的数据。 格式可以是 AudioFormat#ENCODING_PCM_16BIT,但已弃用。

在流式处理模式下,写入通常会阻止,直到所有数据都排队播放,并返回完全传输计数。 但是,如果跟踪在输入时停止或暂停,或者另一个线程通过调用停止或暂停来中断写入,或者在写入期间发生 I/O 错误,则写入可能会返回短传输计数。

在静态缓冲区模式下,将数据从偏移量 0 开始复制到缓冲区。 请注意,此函数返回后,可能会出现此数据的实际播放。

适用于 . 的 android.media.AudioTrack.write(byte[], int, int)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Write(Int16[], Int32, Int32)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

[Android.Runtime.Register("write", "([SII)I", "GetWrite_arraySIIHandler")]
public virtual int Write (short[] audioData, int offsetInShorts, int sizeInShorts);
[<Android.Runtime.Register("write", "([SII)I", "GetWrite_arraySIIHandler")>]
abstract member Write : int16[] * int * int -> int
override this.Write : int16[] * int * int -> int

参数

audioData
Int16[]

保存要播放的数据的数组。

offsetInShorts
Int32

在要播放的数据开始的 audioData 中表示的偏移量。 不得为负值,或导致数据访问超出数组的边界。

sizeInShorts
Int32

偏移量后在 audioData 中读取的短裤数。 不得为负值,或导致数据访问超出数组的边界。

返回

已写入的短裤数或以下错误代码之一为零或正数。 短裤数将是不超过 sizeInShorts 的通道计数的倍数。 <如果轨道未正确初始化</li li<>如果参数无法解析为有效的数据和索引</li li#ERROR_DEAD_OBJECT><>(如果 AudioTrack 不再有效并且需要重新创建),则为 ul><li。#ERROR_BAD_VALUE>>#ERROR_INVALID_OPERATION 如果成功传输某些数据,则不会返回死对象错误代码。 在这种情况下,在下一个 write()/li li 中返回错误()</li<>,>#ERROR以防其他错误</li></ul> 这等效于#write(short[], int, int, int)writeMode设置为 。#WRITE_BLOCKING

属性

注解

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。 AudioTrack 构造函数中指定的格式应 AudioFormat#ENCODING_PCM_16BIT 对应于数组中的数据。

在流式处理模式下,写入通常会阻止,直到所有数据都排队播放,并返回完全传输计数。 但是,如果跟踪在输入时停止或暂停,或者另一个线程通过调用停止或暂停来中断写入,或者在写入期间发生 I/O 错误,则写入可能会返回短传输计数。

在静态缓冲区模式下,将数据从偏移量 0 开始复制到缓冲区。 请注意,此函数返回后,可能会出现此数据的实际播放。

适用于 . 的 android.media.AudioTrack.write(short[], int, int)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Write(ByteBuffer, Int32, WriteMode, Int64)

将音频数据写入音频接收器,以便在HW_AV_SYNC轨道上的流模式下播放。

[Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;IIJ)I", "GetWrite_Ljava_nio_ByteBuffer_IIJHandler", ApiSince=23)]
public virtual int Write (Java.Nio.ByteBuffer audioData, int sizeInBytes, Android.Media.WriteMode writeMode, long timestamp);
[<Android.Runtime.Register("write", "(Ljava/nio/ByteBuffer;IIJ)I", "GetWrite_Ljava_nio_ByteBuffer_IIJHandler", ApiSince=23)>]
abstract member Write : Java.Nio.ByteBuffer * int * Android.Media.WriteMode * int64 -> int
override this.Write : Java.Nio.ByteBuffer * int * Android.Media.WriteMode * int64 -> int

参数

audioData
ByteBuffer

保存要写入的数据的缓冲区,从报告 audioData.position()的位置开始。 <BR>注意,返回后,缓冲区位置 (audioData.position()) 将已提前反映成功写入 AudioTrack 的数据量。

sizeInBytes
Int32

要写入的字节数。 建议不要强制要求请求的字节数是帧大小的倍数(样本大小(以字节为单位的样本大小乘以通道计数)。 <BR>注意,这可能不同于 audioData.remaining(),但不能超过它。

writeMode
WriteMode

其中一个#WRITE_BLOCKING#WRITE_NON_BLOCKING <BR>With #WRITE_BLOCKING,写入将阻塞,直到所有数据都写入音频接收器。 <BR>With #WRITE_NON_BLOCKING, 写入将在排队后立即返回尽可能多的音频数据进行播放,而不会阻止。

timestamp
Int64

提供的 audioData 中第一个可解码音频帧的时间戳(以纳秒为单位)。

返回

写入的字节数为零或正数,或以下错误代码之一。 <如果轨道未正确初始化</li li<>如果参数无法解析为有效的数据和索引</li li#ERROR_DEAD_OBJECT><>(如果 AudioTrack 不再有效并且需要重新创建),则为 ul><li。#ERROR_BAD_VALUE>>#ERROR_INVALID_OPERATION 如果成功传输某些数据,则不会返回死对象错误代码。 在这种情况下,在下次写入时返回错误()</li li#ERROR>><,以防其他错误</li></ul>

属性

注解

将音频数据写入音频接收器,以便在HW_AV_SYNC轨道上的流模式下播放。阻止行为将取决于写入模式。

适用于 . 的 android.media.AudioTrack.write(java.nio.ByteBuffer, int, int, long)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Write(Byte[], Int32, Int32, WriteMode)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

[Android.Runtime.Register("write", "([BIII)I", "GetWrite_arrayBIIIHandler", ApiSince=23)]
public virtual int Write (byte[] audioData, int offsetInBytes, int sizeInBytes, Android.Media.WriteMode writeMode);
[<Android.Runtime.Register("write", "([BIII)I", "GetWrite_arrayBIIIHandler", ApiSince=23)>]
abstract member Write : byte[] * int * int * Android.Media.WriteMode -> int
override this.Write : byte[] * int * int * Android.Media.WriteMode -> int

参数

audioData
Byte[]

保存要播放的数据的数组。

offsetInBytes
Int32

在要写入的数据开始的 audioData 中以字节表示的偏移量。 不得为负值,或导致数据访问超出数组的边界。

sizeInBytes
Int32

在偏移量后在 audioData 中写入的字节数。 不得为负值,或导致数据访问超出数组的边界。

writeMode
WriteMode

其中一个#WRITE_BLOCKING#WRITE_NON_BLOCKING 它在静态模式下不起作用。 <br>With #WRITE_BLOCKING,写入将阻塞,直到所有数据都写入音频接收器。 <br>With #WRITE_NON_BLOCKING, 写入将在排队后立即返回尽可能多的音频数据进行播放,而不会阻止。

返回

写入的字节数为零或正数,或以下错误代码之一。 字节数将是帧大小的倍数,以字节为单位,不能超过 sizeInBytes。 <如果轨道未正确初始化</li li<>如果参数无法解析为有效的数据和索引</li li#ERROR_DEAD_OBJECT><>(如果 AudioTrack 不再有效并且需要重新创建),则为 ul><li。#ERROR_BAD_VALUE>>#ERROR_INVALID_OPERATION 如果成功传输某些数据,则不会返回死对象错误代码。 在这种情况下,在下次写入时返回错误()</li li#ERROR>><,以防其他错误</li></ul>

属性

注解

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。 AudioTrack 构造函数中指定的格式应 AudioFormat#ENCODING_PCM_8BIT 对应于数组中的数据。 格式可以是 AudioFormat#ENCODING_PCM_16BIT,但已弃用。

在流式处理模式下,阻止行为取决于写入模式。 如果写入模式为 #WRITE_BLOCKING,则写入通常会阻止,直到所有数据都排队播放,并返回完全传输计数。 但是,如果写入模式是 #WRITE_NON_BLOCKING,或者跟踪在条目上停止或暂停,或者另一个线程通过调用停止或暂停来中断写入,或者在写入期间发生 I/O 错误,则写入可能会返回短传输计数。

在静态缓冲区模式下,将数据复制到从偏移量 0 开始的缓冲区,并忽略写入模式。 请注意,此函数返回后,可能会出现此数据的实际播放。

适用于 . 的 android.media.AudioTrack.write(byte[], int, int, int)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Write(Int16[], Int32, Int32, WriteMode)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

[Android.Runtime.Register("write", "([SIII)I", "GetWrite_arraySIIIHandler", ApiSince=23)]
public virtual int Write (short[] audioData, int offsetInShorts, int sizeInShorts, Android.Media.WriteMode writeMode);
[<Android.Runtime.Register("write", "([SIII)I", "GetWrite_arraySIIIHandler", ApiSince=23)>]
abstract member Write : int16[] * int * int * Android.Media.WriteMode -> int
override this.Write : int16[] * int * int * Android.Media.WriteMode -> int

参数

audioData
Int16[]

保存要写入的数据的数组。

offsetInShorts
Int32

在要写入的数据开始的 audioData 中以短时间表示的偏移量。 不得为负值,或导致数据访问超出数组的边界。

sizeInShorts
Int32

偏移量后在 audioData 中读取的短裤数。 不得为负值,或导致数据访问超出数组的边界。

writeMode
WriteMode

其中一个#WRITE_BLOCKING#WRITE_NON_BLOCKING 它在静态模式下不起作用。 <br>With #WRITE_BLOCKING,写入将阻塞,直到所有数据都写入音频接收器。 <br>With #WRITE_NON_BLOCKING, 写入将在排队后立即返回尽可能多的音频数据进行播放,而不会阻止。

返回

已写入的短裤数或以下错误代码之一为零或正数。 短裤数将是不超过 sizeInShorts 的通道计数的倍数。 <如果轨道未正确初始化</li li<>如果参数无法解析为有效的数据和索引</li li#ERROR_DEAD_OBJECT><>(如果 AudioTrack 不再有效并且需要重新创建),则为 ul><li。#ERROR_BAD_VALUE>>#ERROR_INVALID_OPERATION 如果成功传输某些数据,则不会返回死对象错误代码。 在这种情况下,在下次写入时返回错误()</li li#ERROR>><,以防其他错误</li></ul>

属性

注解

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。 AudioTrack 构造函数中指定的格式应 AudioFormat#ENCODING_PCM_16BIT 对应于数组中的数据。

在流式处理模式下,阻止行为取决于写入模式。 如果写入模式为 #WRITE_BLOCKING,则写入通常会阻止,直到所有数据都排队播放,并返回完全传输计数。 但是,如果写入模式是 #WRITE_NON_BLOCKING,或者跟踪在条目上停止或暂停,或者另一个线程通过调用停止或暂停来中断写入,或者在写入期间发生 I/O 错误,则写入可能会返回短传输计数。

在静态缓冲区模式下,将数据从偏移量 0 开始复制到缓冲区。 请注意,此函数返回后,可能会出现此数据的实际播放。

适用于 . 的 android.media.AudioTrack.write(short[], int, int, int)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

Write(Single[], Int32, Int32, WriteMode)

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。

[Android.Runtime.Register("write", "([FIII)I", "GetWrite_arrayFIIIHandler")]
public virtual int Write (float[] audioData, int offsetInFloats, int sizeInFloats, Android.Media.WriteMode writeMode);
[<Android.Runtime.Register("write", "([FIII)I", "GetWrite_arrayFIIIHandler")>]
abstract member Write : single[] * int * int * Android.Media.WriteMode -> int
override this.Write : single[] * int * int * Android.Media.WriteMode -> int

参数

audioData
Single[]

保存要写入的数据的数组。 如果音频管道中的所有增益小于或等于 unity(1.0f),并且缺少可增加能量的后处理效果(如混响),则实现不会剪辑名义范围 [-1.0f, 1.0f] 内的示例值。 为了方便使用具有非 unity 增益的筛选器计算样本的应用程序,允许超出名义范围的样本值 +3 dB。 但是,此类值最终可能会受到限制或剪裁,具体取决于音频路径中的各种增益和后续处理。 因此,鼓励应用程序在名义范围内提供样本值。

offsetInFloats
Int32

在要写入的数据开始的 audioData 中以浮点数表示的偏移量。 不得为负值,或导致数据访问超出数组的边界。

sizeInFloats
Int32

偏移量后在 audioData 中写入的浮点数。 不得为负值,或导致数据访问超出数组的边界。

writeMode
WriteMode

其中一个#WRITE_BLOCKING#WRITE_NON_BLOCKING 它在静态模式下不起作用。 <br>With #WRITE_BLOCKING,写入将阻塞,直到所有数据都写入音频接收器。 <br>With #WRITE_NON_BLOCKING, 写入将在排队后立即返回尽可能多的音频数据进行播放,而不会阻止。

返回

已写入的浮点数或正数,或以下错误代码之一。 浮点数将是不超过 sizeInFloats 的通道计数的倍数。 <如果轨道未正确初始化</li li<>如果参数无法解析为有效的数据和索引</li li#ERROR_DEAD_OBJECT><>(如果 AudioTrack 不再有效并且需要重新创建),则为 ul><li。#ERROR_BAD_VALUE>>#ERROR_INVALID_OPERATION 如果成功传输某些数据,则不会返回死对象错误代码。 在这种情况下,在下次写入时返回错误()</li li#ERROR>><,以防其他错误</li></ul>

属性

注解

将音频数据写入音频接收器以供播放(流式处理模式),或复制音频数据以供以后播放(静态缓冲区模式)。 AudioTrack 构造函数中指定的格式应 AudioFormat#ENCODING_PCM_FLOAT 对应于数组中的数据。

在流式处理模式下,阻止行为取决于写入模式。 如果写入模式为 #WRITE_BLOCKING,则写入通常会阻止,直到所有数据都排队播放,并返回完全传输计数。 但是,如果写入模式是 #WRITE_NON_BLOCKING,或者跟踪在条目上停止或暂停,或者另一个线程通过调用停止或暂停来中断写入,或者在写入期间发生 I/O 错误,则写入可能会返回短传输计数。

在静态缓冲区模式下,将数据复制到从偏移量 0 开始的缓冲区,并忽略写入模式。 请注意,此函数返回后,可能会出现此数据的实际播放。

适用于 . 的 android.media.AudioTrack.write(float[], int, int, int)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于