Our company performs mobile network performance testing with Android devices. We connect the android device to a PC running software that pulls relevant data via the DIAG port (This interface already doesn't need to be implemented by you). For data speed testing, our customer requires that we use FTP transfers, however existing commercial FTP apps don't meet our requirements.
We need a simple FTP application that allows the user to start one or multiple FTP downloads of a single file from a server. During download, the app needs to show a progress bar and the data transfer rate. After transfer is complete, the app waits a configurable time and starts the download again without user intervention. For uploads the procedure is similar. The test will end only when the user hits the "stop" button.
1. The app must contain 4 main views: Server Setup, Download, Upload and Log. Use a bottom navigation widget to switch between them.
2. The "Server Setup" tab contains the following:
-User inputs: Server host (IP or host name), FTP port (default 21), username and password. Only keep in the phone's storage the last credentials that have been used
-A "Test connection" button, to check if the server can be accessed
3. Download Tab
- Text Input for the name of the file to download (E.g. /[login to view URL]). The user knows in advance this information, so a "browse" button is not needed
- Slider input for the number of of paralell transfers, from 1 to 10. This number means the number of paralell FTP downloads of the same file
- Text input for the wait time between successive FTP tasks. Default 5 seconds
- Start/Stop button to initiate/end the test
- Progress bar showing the progress of each of the data transfers
- Text view showing the total download data rate in Mbps
4. Upload Tab
- Text input with the path in which the file must be uploaded (E.g. /uploads/)
- Text input with the size of the file to upload, in MB. Defaults to 500 MB
- Slider input with the number of of paralell transfers (1 to 10)
- Text input for the wait time between FTP tasks
- Start/Stop button
- Progress bar for each transfer
- Text view showing the total upload data rate in Mbps
5. Log Tab
- Multiline text view showing the FTP logs. Something similar to the Message View from Filezilla
6. Other comments:
- After the user starts a FTP transfer task, it must run until the user hits the stop button. If a file download finishes, then the app will delete the local file, wait the specified time, and start the data transfer again.
- The user may only perform FTP DL or UL tasks (never simultaneous). While a test is running, the user can only browse between the respective Tab and the Log Tab.
- If the FTP connection to the server fails due to username/password error or a "file not found" error, the test must stop and an alert must be raised
- If the FTP connection to the server fails for any other reason, the app must alert the user and connection after waiting 5 seconds. If after 5 retries connection still cannot be established, then the task will be stopped and an alert must be raised
- If a FTP data transfer is interrupted for any reason (other than the user stopping it), the app must wait for the configured wait time and restart it automatically
- For the upload task, the app must automatically generate the file to be uploaded to the server and give it a random name
- The app's graphic design is not a big concern, but we appreciate if you use Google's Material Design or a similar framework if possible.
6. The deliverable is the application code as well as a ready to install APK installer. Code must be reasonably commented for further editing on our end if necessary.
7. The source code must be written in Kotlin. You may use external Java libraries if necessary.
8. This app is for internal use of our company and will not be published on any app store.
9 freelancers are bidding on average $282 for this job
A custom Android app can do wonders for your brand, whether you’re using it for employee productivity, as a social engagement mechanism, or as a way to facilitate things like loyalty or rewards programs.