我正在使用AudioRecord.read(byte[], int, int)
來記錄16位PCM數據。使用這種方法,我可以在我的設備上獲得小端數據,但我不知道它是否適用於其他設備。雖然我看到API參考,但我無法弄清楚。Endian在不同設備上的行爲有所不同
Endian依賴於本機順序嗎?
我正在使用AudioRecord.read(byte[], int, int)
來記錄16位PCM數據。使用這種方法,我可以在我的設備上獲得小端數據,但我不知道它是否適用於其他設備。雖然我看到API參考,但我無法弄清楚。Endian在不同設備上的行爲有所不同
Endian依賴於本機順序嗎?
您不用擔心,Android會爲您妥善保管。在Java中
數據總是表示爲大端
遺憾的是它並不像以前(3歲)的回答顯示的那麼簡單。
如果您使用16bit PCM,Android會將其編碼爲本機端編碼。見AudioFormat。測試表明,在Nexus 5x上,這是一款小米MI3s報告的LE。
要獲得設備的永久性,可以使用ByteOrder.nativeOrder()
謝謝。我知道,但我必須將數據轉換爲簡短的數據,並且必須將數據寫入本機進程。所以我必須關心它。 – kngtrr 2013-02-13 17:28:05
看到java :),但是是的,這將是所有的時間大endian – 2013-02-13 17:33:29
謝謝,但「所有的時間」是錯誤的。再次檢查我的問題。 – kngtrr 2013-02-13 23:37:31