package Ġcom . cap stone . kom unit as . engines Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . media . Audio Attributes Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . media . Media Recorder Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Image Button Ċ import Ġcom . cap stone . kom unit as . R Ċ import Ġjava . io . File Ċ Ċ class ĠAudio Recording Engine ( private Ġval Ġcontext : ĠContext ){ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrecorder : Media Recorder ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfile Output : String ĊĊĠĠĠĠ Ġfun Ġstart Recording (){ ĊĠĠĠĠĠĠĠ Ġrecorder Ġ= ĠMedia Recorder () ĊĠĠĠĠĠĠĠ Ġfile Output Ġ= Ġcontext . files Dir . absolute Path +"/ recording . 3 gp " ĊĠĠĠĠĠĠĠ Ġrecorder . set Audio Source ( Media Recorder . Audio Source . MIC ) ĊĠĠĠĠĠĠĠ Ġrecorder . setOutput Format ( Media Recorder . Output Format . TH REE _ G PP ) ĊĠĠĠĠĠĠĠ Ġrecorder . set Audio Encoder ( Media Recorder . Audio Encoder . AM R _ NB ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorder . setOutput File ( file Output ) ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG _ AUDIO , Ġ" start Recording : ĠOutput Failed Ġ$ e " Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorder . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecorder . start () ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG _ AUDIO , Ġ" start Recording : ĠFailed Ġto Ġstart ! Ġ$ e " Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠĠ Ġfun Ġstop Recording (){ ĊĠĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( recorder != null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorder . stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorder . reset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecorder . release () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload File () ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG _ AUDIO , Ġ" start Recording : ĠFailed Ġto Ġstop ! Ġ$ e " Ġ) ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupload File (): File { ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( file Output ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreplay Audio ( audio Url : ĠString , Ġreplay Chat : ĠImage Button ){ ĊĠĠĠĠĠĠĠ Ġval Ġmedia Player Ġ= ĠMedia Player (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Audio Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Attributes . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ContentType ( Audio Attributes . CONTENT _ TYPE _ M US IC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Usage ( Audio Attributes . USAGE _ MEDIA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DataSource ( audio Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Completion Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplay Chat . setImage Resource ( R . drawable . ic _ play _ so fter blue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġplay Audio ( audio Url : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġmedia Player Ġ= ĠMedia Player (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Audio Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Attributes . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ContentType ( Audio Attributes . CONTENT _ TYPE _ M US IC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Usage ( Audio Attributes . USAGE _ MEDIA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DataSource ( audio Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG _ AUDIO =" Audio Record " ĊĠĠĠ Ġ} Ċ }