Some smaller improvements.

Use a buffered input stream.
Fix audio playback.

- Only seek if the user changed the seek bar.
- Only read the data in the recording thread and do the data handling in
the main thread. This was probably not a problem but it ensures that we
don't skip audio frames.