Challenge Overview
Project Overview
Video surveillance cameras show what is happening in a scene from a remote location. Cameras are connected to digital video recorders (DVR) to allow for the recording of the scene.
Cameras and DVRs have many features available such as pan / tilt / zoom (PTZ), capturing images, and motion detection.
The project will be a cutting edge mobile application camera viewing system. The main goal of the project will be to view live video in H.264/MJPEG format from multiple cameras and recording devices. User will be able to view video from mobile devices like:
- Smartphones
- Tablets
The purpose of this project is to develop an interface library for the graphical front end. The library will serve as layer of abstraction between the user interface and the underlying device logic for video.
Application will initially support one Interlogix brand recording device (LNVR) and needs to be designed in a way to allow for addition of different brand DVRs.
Competition Task Overview
For this contest, we need to implement integrate the backend and UI and make sure all the following requirements work properly:
- 3.17 - PTZ Controls
- 3.18 - Digital Zoom
- 3.18.2 - PTZ Iris Controls
- 3.19 - PTZ Presets Controls
- Fix the following bugs from existing code:
-
Video performance is poor. Crashes a lot on live.
-
Playback Seek goto does not work (does not show video)
-
Video Streaming dies after 5 minutes I was opening 8 cameras.
-
PinchZoom doesn’t work
-
Lots of app crashes seen when manipulating the tiles. Drag & Drop, full screen, double tap, etc…
-
NOTE: all these must be done for both phones and tablets! And some screens need to work in both portrait and landscape modes!
Deliverable
The output of this assembly will be:
- A component library (HAL) that interacts with the devices listed above
- A Test Fixture that interacts with the HAL to test all the functions defined in the interface (note that some interfaces might not be testable because device does not support the defined capabilities)
- A Ui project that contains the Ui code, this should be the only project you need to update in this challenge unless there are bugs that need to be fixed in the backend. Note this means if there are issues with backend related with the requirements, you must look into them too.
Please refer to the provided document for details, you should also follow the solution structure mentioned in the application spec (we have provided a base project with folder structure setup)
We've also provided the iOS code base so you can check that for reference.
Make sure you read the application spec carefully as it clearly defines the behavior of the screens, etc...
Themes
We provided two themes for this challenge: blue and green. We need the blue theme to be correctly implemented in this assembly, but we should build the app so it can be changed down the road. Which means we should code in the colors or use a pixel image for color and stretch it so we can swap out color without having to redo every screen. The logo might change so we can replace that using different images, but the individual button icons would be the same with just different color.
Error Handling
The app must handle errors gracefully, it MUST NOT crash in case of errors (such as cannot connect to device, network error, etc...).
We need to make sure the app also focus on failure cases... camera can't load, lose internet connectivity, etc. We should focus on all the failure type cases and handle them gracefully.
Localization
Even though the app currently supports only English, we should design it to support multi-language, this means that we load all UI strings from resource and not hard code any strings. Which will make adding the additional languages easier. Your submission must cover this properly. Note this means texts currently in the storyboard needs to be text based, instead of image based, so that we can localize them easily.
You should follow the Android localization standards / best practices to implement this requirements, you should account for standard ways with dealing with issues like: if text if it is longer in different languages.
You must use consistent / programmable naming standards for variables in localization, we don't want spaces in the variable name. For example: LBL_ASPECT_RATIO is good as a variable for text "Aspect Ratio" (i.e. no spaces, LBL is short for label).
Documentation
You must properly document the code you write in this challenge.
SVN
Winner maybe asked to merge the code back to SVN.
Testing
Testing must be done using real devices, a submission that uses emulators (include GenyMotion) will not be accepted.
24h Review
This is a 24h review challenge, reviewers please don't miss the deadline.
Technology Overview
- Java
- Eclipse with ADT
- Minimum target: Android 4 (ICS) / API 15
Documentation Provided
Please register to see documents in the contest forum.
Final Submission Guidelines
Submission Deliverables
A complete list of deliverables can be viewed in the TopCoder Assembly competition Tutorial at: http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials
Below is an overview of the deliverables:
- Android solution with the required projects (library and tests)
- A complete and detailed deployment documented explaining how to deploy the application including configuration information.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.