Complete part of an iPhone app that records the users voice and potentially (if the user selects) saves the MP3 as a permanent file that the app can play back. A list of files will need to be updated with the newly-created sound file. Also, need to upload to a web server if the user requests--this will require a user name and password. The upload will happen via a web service on a Microsoft-based web server (I will give details and a testing platform to the bid winner).
## Deliverables
This programming project will be to complete part of an existing iPhone app. I will send a zipped copy of the XCode project to the auction winner. The app compiles under SDK 3.1.2.
This app should work on iPhones and iTouches.
This part of the program records a users voice. It is currently working, but the playback volume is very hard to hear and I suspect that is because the record volume is too low. A screen shot is attached.
![][1]![][2]Problem one will be to fix the record/playback volume issue. (This actually works fine in the simulator but not on the iPhone.)
Note that the screen shot has an audio waveform. Currently this is a dummy image. There needs to be a waveform readout while recording, or at the very least a level meter as seen in the SpeakHere sample project ([login to view URL])
Once the recording has been made, it can be re-played. Users can also (by pressing a button) save to a local sound file with the name that the user has entered. A list (which can be seen in the project once the bid is won and the code sent) must be updated so that the main part of the app will know that the sound file exists and can play it.
Users can also upload the sound file to a Microsoft-based web server. (This is in response to a button.) The web server has a web service that the iPhone app will communicate with. First, the user must enter a user name and password. I would prefer a dialog box that appears on top of the view. The web service will check the validity of the Name/PW pair. If an error is detected, the message should appear and the process aborted. If the Name/PW pair is OK, the app will send the entered name, and will upload the MP3 in 2K chunks to the web server through the web service. An upload progress bar must be displayed. All specs for the web service will be provided, and a testing web service will be provided for development.
**Project Addition**
The main screen has a pickerView that is populated within the code. This should be changed. It must be populated from an XML file. The XML file can be updated from the recording module.
The recorder module must update the XML file with the recording information (if the user specifies to save the file) The records must be sorted alphabetically according to the sound name.
XML fields:
Sound Name: string
Date Recorded: string
File ID: integer (1 for stock files, 2 for locally recorded files, and value from server for downloaded files)
Type: integer (this will be 1 for all stock files, and 2 for locally recorded files)
After a file has been recorded locally, the pickerView on the main screen must be updated so that the new file is in the list.