Giter VIP home page Giter VIP logo

universite-gustave-eiffel / noisecapture Goto Github PK

View Code? Open in Web Editor NEW
91.0 29.0 45.0 78.73 MB

Android App dedicated to the measurement of environmental noise.

Home Page: http://noise-planet.org/fr/noisecapture.html

License: GNU General Public License v3.0

Java 65.00% HTML 10.49% CSS 2.99% Groovy 17.26% Python 0.54% Scheme 1.79% JavaScript 1.86% MATLAB 0.07%
measurements noise-maps collaborative-science android

noisecapture's People

Contributors

ebocher avatar eiei114 avatar gpetit avatar gwguillaume avatar lorebiga avatar nicolas-f avatar picaut avatar poussinou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

noisecapture's Issues

Ignore last 5 seconds button

Do we implement the following feature (Pierre suggestion)?

While measuring if somebody is disturbed by an event, give him the ability to pause the capture then on resume delete the last 5 records (5 seconds).

Calibration used level

Currently calibration value used is the mean leq.

Is it preferable to use Leq50 or Leq90 ?

Processing of wps upload task

Onomap service on receiving android Rest call save the POST data into as zip file.

This zip is stored in "processing" folder. A new thread is triggered in order to check and parse the content of the zip file.

The processing WPS fetch zip files stored in "processing" folder and check if the zip content correspond to expected files name.

The property file and geojson are parsed then used to feed the PostGIS database.

Once done, the zip file is moved to an archive folder.

Post-Processing of measures

All data stored in database are in the 3857 (Spherical Mercator projection) coordinate system. (measures, buildings etc)

The precision loss are negligible far from poles.
Post-Processing steps:

TODO

Measurement Pre-Capture step

When the user first tap on measure button.

Show measured values but do not store measurements. Record values only on the second tap on measure button.

Visual hint, show text "Press record button to start recording"

Reactive the "stop" button some seconds after the recording.

java.lang.NullPointerException: Attempt to get length of null array

Reported issue when going to Map Activity without any stored measures

java.lang.RuntimeException: Unable to start activity ComponentInfo{org.noise_planet.noisecapture/org.noise_planet.noisecapture.MapActivity}: android.view.InflateException: Binary XML file line #34: Error inflating class fragment
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.view.InflateException: Binary XML file line #34: Error inflating class fragment
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
    at org.noise_planet.noisecapture.MapActivity.onCreate(MapActivity.java:71)
    at android.app.Activity.performCreate(Activity.java:5990)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
    ... 10 more
Caused by: java.lang.NullPointerException: Attempt to get length of null array
    at maps.G.a.a(Unknown Source)
    at maps.V.N.a(Unknown Source)
    at maps.D.e.a(Unknown Source)
    at maps.D.p.a(Unknown Source)
    at maps.ad.ae.a(Unknown Source)
    at maps.ad.t.a(Unknown Source)
    at maps.ad.M.a(Unknown Source)
    at ul.onTransact(:com.google.android.gms.DynamiteModulesB:107)
    at android.os.Binder.transact(Binder.java:380)
    at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source)
    at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source)
    at com.google.android.gms.dynamic.zza.zza(Unknown Source)
    at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1230)
    at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1332)
    at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2288)
    at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
    at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
    at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:80)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
    ... 21 more

Remove cancel button

Remove cancel button but require the user to validate the storage "Save result ?"

User input after the end of measurements

Give the user the ability to add the following information to each measurement:

  • Description (not uploaded)
  • Predefined tags (uploaded)
  • Photo (not uploaded)
  • Pleasantness slide (Unpleasant->Pleasant) (uploaded)

Not uploaded information stay in local database.

About page

  • Short NoiseCapture description, link to github
  • Financial support
  • Contributors institutes
  • License
  • Third party libraries license

java.lang.IllegalStateException

java.lang.IllegalStateException: no included points
    at com.google.android.gms.common.internal.zzaa.zza(Unknown Source)
    at com.google.android.gms.maps.model.LatLngBounds$Builder.build(Unknown Source)
    at org.noise_planet.noisecapture.MapActivity.loadWebView(MapActivity.java:125)
    at org.noise_planet.noisecapture.MapActivity$MapDropDownChooseListener.onItemSelected(MapActivity.java:206)
    at android.widget.AdapterView.fireOnSelected(AdapterView.java:1165)
    at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:1154)
    at android.widget.AdapterView.access$300(AdapterView.java:59)
    at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:1121)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:158)
    at android.app.ActivityThread.main(ActivityThread.java:7224)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

Start page layout

Some changes on start page. Try to fit on all android phones screen.
Move version in screen bottom.

start

Help page

Create help page:

  • Describe NoiseCapture goals
  • Warning about the quality of measurement (min max range of microphone, sensibility, saturation)
  • Describe the expected measurement scenario. (Where and how to use NoiseCapture)
  • Describe acoustics indicators

Calibration on octave

Reduce frequencies of calibration to global, 125, 200, 315, 500, 800, 1.25k, 2k, 3.15k, 5k, 8k, 12.5k

Calibration activity

Implement the calibration activity

Method A:

  • User click on start calibration button
  • A visual timer count down from X seconds to 0 seconds
  • Measurement of Leq starts
  • A visual timer count down from X seconds to 0 seconds
  • User set the expected (externally measured) value using a SeekBar from 72 dB to 102 dB.
  • Android store the gain factor to apply

User is forced to choose theses values as Android device may not able to measure linearly outside -18 dB to +12 dB relative to 90 dB.
PCM amplitude levels SHOULD linearly track input SPL changes over at least a 30 dB range from -18 dB to +12 dB re 90 dB SPL at the microphone.

NoiseCapture crash

The last pre-release (0.1.2) crashes when the user tries to start a measure.
The NoiseCapture app is closed by Android without any message.

Frequency band display

On the display of the histogram (frequency bands), both during Measurement and Results, one should add a visible x-tick (on the x-axis) that correspond to the frequency label.

No measurement after stopping recording

When stopping a recording with the red square button, one can not realize a new recording when pressing the record button. We have to select "Measurement" in the Menu to proceed to a new recording

Gps only option

Add an option to ignore Network location provider and use GPS coordinates only. useful when measuring only in open outdoor.

Result page show kHz

Show in result page the same labels for frequency bands in frequency histogram.

Compare leq 1s and 125ms

There is some differences between 1s (recomposed from 1/3 octave) and 125 ms (leq from signal)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.