Register
Submit a solution
The challenge is finished.

Challenge Overview

Important - This challenge is aimed at rooted devices. All submitters/reviewers will need a rooted Android device in order to participate in this challenge.  The process of rooting an Android device is risky and can disable it competely.

Faith Comes By Hearing would like to enhance their existing Cyber App V1.7 Android App to include a file sharing service which will be operational when an internet connection is unavailable.  The Cyber App is an Android Application which provides audio and text versions of the Christian Bible to end users in low bandwidth network environments and is optimized to be shared on a peer to peer basis.    A full version of the Bible.Is application can be found on the Android Play Store:

https://play.google.com/store/apps/details?id=com.faithcomesbyhearing.android.bibleis

In a previous challenge, we built out mobile hotspot capability which lets users of this app share the APK with other users by turning their device into a hotspot. Now, we want to take that concept further.

As part of this challenge, you need to do the following.

  1. When a member selects "Activate Hotspot", the application should determine whether the user has root access to the phone or not.  If they do, then we should activate the hotspot (previously completed functionality) and enable the proxy and IP forwarding capabilities discussed in this thread:  http://stackoverflow.com/questions/5353911/using-android-phone-as-wifi-web-server.
    Based on the above, we believe that using IP Table/ Squid proxy server is the best way to provide this capability. However, we’re open to suggestions - please use your creativity/ knowledge for any alternative solutions and post in the forums before you implement it out.

  2. If the user doesn't have root access then we should just start the hotspot as per the current application (without the proxy and IP forwarding).

  3. The application starts a web server which displays a publicly available with a link to download each of the locally available APK files currently found within the Cyber App (current functionality).

  4. When a target device accesses the mobile hotspot, it should automatically redirect to the web page with the download links on the source device -- this is the new capability we're hoping to achieve with the rooted devices.  

The existing source code for the application can be found here:  https://bitbucket.org/faithcomesbyhearing/tc-fcbh-cyber-app-android.

You'll need to sign up for a Bitbucket Id.  Once you have please provided your id in the forum, we'll grant you read access to the repository.  You should then fork the repository.

There is one additional requirement.  On HTC Android devices there is an intermediate step between the Activate Hotspot menu item and actually starting the Hotspot -- a battery reminder screen pops up which allows the user to cancel the hotspot.  This system screen causes some problems with the current application because the app thinks that the hotspot has been created when it hasn't if the user hits "cancel" rather than "ok" on the system popup.  If a user clicks the cancel button the app records the incorrect state with regard to connectivity status and starts the web server when there is no need.  The todos here are:

1.  Create a check in the application to validate that the Mifi/Hotspot functionality is actually running before starting the local web server. 
2.  Update the Sharing Menu Item to reflect the correct state if the hotspot hasn't actually been created.  Currently, it says "Deactivate Hotspot" when in fact the hotspot isn't running.


 



Final Submission Guidelines

  1.  Please build the functionality listed above into the existing code found in the follwing repository:  https://bitbucket.org/faithcomesbyhearing/tc-fcbh-cyber-app-android.  You should fork this repository once you've been granted access. 
  2. You can request access to the repository in the forums for this challenge.
  3. Submit your complete Android Studio project, a deployment guide containing configuration and verification information and a link to a demo video in your submission.zip file
  4. The winning submission will be submitting a pull request to this repository with their changes.

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30053481