package Ġcom . xin . nd k study . live . push er Ċ Ċ import Ġandroid . media . Audio Format Ċ import Ġandroid . media . Audio Record Ċ import Ġandroid . media . Media Recorder . Audio Source Ċ import Ġcom . xin . nd k study . live . parm . Audio Param Ċ import Ġcom . xin . nd k study . util . Live Push Utils Ċ import Ġcom . xin . nd k study . util . Thread Utils ĊĊ Ċ /** Ċ Ġ* Ċ Ġ* ĠĠ ĠâĸĪ âĸĪâĸĪâĸĪâĸĪ âĸĴ âĸĪ ĠĠĠ ĠâĸĪâĸĪ Ġ Ġâĸ Ħ âĸĪâĸĪâĸĪâĸĪ âĸĦ ĠĠ ĠâĸĪâĸĪ Ġâĸ Ħ âĸĪ âĸĢ ĠĠĠĠĠĠ ĠâĸĪ âĸĪâĸĪâĸĪâĸĪ âĸĪ âķĹ ĠâĸĪâĸĪ âķĹ ĠĠ ĠâĸĪâĸĪ âķĹ ĠâĸĪ âĸĪâĸĪâĸĪâĸĪ âĸĪ âķĹ Ċ Ġ* Ġâĸ ĵ âĸĪâĸĪ ĠĠ Ġâĸ Ĵ ĠâĸĪâĸĪ Ġ Ġâĸ ĵ âĸĪâĸĪ âĸĴ âĸĴ âĸĪâĸĪ âĸĢ Ġâĸ Ģ âĸĪ ĠĠ ĠâĸĪâĸĪ âĸĦ âĸĪ âĸĴ ĠĠĠĠĠĠĠ ĠâĸĪâĸĪ âķ Ķ âķĲâķĲ âĸĪâĸĪ âķĹ âĸĪâĸĪ âķĳ ĠĠ ĠâĸĪâĸĪ âķĳ âĸĪâĸĪ âķ Ķ âķĲâķĲâķĲâķĲ âķ Ŀ Ċ Ġ* Ġâĸ Ĵ âĸĪâĸĪâĸĪâĸĪ Ġâĸ ĳ âĸ ĵ âĸĪâĸĪ Ġ Ġâĸ Ĵ âĸĪâĸĪ âĸĳ âĸĴ âĸ ĵ âĸĪ ĠĠĠ Ġâĸ Ħ Ġâĸ ĵ âĸĪâĸĪ âĸĪ âĸĦ âĸĳ ĠĠĠĠĠĠĠ ĠâĸĪ âĸĪâĸĪâĸĪâĸĪ âĸĪ âķ Ķ âķ Ŀ âĸĪâĸĪ âķĳ ĠĠ ĠâĸĪâĸĪ âķĳ âĸĪâĸĪ âķĳ Ġ ĠâĸĪ âĸĪâĸĪ âķĹ Ċ Ġ* Ġâĸ ĳ âĸ ĵ âĸĪ âĸĴ Ġ Ġâĸ ĳ âĸ ĵ âĸ ĵ âĸĪ Ġ Ġâĸ ĳ âĸĪâĸĪ âĸĳ âĸĴ âĸ ĵ âĸ ĵ âĸĦ Ġâĸ Ħ âĸĪâĸĪ âĸĴ âĸ ĵ âĸĪâĸĪ ĠâĸĪ âĸĦ ĠĠĠĠĠĠĠ ĠâĸĪâĸĪ âķ Ķ âķĲâķĲ âĸĪâĸĪ âķĹ âĸĪâĸĪ âķĳ ĠĠ ĠâĸĪâĸĪ âķĳ âĸĪâĸĪ âķĳ ĠĠ ĠâĸĪâĸĪ âķĳ Ċ Ġ* Ġâĸ ĳ âĸĴ âĸĪ âĸĳ ĠĠ Ġâĸ Ĵ âĸĴ âĸĪâĸĪâĸĪâĸĪ âĸĪ âĸ ĵ Ġâĸ Ĵ Ġâĸ ĵ âĸĪâĸĪ âĸĪ âĸĢ Ġâĸ ĳ âĸĴ âĸĪâĸĪ âĸĴ ĠâĸĪ âĸĦ ĠĠĠĠĠĠ ĠâĸĪ âĸĪâĸĪâĸĪâĸĪ âĸĪ âķ Ķ âķ Ŀ âķ ļ âĸĪâĸĪâĸĪâĸĪ âĸĪâĸĪ âķ Ķ âķ Ŀ âķ ļ âĸĪâĸĪâĸĪâĸĪ âĸĪâĸĪ âķ Ķ âķ Ŀ Ċ Ġ* Ġ Ġâĸ Ĵ Ġâĸ ĳ ĠĠ Ġâĸ ĳ âĸĴ âĸ ĵ âĸĴ Ġâĸ Ĵ Ġâĸ Ĵ Ġâĸ ĳ Ġâĸ ĳ âĸĴ Ġâĸ Ĵ Ġ Ġâĸ ĳ âĸĴ Ġâĸ Ĵ âĸĴ Ġâĸ ĵ âĸĴ ĠĠĠĠĠĠ Ġâķ ļ âķĲâķĲâķĲâķĲ âķĲâķ Ŀ Ġ Ġâķ ļ âķĲâķĲâķĲâķĲ âķĲâķ Ŀ Ġ Ġâķ ļ âķĲâķĲâķĲâķĲ âķĲâķ Ŀ Ċ Ġ* Ġ Ġâĸ ĳ ĠĠĠĠ Ġâĸ ĳ âĸĳ âĸĴ âĸĳ Ġâĸ ĳ Ġâĸ ĳ ĠĠ Ġâĸ ĳ Ġ Ġâĸ Ĵ ĠĠ Ġâĸ ĳ Ġâĸ ĳ âĸĴ Ġâĸ Ĵ âĸĳ Ċ Ġ* Ġ Ġâĸ ĳ Ġâĸ ĳ ĠĠĠ Ġâĸ ĳ âĸĳâĸĳ Ġâĸ ĳ Ġâĸ ĳ Ġâĸ ĳ ĠĠĠĠĠĠĠ Ġâĸ ĳ Ġâĸ ĳ âĸĳ Ġâĸ ĳ Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġâĸ ĳ ĠĠĠĠ Ġâĸ ĳ Ġâĸ ĳ ĠĠĠĠĠ Ġâĸ ĳ Ġ Ġâĸ ĳ Ċ Ġ*@ author Ġ: ĠLe o Ċ Ġ*@ date Ġ: Ġ 2 0 2 0 / 1 2 / 2 Ġ 1 4 : 3 7 Ċ Ġ*@ since Ġ: Ċ Ġ*@ desc Ġ: Ċ Ġ*/ Ċ class ĠAudio Push er ( private Ġvar Ġaudio Param : ĠAudio Param ) Ġ: ĠPush er Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Live Push Utils Ġby Ġlazy Ġ{ ĠLive Push Utils . getInstance () Ġ} ĊĠĠĠ Ġprivate Ġvar Ġaudio Record : ĠAudio Record ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis Push ing Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġmin BufferSize Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchannel Config : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( audio Param . getChannel () Ġ== Ġ 1 ) ĠAudio Format . CHANNEL _ IN _ MON O Ġelse ĠAudio Format . CHANNEL _ IN _ STER EO ĊĠĠĠĠĠĠĠ Ġ// æľĢå°ı ç¼ĵ åĨ² åĮº å¤§å°ı ĊĠĠĠĠĠĠĠ Ġmin BufferSize Ġ= ĠAudio Record . getMin BufferSize ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Param . get Sample Rate In Hz (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Config , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Format . ENCODING _ PCM _ 1 6 BIT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġaudio Record Ġ= ĠAudio Record ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Source . MIC , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Param . get Sample Rate In Hz (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Config , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Format . ENCODING _ PCM _ 1 6 BIT , Ġmin BufferSize ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Push () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Push ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġm Live Push Utils . set Audio Options ( audio Param . get Sample Rate In Hz (), Ġaudio Param . getChannel ()) ĊĠĠĠĠĠĠĠ Ġ// åĲ¯åĬ¨ ä¸Ģä¸ª å½ķ éŁ³ åŃĲ çº¿ç¨ĭ ĊĠĠĠĠĠĠĠ ĠThread Utils . getInstance (). new Fixed ThreadPool (). execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¼Ģå§ĭ å½ķ éŁ³ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Record ?. start Recording () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( is Push ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢļè¿ĩ Audio Record ä¸į æĸŃ è¯»åıĸ éŁ³ é¢ĳ æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( min BufferSize ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Record ?. read ( buffer , Ġ 0 , Ġbuffer . size )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¼ł ç»Ļ Native ä»£çłģ ï¼Į è¿Ľè¡Į éŁ³ é¢ĳ ç¼ĸçłģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Live Push Utils . fire Audio ( buffer , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Push () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Push ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġaudio Record ?. stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrelease () Ġ{ ĊĠĠĠĠĠĠĠ Ġaudio Record ?. release () ĊĠĠĠ Ġ} Ċ Ċ }