Skip to content
kupsztal edited this page Nov 4, 2011 · 42 revisions

Welcome to the iTesa wiki!

Table of Contents

To Do and Status List

3rd Oct - 5th Nov

  1. Reliability
    • add code to close the app properly (aj/jc)
    • Phone not responding
    • Lock landscape/portrait mode
  2. Data analysis
  3. Statistical analysis (aj)
    • average data every N samples
    • measure sensor reading rate (FASTEST, NORMAL, GAME, etc.)
  4. Binary Data Storage (aj), see also: Data storage
    • Needs testing, see next
  5. Open array of DataItem of length N, fill up (hijack update UI thread temporarily). When buffer full, stop writing to it, output using filestream and close application (aj).
  6. Get much, much better with threads! (aj)
  7. Also, using java.io.Serializable we can write the dataitem B. learn this, and compare to straight DOS, then implement. (aj) We don't need this.
  8. Conceptual Designs (aj)
  9. understand android data formats
  10. SQLite Database, see also: Data storage
    • Branch: jakub_preferences
    • OK. So far I found the bug that was causing the app to crash (bloody comma in SQL statement)
    • data saved : (timestamp, Bx, By, Bz)
    • database profiling (jc)
    • data saved: (timestamp, mag.|B|) GPS: (timestamp, GPS coords) Magnetometer (timestamp, |B|)
  11. Store data in CSV/TXT file new
    • Add ability to export data to CSV/TXT <-- changed to save data in CSV
  12. App options (accuracy, delay rate etc) (jc)
    • Branch: jakub_preferences
    • implemented basic menu with preferences (UI update refresh rate). It doesn’t work as expected yet because of the way the timer is set.
    • change the way UI is updated (run the sensor reading as service/thread)
    • we need to remember that the app may need to be run as service
  13. Plotting functionality - basic (jc)
    • Branch: (none) - I pushed changes into master branch..
    • refresh chart in separate thread ?? (at the moment refreshed in the same thread as the text)
    • plot ALL the points (not just one per measurement)
    • plot coloured bitmap based on magnetometer data
    • add background picture
  14. Merge the branches (jc)
  15. Test the app, review the code (aj/jc)

23 Sep - 3rd Oct

  1. setup repo on github (done)
  2. write magnetometer test - check values (done)
  3. freq of the measurement (do we actually have any numbers ? not that we need them but would be nice to have)

Additional

  1. Get more tech details from STRaND (5th Nov)
    • data analysis, statistics?
    • SDK version ? interface to the external hardware ?
  2. compare data storage latency
  3. profile code!
  4. calculate angle of sun based on time and GPS coords.
  5. work out what are the things like sensorManager.MAGNETIC_FIELD_EARTH_MAX/MIN, RAW_DATA_X/Y/Z, and other * sensorManager features

iTesa

Requirements

(see checklist)

  1. should be able to run for at least 90 mins w/o crashing or freezing
  2. sensor measurements should be decoupled from the UI update
  3. sensor measurements should be decoupled from the plot update
  4. plot update should be decoupled from the UI update
  5. option for selecting frequency of measurement/UI/plot updates
  6. the code should be flexible enough to be able to choose between sqlite database and raw file for data storage

Architecture

(see checklist)

"There are two basic rules for writing efficient code:
Don't do work that you don't need to do.
Don't allocate memory if you can avoid it.

Scientific(-ish) stuff

Magnetometers

Books

Git

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project
.classpath
.project

Nexus One

Android

  • Designing for Performance
    • the System.arraycopy method is about 9x faster than a hand-coded loop on a Nexus One with the JIT.

Debugging

NDK

Tutorials

Eclipse integration

Accessing sensors in NDK

STRaND related

Other interesting stuff