forked from funf-org/funf-org.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsneak.html
350 lines (271 loc) · 18.4 KB
/
sneak.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<meta charset="UTF-8">
<title>funf | Open Sensing Framework</title>
<meta name="description" content="An Open Source Sensing Framework.">
<meta name="author" content="FunF">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/typography.css" />
<link rel="stylesheet" href="css/960.css" />
<link rel="stylesheet" type="text/css" href="css/jquery.fancybox-1.3.4.css" media="screen" />
<link rel="stylesheet" href="css/navigation.css" />
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/themes/base/jquery-ui.css" />
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" media="handheld" href="css/handheld.css">
<!-- ALTERNATE STYLE SKINS - REMOVE COMMENTS FROM THE SKIN YOU WANT TO USE -->
<!-- <link rel="stylesheet" href="skins/blue.css" /> -->
<!-- <link rel="stylesheet" href="skins/red.css" /> -->
<!-- <link rel="stylesheet" href="skins/purple.css" /> -->
<!-- <link rel="stylesheet" href="skins/pink.css" /> -->
<!-- <link rel="stylesheet" href="skins/green.css" /> -->
<!-- <link rel="stylesheet" href="skins/gray.css" /> -->
<!-- <link rel="stylesheet" href="skins/teal.css" /> -->
<link rel="stylesheet" href="skins/lime.css" />
<!-- <link rel="stylesheet" href="skins/black.css" /> -->
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div id="top-bg"></div>
<div class="container_12" id="header" >
<header>
<!-- Logo Here -->
<a href="index.html">
<div id="logo" class="grid_4"></div><!-- end #logo .grid_4 -->
</a>
<!-- Main Navigation Here -->
<nav id="top_nav" class="grid_8">
<ul id='nav'>
<!-- <li class="first-nav"><a class="active" href='index.html'>Home</a></li> -->
<li><a href='about.html'>About</a></li>
<!-- <li><a href='sneak.html'>Sneak Peek</a></li> -->
<li><a href='journal.html'>Funf Journal</a></li>
<li><a href='inabox'>Funf In a Box</a></li>
<li><a href='developers.html'>Developers</a>
<li><a href='http://funf-blog.blogspot.com'>Blog</a></li>
<li><script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",ol=x.length,l=ol;while(x.charCodeAt(l/13)!" +
"=68){try{x+=x;l+=l;}catch(e){}}for(i=l-1;i>=0;i--){o+=x.charAt(i);}return o" +
".substr(0,ol);}f(\")73,\\\"-%/:0/q 2yoj~ggD8'X!^<e220\\\\t\\\\520\\\\710\\\\"+
"Z[$020\\\\400\\\\230\\\\Z520\\\\430\\\\400\\\\620\\\\/ })1(*#,bc300\\\\[YI" +
"R130\\\\Y310\\\\420\\\\530\\\\Z_WEY]Y300\\\\XEOD]DIA\\\"(f};o nruter};))++y" +
"(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;721=%y;i=+y)73==i(fi{)++i;l<i;0=i(" +
"rof;htgnel.x=l,\\\"\\\"=o,i rav{)y,x(f noitcnuf\")" ;
while(x=eval(x));
//-->
//]]>
</script>
</li>
</ul>
</nav> <!-- end #top-nav .grid_8 -->
</header>
<div class="clear"></div>
</div> <!-- end #container_12 #header -->
<div class="clear"></div>
<!-- Begin Main Body -->
<div class="container_12" id="body-wrap" role="main">
<div id="post-content-wrap" class="grid_12">
<div id="content" >
<!-- FULL WIDTH CONTENT ROW -->
<div class="clear"></div>
<h1>funf Documentation</h1>
<p> Following many requests to try out the platform, we are releasing a bare-bones version so that you could get a feel of funf before diving into the full source code. We will gradually be adding functionalty and tutorials.</p>
<p>The<strong> <a href="#funf_sneak_peek_app">funf Seak Peek Android App</a></strong>: A pre-compiled "lite" version of the funf phone-side data collection application.</p>
</div>
<!-- FULL WIDTH CONTENT ROW -->
<div class="clear"></div>
<!-- <hr> -->
<div class="grid-hr alpha " style="margin-bottom:20px;"></div>
<!-- <div class="clear"></div>
--> <div class="grid_12 alpha">
<a name="funf_sneak_peek_app"></a><h2>funf Sneak Peek App</h2>
<p> The funf sneak peek app is designed to give you a taste of how you will configure sensors and and a chance to look at the data that sensors will produce. It essentially puts you into the role of a study manager or self-tracker, allowing you to configure data collection parameters for a sample set of data probe and collect background sensing data as the phone is used. You can then export the data out of the phone and review them in sqlite format, or use our supplied python utility to convert them to easily accessible "comma separated value" text files, or CSV files. We also provide a sample MS Excel file that shows you how you could import data from the CSV file into an Excel spreadsheet and generate a simple graph to visualize them - we specifically show how the battery-level probe data could be easily visualized.</p>
<p><img src="images/sneakPeek2v2.png" /><br />
</p>
<p>The idea of this initial app release is to provide an "essentials-only" experience, without the need to set up any back-end servers for data upload or remote configuration. You can downolad the funf Sneak Peek App and accompanying files in the <a href="download.html#funf_app_download">download</a> section. </p>
<p><strong>IMPORTANT NOTE:</strong> All of the collected data is in <strong>your</strong> domain - <strong>your phone</strong>, and wherever you might choose to export <strong>your data</strong> to. You alone have access to it and decide what is done with it. <strong>We have no access to any of the data. </strong></p>
</div>
<!-- end .grid_6 -->
<!-- SECOND ROW -->
<div class="clear"></div>
<hr />
<div class="clear"></div>
<span class="grid_3 alpha"><!--<p><img src="images/funf_sneak_screenshots/main_menu_off.png" width="220"></p> -->
<p><img src="images/funf_sneak_screenshots/main_menu_on.png" width="220" ></p>
</span>
<div class="grid_3">
<!--<p><img src="images/funf_sneak_screenshots/main_menu_on.png" width="220" ></p> -->
<p><img src="images/funf_sneak_screenshots/sensors.png" width="220"></p>
</div><!-- end .grid_3 -->
<div class="grid_6 omega">
<h4>Collecting Data</h4>
<p>The main screen lets you know whether or not sensors are scheduled and collecting data, and enables you to turn the sensors on and off at the push of a button. Turning all sensors off will stop automatic scanning from happening. If you turn sensors on again they will resume with the same configuration they had before. From the “Main Menu” you can start configuring sensors, or export existing sensor data.</p>
</div><!-- end .grid_6 -->
<div class="grid_3"></div><!-- end .grid_3 -->
<div class="clear"></div>
<!-- SECOND ROW --> <hr />
<div class="clear"></div>
<div class="grid_6 alpha">
<h4>Configuring Sensors</h4>
<p>Tap “Configure Sensors” to see details about which sensors are currently enabled, and how often they are scanning. Tap any sensor to configure it. The sensors that are available in the sneak peek are: </p>
<ul>
<li><strong>Wifi</strong> - Takes a snapshot of the Wifi hotspots available</li>
<li><strong>Location</strong> - Uses cell and Wifi networks along with GPS to computer current location</li>
<li><strong>Accelerometer</strong> - </li>
<li><strong>Bluetooth</strong> - A snapshot of nearby bluetooth devices </li>
<li><strong>Screen</strong> - Records when the screen is turned on and off</li>
<li><strong>Battery</strong> - Records the current state of the battery</li>
<li><strong>Installed Apps</strong> - A snapshot of the apps that are installed </li>
<li><strong>Running Apps</strong> - A snapshot of the apps that are currently running </li>
</ul>
Some sensors passively detect all events and will not give you the option to configure their scanning frequency. After you change a sensor’s configuration, the sensor will be reset and run immediately (assuming Sensors are “ON”). The sensor is scheduled to run regularly with a period configured by the “Scan Interval” setting.<br>
<br>
You can manually run a sensor by tapping the “Scan Once Now” button on any one of the sensor configuration pages. This will start the sensor, record data, and give you a preview of the data that is being recorded. This gives you a chance to manual record data without having to enable automatic scanning in the background. </div><!-- end .grid_6 -->
<div class="grid_3">
<!--<p><img src="images/funf_sneak_screenshots/sensors.png" width="220"></p> -->
<p><img src="images/funf_sneak_screenshots/wifi.png" width="220" ></p>
</div><!-- end .grid_3 -->
<div class="grid_3 omega">
<!--<p><img src="images/funf_sneak_screenshots/wifi.png" width="220" ></p> -->
<p><img src="images/funf_sneak_screenshots/wifi_scan_once.png" width="220" ></p>
</div><!-- end .grid_3 -->
<!-- SECOND ROW -->
<div class="clear"></div>
<hr />
<div class="clear"></div>
<span class="grid_3 alpha"><p><img src="images/funf_sneak_screenshots/export.png" width="220"></p></span>
<div class="grid_3">
<p><img src="images/funf_sneak_screenshots/export_send.png" width="220" ></p>
</div><!-- end .grid_3 -->
<div class="grid_6 omega">
<h4>Exporting Data</h4>
<p>You can get the data collected by Funf from your Android device to your computer in a couple of ways. You can send it directly via email or bluetooth by tapping “Export Data” on the main menu and then “Send Now.” This will create a zip file of all existing sqlite database files to be sent as an attachment. Choose the method by which you want to send the zip file to get it to your computer. </p>
<p>You can also access the files directly on the SD card. The “.sql” files are located in the “funf” folder on the SD card.</p>
</div><!-- end .grid_6 -->
<div class="grid_3"></div><!-- end .grid_3 -->
<!-- SECOND ROW -->
<div class="clear"></div>
<hr />
<div class="clear"></div>
<div class="grid_9 alpha">
<h4>Deleting On-Phone Data </h4>
<p>If you no longer want the collected data stored on your Android device, open the options menu on the “Main Menu” and select “Delete Data”. Confirm by tapping “Delete” and all existing sensor data will be deleted from your device.</p>
<p> </p>
<h4>Converting Downloaded Data to Comma Separated Value (CSV) Files</h4>
<p>Raw data from the Funf system is in the form of many SQLite database files, which each contain data from different periods of time. The SQLite structure is useful for apps that might leverage the collected data, as opposed to passive log files. The reason there are many files is that funf "rotates" files periodically. One of the reasons for that is to help deal with data corruption (only a small part of the data is lost). To convert the data from time separated database files to CSV files for each sensor, you can use the funf_db2csv Python script which we provide for your convenience. You can find this on the funf website <strong>xxxhereXXX</strong>, as well as in any exported zip file which is sent from the Funf android application.</p>
<p>To run the Python script you will need to make sure you have Python installed on your computer. If you are on a Unix/Linux based OS such as Ubuntu or OS X you probably already have Python installed. You can test this by typing “<strong><em>python --version</em></strong>” on the command line. To install Python download and run the installer located at <a href="http://www.python.org/getit/">http://www.python.org/getit/</a>, or use your systems package manager. (e.g. for Debian/Ubuntu <strong>“<em>sudo apt-get install python</em></strong>”)</p>
<p> To use the “<strong><em>funf_db2csv.py</em></strong>” script, place the script in the directory where the database files are located. Then run the script with no arguments on the command line. If you need more control over which db files are converted, pass in one or more files that need to be converted as arguments to the script. To control where the output goes use the “<strong><em>--output</em></strong>” option to specify another directory to place the newly created CSV file. An example use of the script is:<br>
<strong><em>python funf_db2csv.py --output test_dir 6789_v1234_2011_04_28_5.db </em></strong></p>
<p>For detailed help, use the help option:<strong><em> python funf_db2csv.py --help</em></strong><em></em></p>
</div>
<!-- end .grid_6 -->
<div class="grid_3 omega">
<p><img src="images/funf_sneak_screenshots/optionsMenu.png" width="220" ></p>
<p> </p>
</div><!-- end .grid_3 -->
<!-- end .grid_6 -->
<div class="clear"></div>
<div class="grid-hr alpha " style="margin-bottom:20px;"></div>
<div class="clear"></div>
</div> <!-- end #content -->
</div><!-- end #post-content-wrap .grid_12 -->
</div> <!-- end #body-wrap .container_12 -->
<div class="clear"></div>
<footer>
<div class="clear"></div>
<div id="social-wrap" >
<div id="social-icons" class="container_12">
<ul class="grid_9 omega">
<!-- TWITTER -->
<li id="twitter">
<div class="fadeThis">
<span class="hover"></span>
<a href="http://www.twitter.com/openfunf">Twitter</a>
</div>
</li>
<!-- CONTACT -->
<li id="contact">
<div class="fadeThis">
<span class="hover"></span>
<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x){var i,o=\"\",l=x.length;for(i=l-1;i>=0;i--) {try{o+=x.c" +
"harAt(i);}catch(e){}}return o;}f(\")\\\"function f(x,y){var i,o=\\\"\\\\\\\""+
"\\\\,l=x.length;for(i=0;i<l;i++){if(i==89)y+=i;y%=127;o+=String.fromCharCod" +
"e(x.charCodeAt(i)^(y++));}return o;}f(\\\"\\\\=58)0;1\\\\\\\\024O\\\\\\\\02" +
"5\\\\\\\\021\\\\\\\\r\\\\\\\\021\\\\\\\\003\\\\\\\\013\\\\\\\\006AHW\\\\\\\\"+
"rM\\\\\\\\006\\\\\\\\035\\\\\\\\025\\\\\\\\027O/V\\\\\\\\030\\\\\\\\027\\\\" +
"\\\\036\\\\\\\\024\\\\\\\\r\\\\\\\\025A\\\\\\\\032\\\\\\\\010\\\\\\\\020fAo" +
"f`lg)e`~%ii{S21fz`ys*D;F9\\\\\\\\\\\"\\\\^qqT@AW\\\\\\\\030\\\\\\\\nG\\\\\\" +
"\\031\\\\\\\\n\\\\\\\\000\\\\\\\\021\\\\\\\\033\\\\\\\\027\\\"\\\\,89)\\\"(" +
"f};)lo,0(rtsbus.o nruter};)i(tArahc.x=+o{)--i;0=>i;1-l=i(rof}}{)e(hctac};l=" +
"+l;x=+x{yrt{)94=!)31/l(tAedoCrahc.x(elihw;lo=l,htgnel.x=lo,\\\"\\\"=o,i rav" +
"{)x(f noitcnuf\")" ;
while(x=eval(x));
//-->
//]]>
</script>
</div>
</li>
<li id="border-last">
<img src="images/border-last.png" alt="" width="1" height="50" />
</li>
</ul>
<!-- SHARE THIS SITE -->
<div id="share" class="grid_3">
<a id="various1" href="#inline1" title="Share this website with the world!" ><span>Share this site</span></a>
<div class="hidden">
<div id="inline1">
<span class='st_newsvine_large' ></span><span class='st_digg_large' ></span><span class='st_delicious_large' ></span><span class='st_blogger_large' ></span><span class='st_twitter_large' ></span><span class='st_facebook_large' ></span><span class='st_yahoo_large' ></span><span class='st_gbuzz_large' ></span><span class='st_email_large' ></span><span class='st_sharethis_large' ></span>
</div> <!-- end #inline1 -->
</div> <!-- end .hidden -->
</div> <!-- end #share .grid_3 -->
</div><!-- end .container_12 -->
</div> <!-- end #social-wrap -->
<div id="footer-widgets-wrap">
<div class="container_12">
<div id="copyright" class="grid_12 omega">
<p> </p>
</div>
</div><!-- end #copyright -->
</div> <!-- end #footer-widget-wrap -->
</footer>
<!-- Begin scripts -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js"></script>
<script src="http://twitter.com/javascripts/blogger.js" type="text/javascript"></script>
<script src="http://twitter.com/statuses/user_timeline/jamigibbs.json?callback=twitterCallback2&count=1"></script> <!-- enter your Twitter Name -->
<script src="js/slides.min.jquery.js"></script>
<script src="js/scripts.js"></script>
<script src="js/jquery.droppy.js"></script>
<script src="js/jquery.fancybox-1.3.4.js"></script>
<script src="js/mosaic.1.0.1.min.js"></script>
<script src="js/tabbed.js"></script>
<!-- ShareThis Scripts Go Here | http://sharethis.com -->
<script type="text/javascript">var switchTo5x=false;</script><script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">stLight.options({publisher:'5a8e2e91-0302-4373-b08e-9e870077dd3c'});</script>
<!--[if lt IE 7 ]>
<script src="js/dd_belatedpng.js"></script>
<script> DD_belatedPNG.fix('img, .png_bg');</script>
<![endif]-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-23198009-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<!-- End scripts -->
</body>
</html>