For the lyrics part, while there are many ways to implement it, one way is to store phrases from your lyrics in an arraylist of strings and display each phrase at its specific time while the song is playing. Use Media Player getCurrentPosition() to get the current playback time and display lyrics from your arraylist at the time it should appear on the screen. Further develop your algorithms to make it more efficient but you get the idea..
For the music playing and recording part you should use Media Player and Media Recorder. There are other ways to play and record audio but they are more complicated. So,
Media Player example:
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
more details here Media Player
Media Recorder example:
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(PATH_NAME);
recorder.prepare();
recorder.start(); // Recording is now started
...
recorder.stop();
recorder.reset(); // You can reuse the object by going back to setAudioSource() step
recorder.release(); // Now the object cannot be reused
more details here: Media Recorder
Good luck!!