package Ġcom . react native voice Ċ Ċ import Ġandroid . media . Audio Format Ċ import Ġjava . io . File Ċ import Ġjava . io . Random Access File Ċ Ċ data Ġclass ĠWave Config ( ĊĠ Ġvar Ġsample Rate : ĠInt Ġ= Ġ 1 6 0 0 0 , ĊĠ Ġvar Ġchannels : ĠInt Ġ= ĠAudio Format . CHANNEL _ IN _ MON O , ĊĠ Ġvar Ġaudio Encoding : ĠInt Ġ= ĠAudio Format . ENCODING _ PCM _ 1 6 BIT , ĊĠ Ġvar Ġaudio Length InSeconds : ĠInt Ġ= Ġ 1 5 Ċ ) Ċ Ċ internal Ġfun Ġbit Per Sample ( audio Encoding : ĠInt ) Ġ= Ġwhen Ġ( audio Encoding ) Ġ{ ĊĠ ĠAudio Format . ENCODING _ PCM _ 8 BIT Ġ-> Ġ 8 ĊĠ ĠAudio Format . ENCODING _ PCM _ 1 6 BIT Ġ-> Ġ 1 6 ĊĠ Ġelse Ġ-> Ġ 1 6 Ċ } Ċ Ċ internal Ġclass ĠWave Header Writer ( private Ġval Ġfile : ĠFile , Ġprivate Ġval Ġwave Config : ĠWave Config ) Ġ{ ĊĊĠ Ġfun Ġwrite Header () Ġ{ ĊĠĠĠ Ġval ĠinputStream Ġ= Ġfile . inputStream () ĊĊĠĠĠ Ġval Ġtotal Audio Len Ġ= ĠinputStream . channel . size () Ġ- Ġ 4 4 ĊĠĠĠ Ġval Ġtotal Data Len Ġ= Ġtotal Audio Len Ġ+ Ġ 3 6 ĊĠĠĠ Ġval Ġchannels Ġ= Ġif Ġ( wave Config . channels Ġ== ĠAudio Format . CHANNEL _ IN _ MON O ) ĊĠĠĠĠĠĠ 1 ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠ 2 ĊĊĠĠĠ Ġval Ġsample Rate Ġ= Ġwave Config . sample Rate . to Long () ĊĠĠĠ Ġval Ġbyte Rate Ġ= ĊĠĠĠĠĠ Ġ( bit Per Sample ( wave Config . audio Encoding ) Ġ* Ġwave Config . sample Rate Ġ* Ġchannels Ġ/ Ġ 8 ). to Long () ĊĠĠĠ Ġval Ġheader Ġ= Ġget W av File Header ByteArray ( ĊĠĠĠĠĠ Ġtotal Audio Len , ĊĠĠĠĠĠ Ġtotal Data Len , ĊĠĠĠĠĠ Ġsample Rate , ĊĠĠĠĠĠ Ġchannels , ĊĠĠĠĠĠ Ġbyte Rate , ĊĠĠĠĠĠ Ġbit Per Sample ( wave Config . audio Encoding ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġrandom Access File Ġ= ĠRandom Access File ( file , Ġ" rw ") ĊĠĠĠ Ġrandom Access File . seek ( 0 ) ĊĠĠĠ Ġrandom Access File . write ( header ) ĊĠĠĠ Ġrandom Access File . close () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget W av File Header ByteArray ( ĊĠĠĠ Ġtotal Audio Len : ĠLong , Ġtotal Data Len : ĠLong , Ġlong Sample Rate : ĠLong , ĊĠĠĠ Ġchannels : ĠInt , Ġbyte Rate : ĠLong , Ġbits Per Sample : ĠInt ĊĠ Ġ): ĠByteArray Ġ{ ĊĠĠĠ Ġval Ġheader Ġ= ĠByteArray ( 4 4 ) ĊĠĠĠ Ġheader [ 0 ] Ġ= Ġ' R '. to Byte () ĊĠĠĠ Ġheader [ 1 ] Ġ= Ġ' I '. to Byte () ĊĠĠĠ Ġheader [ 2 ] Ġ= Ġ' F '. to Byte () ĊĠĠĠ Ġheader [ 3 ] Ġ= Ġ' F '. to Byte () ĊĠĠĠ Ġheader [ 4 ] Ġ= Ġ( total Data Len Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 5 ] Ġ= Ġ( total Data Len Ġshr Ġ 8 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 6 ] Ġ= Ġ( total Data Len Ġshr Ġ 1 6 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 7 ] Ġ= Ġ( total Data Len Ġshr Ġ 2 4 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 8 ] Ġ= Ġ' W '. to Byte () ĊĠĠĠ Ġheader [ 9 ] Ġ= Ġ' A '. to Byte () ĊĠĠĠ Ġheader [ 1 0 ] Ġ= Ġ' V '. to Byte () ĊĠĠĠ Ġheader [ 1 1 ] Ġ= Ġ' E '. to Byte () ĊĠĠĠ Ġheader [ 1 2 ] Ġ= Ġ' f '. to Byte () ĊĠĠĠ Ġheader [ 1 3 ] Ġ= Ġ' m '. to Byte () ĊĠĠĠ Ġheader [ 1 4 ] Ġ= Ġ' t '. to Byte () ĊĠĠĠ Ġheader [ 1 5 ] Ġ= Ġ' Ġ'. to Byte () ĊĠĠĠ Ġheader [ 1 6 ] Ġ= Ġ 1 6 ĊĠĠĠ Ġheader [ 1 7 ] Ġ= Ġ 0 ĊĠĠĠ Ġheader [ 1 8 ] Ġ= Ġ 0 ĊĠĠĠ Ġheader [ 1 9 ] Ġ= Ġ 0 ĊĠĠĠ Ġheader [ 2 0 ] Ġ= Ġ 1 ĊĠĠĠ Ġheader [ 2 1 ] Ġ= Ġ 0 ĊĠĠĠ Ġheader [ 2 2 ] Ġ= Ġchannels . to Byte () ĊĠĠĠ Ġheader [ 2 3 ] Ġ= Ġ 0 ĊĠĠĠ Ġheader [ 2 4 ] Ġ= Ġ( long Sample Rate Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 2 5 ] Ġ= Ġ( long Sample Rate Ġshr Ġ 8 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 2 6 ] Ġ= Ġ( long Sample Rate Ġshr Ġ 1 6 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 2 7 ] Ġ= Ġ( long Sample Rate Ġshr Ġ 2 4 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 2 8 ] Ġ= Ġ( byte Rate Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 2 9 ] Ġ= Ġ( byte Rate Ġshr Ġ 8 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 3 0 ] Ġ= Ġ( byte Rate Ġshr Ġ 1 6 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 3 1 ] Ġ= Ġ( byte Rate Ġshr Ġ 2 4 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 3 2 ] Ġ= Ġ( channels Ġ* Ġ( bits Per Sample Ġ/ Ġ 8 )). to Byte () ĊĠĠĠ Ġheader [ 3 3 ] Ġ= Ġ 0 ĊĠĠĠ Ġheader [ 3 4 ] Ġ= Ġbits Per Sample . to Byte () ĊĠĠĠ Ġheader [ 3 5 ] Ġ= Ġ 0 ĊĠĠĠ Ġheader [ 3 6 ] Ġ= Ġ' d '. to Byte () ĊĠĠĠ Ġheader [ 3 7 ] Ġ= Ġ' a '. to Byte () ĊĠĠĠ Ġheader [ 3 8 ] Ġ= Ġ' t '. to Byte () ĊĠĠĠ Ġheader [ 3 9 ] Ġ= Ġ' a '. to Byte () ĊĠĠĠ Ġheader [ 4 0 ] Ġ= Ġ( total Audio Len Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 4 1 ] Ġ= Ġ( total Audio Len Ġshr Ġ 8 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 4 2 ] Ġ= Ġ( total Audio Len Ġshr Ġ 1 6 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġheader [ 4 3 ] Ġ= Ġ( total Audio Len Ġshr Ġ 2 4 Ġand Ġ 0 xff ). to Byte () ĊĠĠĠ Ġreturn Ġheader ĊĠ Ġ} Ċ } Ċ