共用方式為


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#ERROR_BAD_VALUE>,如果參數無法解析為有效的數據和索引</li li#ERROR_DEAD_OBJECT<>>,則為 ul><li<>,如果 AudioTrack 不再有效且需要重新建立。>#ERROR_INVALID_OPERATION 如果成功傳輸某些數據,則不會傳回無效的物件錯誤碼。 在此情況下,錯誤會在下一個 write()</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#ERROR_BAD_VALUE>,如果參數無法解析為有效的數據和索引</li li#ERROR_DEAD_OBJECT<>>,則為 ul><li<>,如果 AudioTrack 不再有效且需要重新建立。>#ERROR_INVALID_OPERATION 如果成功傳輸某些數據,則不會傳回無效的物件錯誤碼。 在此情況下,錯誤會在下一個 write()</li li 傳#ERROR>回,以防其他 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#ERROR_BAD_VALUE>,如果參數無法解析為有效的數據和索引</li li#ERROR_DEAD_OBJECT<>>,則為 ul><li<>,如果 AudioTrack 不再有效且需要重新建立。>#ERROR_INVALID_OPERATION 如果成功傳輸某些數據,則不會傳回無效的物件錯誤碼。 在此情況下,錯誤會在下一個 write()</li li 傳#ERROR>回,以防其他 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

時間戳,以 nanoseconds 表示所提供 audioData 中第一個可譯碼的音訊畫面。

傳回

零或寫入的位元組正數,或下列其中一個錯誤碼。 <如果曲目未正確初始化</li li#ERROR_BAD_VALUE>,如果參數無法解析為有效的數據和索引</li li#ERROR_DEAD_OBJECT<>>,則為 ul><li<>,如果 AudioTrack 不再有效且需要重新建立。>#ERROR_INVALID_OPERATION 如果成功傳輸某些數據,則不會傳回無效的物件錯誤碼。 在此情況下,錯誤會在下一個 write()</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#ERROR_BAD_VALUE>,如果參數無法解析為有效的數據和索引</li li#ERROR_DEAD_OBJECT<>>,則為 ul><li<>,如果 AudioTrack 不再有效且需要重新建立。>#ERROR_INVALID_OPERATION 如果成功傳輸某些數據,則不會傳回無效的物件錯誤碼。 在此情況下,錯誤會在下一個 write()</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#ERROR_BAD_VALUE>,如果參數無法解析為有效的數據和索引</li li#ERROR_DEAD_OBJECT<>>,則為 ul><li<>,如果 AudioTrack 不再有效且需要重新建立。>#ERROR_INVALID_OPERATION 如果成功傳輸某些數據,則不會傳回無效的物件錯誤碼。 在此情況下,錯誤會在下一個 write()</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[]

保存要寫入之數據的陣列。 實作不會裁剪在名義範圍 [-1.0f, 1.0f] 內的範例值,前提是音訊管線中的所有收益都小於或等於 unity (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#ERROR_BAD_VALUE>,如果參數無法解析為有效的數據和索引</li li#ERROR_DEAD_OBJECT<>>,則為 ul><li<>,如果 AudioTrack 不再有效且需要重新建立。>#ERROR_INVALID_OPERATION 如果成功傳輸某些數據,則不會傳回無效的物件錯誤碼。 在此情況下,錯誤會在下一個 write()</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 屬性授權中所述的詞彙使用。

適用於