1227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksCopyright 2013 The Android Open Source Project
2227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
3227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksLicensed under the Apache License, Version 2.0 (the "License");
4227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksyou may not use this file except in compliance with the License.
5227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksYou may obtain a copy of the License at
6227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
7227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks     http://www.apache.org/licenses/LICENSE-2.0
8227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
9227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksUnless required by applicable law or agreed to in writing, software
10227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksdistributed under the License is distributed on an "AS IS" BASIS,
11227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksSee the License for the specific language governing permissions and
13227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendrickslimitations under the License.
14227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
15227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
16227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksSmart Camera / Auto Snapshot (formerly named SimpleCamera) ReadMe
17227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
18227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksCreated by: Benjamin W Hendricks
19227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
20227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksHow to build the application:
21227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksFrom root: make SmartCamera will build the apk for generic
22227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksOtherwise, to build the application for a specific device, lunch to that device
23227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksand then run mm while in the SimpleCamera directory.
24227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksThen take the given Install path (out/target/.../SmartCamera.apk)
25227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksand run adb install out/target/.../SmartCamera.apk. The application should
26227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksthen appear in the launcher of your device.
27227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksYou might also need to run adb sync after building to sync the
28227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendrickslibsmartcamera_jni library
29227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksSummarized:
30227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    make SmartCamera
31227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    adb remount
32227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    adb sync
33227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    adb install -r $ANDROID_PRODUCT_OUT/data/app/SmartCamera.apk
34227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
35227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksHow to run the application:
36227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksOn a Nexus 7, open up the application from the launcher, and the camera preview
37227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksshould appear. From there, you can go to the gallery with the gallery button or
38227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendrickspress start to start capturing images. You can also change the number of images
39227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksto be captured by changing the number on the spinner (between 1-10).
40227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
41227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksWhat does it do:
42227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksThe application tries to take good pictures for you automatically when in the
43227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksstart mode. On stop, the application will capture whatever images are in the
44227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksbottom preview and save them to the Gallery. It does this by looking at the
45227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksfollowing image features:
46227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    - Sharpness
47227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    - Brightness
48227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    - Motion of the device
49227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    - Colorfulness
50227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    - Contrast
51227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks    - Exposure (over/under)
52227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
53227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksBy comparing each of these features frame by frame, a score is calculated to
54227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksdetermine whether an image is better or worse than the previous few frames,
55227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricksand from that score I can determine the great images from the bad ones.
56227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks
57227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin HendricksWhat libraries does it use:
58227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks- Mobile Filter Framework (MFF)
59227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks- Camera2 API
60227b47625d7482b5b47ad0e4c70ce0a246236adeBenjamin Hendricks- Renderscript
61