question: public void startPlayback ( ) { Log . d ( TAG , ">> startPlayback" ) ; if ( null == mRecordFile ) { Log . e ( TAG , "no file to playback!" ) ; return ; } mPlayer = new MediaPlayer ( ) ; try { mPlayer . setDataSource ( mRecordFile . getAbsolutePath ( ) ) ; Log . d ( TAG , "MediaPlayer.setDataSource(" + mRecordFile . getAbsolutePath ( ) + ")" ) ; mPlayer . setOnCompletionListener ( this ) ; mPlayer . setOnErrorListener ( this ) ; mPlayer . prepare ( ) ; Log . d ( TAG , "MediaPlayer.prepare()" ) ; mPlayer . start ( ) ; } catch ( IOException e ) { Log . e ( TAG , "Exception while trying to playback recording file: " + e ) ; setError ( ERROR_PLAYER_INTERNAL ) ; return ; } catch ( IllegalArgumentException e ) { Log . e ( TAG , "Exception while trying to playback recording file: " + e ) ; setError ( ERROR_PLAYER_INTERNAL ) ; return ; } catch ( SecurityException e ) { Log . e ( TAG , "Exception while trying to playback recording file: " + e ) ; setError ( ERROR_PLAYER_INTERNAL ) ; return ; } catch ( IllegalStateException e ) { Log . e ( TAG , "Exception while trying to playback recording file: " + e ) ; setError ( ERROR_PLAYER_INTERNAL ) ; return ; } setState ( STATE_PLAYBACK ) ; Log . d ( TAG , "<< startPlayback" ) ; }
target:  Play current recorded file, if failed notify error message to caller, if success update FM recorder state