AudioTrack.Write 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
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 属性许可证中所述的术语使用。