I would like to have an Android Jellybean app that can record the camera preview to a file, and can playback the captured video file as if it were coming from the live camera - still calling the onPreviewFrame() callback. Anything within the onPreviewFrame() callback should not care if it is coming from a live camera or from a video file. It should seem identical. This is to simulate a camera feed from a previous session for testing/code development.
The UI should be designed for a tablet, and show the camera preview in the correct aspect ratio regardless of camera preview aspect or screen aspect.
There should be button to toggle between live view/playback. The the live view is enabled, we see the real-time preview from the camera.
When in Live view, there should be a record button that will allow me to start&stop recording. When the record button is pressed, show the filename, and the running frame counter near the record button. The filename of the recording should be the timestamp when recording began formatted as "23Oct2012_145023.mp4" - which corresponds to Oct, 23rd 2012 at 2:50:23pm. Zero pad the day/hour/min/sec if it is less than 2 digits. Provide and uncompressed option and compressed video recording option in the settings menu.
When the playback is enabled, I should get a list of recorded videos. If I tap on the list item, it should begin to play as if it were the live capture session. When it gets to the end of the file it should repeat, and there a onRepeat() callback should be triggered. That callback at the moment should just play a beep/ding sound when it happens.
The playback controls:
- play/pause toggle.
- a 1 frame step forward, step backward
- fast forward/fast backward that skips 5 seconds on every tap.
- stop button that brings back up the list menu.
When the list view is up, the toggle button should still be visible. On each list item, there should two additional buttons:
- pencil icon to rename the capture file - this should bring up a keyboard to enter a new filename.
- trash icon to delete the capture. The delete button should popup asking to confirm deletion.
If you do well on this project, we will likely pay for additional work to expand the functionality of this app.