├── HumanSignal
├── lint.xml
├── libs
│ ├── gdx.jar
│ ├── GraphView-3.0.jar
│ └── achartengine-1.0.0.jar
├── bin
│ ├── classes.dex
│ ├── HumanSignal.apk
│ ├── resources.ap_
│ ├── res
│ │ ├── drawable
│ │ │ ├── greenbar.png
│ │ │ └── redbar.png
│ │ ├── drawable-hdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-ldpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ │ └── ic_launcher.png
│ │ └── drawable-xhdpi
│ │ │ └── ic_launcher.png
│ ├── classes
│ │ └── com
│ │ │ └── taweechai
│ │ │ └── humansignal
│ │ │ ├── R.class
│ │ │ ├── R$id.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$string.class
│ │ │ ├── BuildConfig.class
│ │ │ ├── FFTAnalysisActivity.class
│ │ │ ├── HumanSignalActivity.class
│ │ │ ├── realtimegraph
│ │ │ ├── Point.class
│ │ │ ├── MockData.class
│ │ │ ├── LineGraph.class
│ │ │ └── HearthrateLineGraph.class
│ │ │ ├── HumanSignalActivity$1.class
│ │ │ ├── HumanSignalActivity$2.class
│ │ │ ├── HumanSignalActivity$3.class
│ │ │ └── HumanSignalActivity$4.class
│ ├── dexedLibs
│ │ ├── gdx-ce5c419074c92dbb9e81d2ba4022eabc.jar
│ │ ├── GraphView-3.0-6c18c9303136e9bc52047b34e67b1b28.jar
│ │ └── achartengine-1.0.0-78e6fa0e23fc31c2d03f1d1e851958fd.jar
│ └── AndroidManifest.xml
├── res
│ ├── drawable
│ │ ├── redbar.png
│ │ └── greenbar.png
│ ├── drawable-hdpi
│ │ └── ic_launcher.png
│ ├── drawable-ldpi
│ │ └── ic_launcher.png
│ ├── drawable-mdpi
│ │ └── ic_launcher.png
│ ├── drawable-xhdpi
│ │ └── ic_launcher.png
│ ├── values
│ │ └── strings.xml
│ └── layout
│ │ ├── fftanalysis.xml
│ │ └── main.xml
├── .settings
│ └── org.eclipse.jdt.core.prefs
├── gen
│ └── com
│ │ └── taweechai
│ │ └── humansignal
│ │ ├── BuildConfig.java
│ │ └── R.java
├── .classpath
├── src
│ └── com
│ │ └── taweechai
│ │ └── humansignal
│ │ ├── realtimegraph
│ │ ├── Point.java
│ │ ├── MockData.java
│ │ ├── HearthrateLineGraph.java
│ │ └── LineGraph.java
│ │ ├── FFTAnalysisActivity.java
│ │ └── HumanSignalActivity.java
├── project.properties
├── proguard-project.txt
├── AndroidManifest.xml
└── .project
└── README.md
/HumanSignal/lint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/HumanSignal/libs/gdx.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/libs/gdx.jar
--------------------------------------------------------------------------------
/HumanSignal/bin/classes.dex:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes.dex
--------------------------------------------------------------------------------
/HumanSignal/bin/HumanSignal.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/HumanSignal.apk
--------------------------------------------------------------------------------
/HumanSignal/bin/resources.ap_:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/resources.ap_
--------------------------------------------------------------------------------
/HumanSignal/libs/GraphView-3.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/libs/GraphView-3.0.jar
--------------------------------------------------------------------------------
/HumanSignal/res/drawable/redbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/res/drawable/redbar.png
--------------------------------------------------------------------------------
/HumanSignal/res/drawable/greenbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/res/drawable/greenbar.png
--------------------------------------------------------------------------------
/HumanSignal/bin/res/drawable/greenbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/res/drawable/greenbar.png
--------------------------------------------------------------------------------
/HumanSignal/bin/res/drawable/redbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/res/drawable/redbar.png
--------------------------------------------------------------------------------
/HumanSignal/libs/achartengine-1.0.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/libs/achartengine-1.0.0.jar
--------------------------------------------------------------------------------
/HumanSignal/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/HumanSignal/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/HumanSignal/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/HumanSignal/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/HumanSignal/bin/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/HumanSignal/bin/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/HumanSignal/bin/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/HumanSignal/bin/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/R.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/R$id.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/R$attr.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/R$drawable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/R$drawable.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/R$layout.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/R$layout.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/R$string.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/R$string.class
--------------------------------------------------------------------------------
/HumanSignal/bin/dexedLibs/gdx-ce5c419074c92dbb9e81d2ba4022eabc.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/dexedLibs/gdx-ce5c419074c92dbb9e81d2ba4022eabc.jar
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/BuildConfig.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/BuildConfig.class
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | HumanSignal
2 | ===========
3 |
4 | Display and Analyse ECG signal on Android Phone and Tablet.
5 |
6 | Example video for this project : https://www.youtube.com/watch?v=tMpALnC_WTA
7 |
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/FFTAnalysisActivity.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/FFTAnalysisActivity.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/realtimegraph/Point.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/realtimegraph/Point.class
--------------------------------------------------------------------------------
/HumanSignal/bin/dexedLibs/GraphView-3.0-6c18c9303136e9bc52047b34e67b1b28.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/dexedLibs/GraphView-3.0-6c18c9303136e9bc52047b34e67b1b28.jar
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity$1.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity$2.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity$3.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity$4.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/HumanSignalActivity$4.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/realtimegraph/MockData.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/realtimegraph/MockData.class
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/realtimegraph/LineGraph.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/realtimegraph/LineGraph.class
--------------------------------------------------------------------------------
/HumanSignal/bin/dexedLibs/achartengine-1.0.0-78e6fa0e23fc31c2d03f1d1e851958fd.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/dexedLibs/achartengine-1.0.0-78e6fa0e23fc31c2d03f1d1e851958fd.jar
--------------------------------------------------------------------------------
/HumanSignal/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
3 | org.eclipse.jdt.core.compiler.compliance=1.5
4 | org.eclipse.jdt.core.compiler.source=1.5
5 |
--------------------------------------------------------------------------------
/HumanSignal/bin/classes/com/taweechai/humansignal/realtimegraph/HearthrateLineGraph.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/netfirms/HumanSignal/HEAD/HumanSignal/bin/classes/com/taweechai/humansignal/realtimegraph/HearthrateLineGraph.class
--------------------------------------------------------------------------------
/HumanSignal/gen/com/taweechai/humansignal/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /** Automatically generated file. DO NOT MODIFY */
2 | package com.taweechai.humansignal;
3 |
4 | public final class BuildConfig {
5 | public final static boolean DEBUG = true;
6 | }
--------------------------------------------------------------------------------
/HumanSignal/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/HumanSignal/src/com/taweechai/humansignal/realtimegraph/Point.java:
--------------------------------------------------------------------------------
1 | package com.taweechai.humansignal.realtimegraph;
2 |
3 | public class Point {
4 |
5 | private int x;
6 | private float y;
7 |
8 | public Point( int x, float audioBuf)
9 | {
10 | this.x = x;
11 | this.y = audioBuf;
12 | }
13 |
14 | public int getX() {
15 | return x;
16 | }
17 |
18 | public float getY() {
19 | return y;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/HumanSignal/src/com/taweechai/humansignal/realtimegraph/MockData.java:
--------------------------------------------------------------------------------
1 | package com.taweechai.humansignal.realtimegraph;
2 |
3 | import java.util.Random;
4 |
5 | public class MockData {
6 |
7 | // x is the day number, 0, 1, 2, 3
8 | public static Point getDataFromReceiver(int x)
9 | {
10 | return new Point(x, generateRandomData());
11 | }
12 |
13 | private static int generateRandomData()
14 | {
15 | Random random = new Random();
16 | return random.nextInt(40);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/HumanSignal/project.properties:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by Android Tools.
2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3 | #
4 | # This file must be checked in Version Control Systems.
5 | #
6 | # To customize properties used by the Ant build system edit
7 | # "ant.properties", and override values to adapt the script to your
8 | # project structure.
9 | #
10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
11 | #proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt
12 |
13 | # Project target.
14 | target=Google Inc.:Google APIs:17
15 |
--------------------------------------------------------------------------------
/HumanSignal/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Hello World, HumanSignalActivity!
5 | HumanSignal
6 | Start measure
7 | Stop measure
8 | "Heart Rate: "
9 | bpm
10 | Signal Range Form
11 | Signal Range To
12 | Analyze
13 | Fast Fourier Transforn
14 | From:
15 | To:
16 |
17 |
--------------------------------------------------------------------------------
/HumanSignal/proguard-project.txt:
--------------------------------------------------------------------------------
1 | # To enable ProGuard in your project, edit project.properties
2 | # to define the proguard.config property as described in that file.
3 | #
4 | # Add project specific ProGuard rules here.
5 | # By default, the flags in this file are appended to flags specified
6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt
7 | # You can edit the include path and order by changing the ProGuard
8 | # include property in project.properties.
9 | #
10 | # For more details, see
11 | # http://developer.android.com/guide/developing/tools/proguard.html
12 |
13 | # Add any project specific keep options here:
14 |
15 | # If your project uses WebView with JS, uncomment the following
16 | # and specify the fully qualified class name to the JavaScript interface
17 | # class:
18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
19 | # public *;
20 | #}
21 |
--------------------------------------------------------------------------------
/HumanSignal/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
12 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/HumanSignal/bin/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
12 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/HumanSignal/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | HumanSignal
4 |
5 |
6 |
7 |
8 |
9 | com.android.ide.eclipse.adt.ResourceManagerBuilder
10 |
11 |
12 |
13 |
14 | com.android.ide.eclipse.adt.PreCompilerBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.jdt.core.javabuilder
20 |
21 |
22 |
23 |
24 | com.android.ide.eclipse.adt.ApkBuilder
25 |
26 |
27 |
28 |
29 |
30 | com.android.ide.eclipse.adt.AndroidNature
31 | org.eclipse.jdt.core.javanature
32 |
33 |
34 |
--------------------------------------------------------------------------------
/HumanSignal/src/com/taweechai/humansignal/realtimegraph/HearthrateLineGraph.java:
--------------------------------------------------------------------------------
1 | package com.taweechai.humansignal.realtimegraph;
2 |
3 | import org.achartengine.ChartFactory;
4 | import org.achartengine.GraphicalView;
5 | import org.achartengine.chart.PointStyle;
6 | import org.achartengine.model.TimeSeries;
7 | import org.achartengine.model.XYMultipleSeriesDataset;
8 | import org.achartengine.renderer.XYMultipleSeriesRenderer;
9 | import org.achartengine.renderer.XYSeriesRenderer;
10 |
11 | import android.content.Context;
12 | import android.graphics.Color;
13 |
14 | public class HearthrateLineGraph {
15 |
16 | private GraphicalView view;
17 |
18 | private TimeSeries dataset2 = new TimeSeries("Realtime ECG Signal Plotting");
19 | private XYMultipleSeriesDataset mDataset2 = new XYMultipleSeriesDataset();
20 |
21 | private XYSeriesRenderer renderer2 = new XYSeriesRenderer(); // This will be used to customize line 1
22 | private XYMultipleSeriesRenderer mRenderer2 = new XYMultipleSeriesRenderer(); // Holds a collection of XYSeriesRenderer and customizes the graph
23 |
24 | public HearthrateLineGraph()
25 | {
26 | // Add single dataset to multiple dataset
27 | mDataset2.addSeries(dataset2);
28 |
29 | // Customization time for line 1!
30 | renderer2.setColor(Color.GREEN);
31 | renderer2.setPointStyle(PointStyle.X);
32 | renderer2.setFillPoints(true);
33 |
34 | // Enable Zoom
35 | mRenderer2.setZoomButtonsVisible(false);
36 | mRenderer2.setXTitle("Sample n");
37 | mRenderer2.setYTitle("Amplitude ");
38 | mRenderer2.setShowGrid(true);
39 |
40 | // Add single renderer to multiple renderer
41 | mRenderer2.addSeriesRenderer(renderer2);
42 | }
43 |
44 | public GraphicalView getView(Context context)
45 | {
46 | view = ChartFactory.getLineChartView(context, mDataset2, mRenderer2);
47 | return view;
48 | }
49 |
50 | public void addNewPoints(Point p)
51 | {
52 | dataset2.add(p.getX(), p.getY());
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/HumanSignal/src/com/taweechai/humansignal/realtimegraph/LineGraph.java:
--------------------------------------------------------------------------------
1 | package com.taweechai.humansignal.realtimegraph;
2 |
3 | import java.util.List;
4 |
5 | import org.achartengine.ChartFactory;
6 | import org.achartengine.GraphicalView;
7 | import org.achartengine.chart.PointStyle;
8 | import org.achartengine.model.TimeSeries;
9 | import org.achartengine.model.XYMultipleSeriesDataset;
10 | import org.achartengine.renderer.XYMultipleSeriesRenderer;
11 | import org.achartengine.renderer.XYSeriesRenderer;
12 |
13 | import android.content.Context;
14 | import android.graphics.Color;
15 |
16 | public class LineGraph {
17 |
18 | private GraphicalView view;
19 |
20 | private TimeSeries ekgDataset = new TimeSeries("Realtime EKG Signal Plotting");
21 | private TimeSeries ecgDataset = new TimeSeries("Realtime ECG Signal Plotting");
22 | private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
23 |
24 | private XYSeriesRenderer renderer = new XYSeriesRenderer(); // This will be used to customize line 1
25 | private XYSeriesRenderer renderer2 = new XYSeriesRenderer(); // This will be used to customize line 2
26 | private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // Holds a collection of XYSeriesRenderer and customizes the graph
27 |
28 | public LineGraph()
29 | {
30 | // Add single dataset to multiple dataset
31 | //mDataset.addSeries(ekgDataset);
32 | // Add second dataset to multiple dataset
33 | mDataset.addSeries(ecgDataset);
34 |
35 | // Customization time for line 1!
36 | /*renderer.setColor(Color.GREEN);
37 | renderer.setPointStyle(PointStyle.X);
38 | renderer.setFillPoints(true);*/
39 |
40 | // Customization time for line 2!
41 | renderer2.setColor(Color.YELLOW);
42 | renderer2.setPointStyle(PointStyle.X);
43 | renderer2.setFillPoints(true);
44 |
45 | // Enable Zoom
46 | mRenderer.setZoomButtonsVisible(false);
47 | mRenderer.setXTitle("Sample n");
48 | mRenderer.setYTitle("Amplitude ");
49 | mRenderer.setShowGrid(true);
50 |
51 | // Add single renderer to multiple renderer
52 | //mRenderer.addSeriesRenderer(renderer);
53 | mRenderer.addSeriesRenderer(renderer2);
54 | }
55 |
56 | public GraphicalView getView(Context context)
57 | {
58 | view = ChartFactory.getLineChartView(context, mDataset, mRenderer);
59 | return view;
60 | }
61 |
62 | public void addEkgNewPoints(Point p)
63 | {
64 | ekgDataset.add(p.getX(), p.getY());
65 | }
66 |
67 | public void addEcgNewPoints(List p)
68 | {
69 | for (int i = 0; i< p.size(); i++){
70 | ecgDataset.add(p.get(i).getX(), p.get(i).getY());
71 | }
72 |
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/HumanSignal/gen/com/taweechai/humansignal/R.java:
--------------------------------------------------------------------------------
1 | /* AUTO-GENERATED FILE. DO NOT MODIFY.
2 | *
3 | * This class was automatically generated by the
4 | * aapt tool from the resource data it found. It
5 | * should not be modified by hand.
6 | */
7 |
8 | package com.taweechai.humansignal;
9 |
10 | public final class R {
11 | public static final class attr {
12 | }
13 | public static final class drawable {
14 | public static final int greenbar=0x7f020000;
15 | public static final int ic_launcher=0x7f020001;
16 | public static final int redbar=0x7f020002;
17 | }
18 | public static final class id {
19 | public static final int LinearLayout1=0x7f050008;
20 | public static final int button1=0x7f05000c;
21 | public static final int fftgraph1=0x7f050007;
22 | public static final int fromSignal=0x7f050003;
23 | public static final int graph1=0x7f050011;
24 | public static final int graph2=0x7f05000d;
25 | public static final int graph3=0x7f050006;
26 | public static final int hearthrateTv=0x7f050010;
27 | public static final int hudinfo=0x7f05000f;
28 | public static final int measureBtn=0x7f050009;
29 | public static final int realtimefftlayout=0x7f05000e;
30 | public static final int scrollView1=0x7f050001;
31 | public static final int signalDataTxt=0x7f050000;
32 | public static final int signalRangeFromTxt=0x7f05000a;
33 | public static final int signalRangeToTxt=0x7f05000b;
34 | public static final int textView1=0x7f050002;
35 | public static final int textView2=0x7f050004;
36 | public static final int toSignal=0x7f050005;
37 | }
38 | public static final class layout {
39 | public static final int fftanalysis=0x7f030000;
40 | public static final int main=0x7f030001;
41 | }
42 | public static final class string {
43 | public static final int app_name=0x7f040001;
44 | public static final int beatperminute=0x7f040005;
45 | public static final int heartRate=0x7f040004;
46 | public static final int hello=0x7f040000;
47 | public static final int signalanalysistitle=0x7f040009;
48 | public static final int signalfftanalyse=0x7f040008;
49 | public static final int signalrangeform=0x7f040006;
50 | public static final int signalrangeto=0x7f040007;
51 | public static final int signalvaluefromtitle=0x7f04000a;
52 | public static final int signalvaluetotitle=0x7f04000b;
53 | public static final int startmeasure=0x7f040002;
54 | public static final int stopmeasure=0x7f040003;
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/HumanSignal/res/layout/fftanalysis.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
20 |
21 |
22 |
23 |
27 |
28 |
32 |
33 |
36 |
37 |
43 |
44 |
50 |
51 |
57 |
58 |
64 |
65 |
66 |
67 |
72 |
73 |
74 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/HumanSignal/res/layout/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
20 |
21 |
28 |
29 |
30 |
31 |
32 |
39 |
40 |
48 |
49 |
50 |
53 |
54 |
58 |
59 |
62 |
63 |
69 |
70 |
71 |
78 |
79 |
80 |
81 |
85 |
86 |
95 |
96 |
105 |
106 |
115 |
116 |
117 |
121 |
122 |
123 |
124 |
125 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/HumanSignal/src/com/taweechai/humansignal/FFTAnalysisActivity.java:
--------------------------------------------------------------------------------
1 | package com.taweechai.humansignal;
2 |
3 | import com.badlogic.gdx.audio.analysis.FFT;
4 | import com.jjoe64.graphview.BarGraphView;
5 | import com.jjoe64.graphview.GraphView;
6 | import com.jjoe64.graphview.GraphViewSeries;
7 | import com.jjoe64.graphview.LineGraphView;
8 | import com.jjoe64.graphview.GraphView.GraphViewData;
9 |
10 | import android.app.Activity;
11 | import android.content.Intent;
12 | import android.graphics.Color;
13 | import android.os.Bundle;
14 | import android.widget.LinearLayout;
15 | import android.widget.TextView;
16 |
17 | public class FFTAnalysisActivity extends Activity {
18 | String rangeForm;
19 | String rangeTo;
20 | String[] signalDataArray;
21 | TextView fromSignal, toSignal, signalData;
22 |
23 | private GraphView graphView;
24 | private GraphViewSeries rawSignalSeries;
25 | private GraphViewSeries fftSignalMagnitudeSeries;
26 | private GraphViewSeries fftSignalPhaseSeries;
27 |
28 | @Override
29 | public void onCreate(Bundle savedInstanceState) {
30 | super.onCreate(savedInstanceState);
31 | setContentView(R.layout.fftanalysis);
32 |
33 | fromSignal = (TextView) findViewById(R.id.fromSignal);
34 | toSignal = (TextView) findViewById(R.id.toSignal);
35 | signalData = (TextView) findViewById(R.id.signalDataTxt);
36 |
37 | Intent intent = getIntent();
38 | rangeForm = intent.getStringExtra(HumanSignalActivity.RANGEFROM);
39 | rangeTo = intent.getStringExtra(HumanSignalActivity.RANGETO);
40 | signalDataArray = intent.getStringArrayExtra(HumanSignalActivity.SIGNALDATA);
41 | fromSignal.setText(rangeForm);
42 | toSignal.setText(rangeTo);
43 | System.out.println(signalDataArray.length);
44 | for (int i = 0; i < signalDataArray.length; i++){
45 | System.out.println(signalDataArray[i]);
46 | }
47 | GraphViewData[] gDataArr = new GraphViewData[signalDataArray.length];
48 | for (int i = 0; i < signalDataArray.length ;i++){
49 | gDataArr[i] = new GraphViewData( i, Double.parseDouble(signalDataArray[i]));
50 | }
51 | /*FFT operation section*/
52 | float[] array = new float[signalDataArray.length];
53 | for(int i = 0; i< array.length; i++){
54 | array[i] = (float)Double.parseDouble(signalDataArray[i]);
55 | }
56 | float[] array_hat,res=new float[array.length/2];
57 | float[] fft_cpx,tmpr,tmpi;
58 | float[] mod_spec =new float[array.length/2];
59 | float[] real_mod = new float[array.length];
60 | float[] imag_mod = new float[array.length];
61 | double[] real = new double[array.length];
62 | double[] imag= new double[array.length];
63 | double[] mag = new double[array.length];
64 | double[] phase = new double[array.length];
65 | int n;
66 | float tmp_val;
67 | String strings;
68 | FFT fft = new FFT(array.length, 1);
69 |
70 | fft.forward(array);
71 | fft_cpx=fft.getSpectrum();
72 | tmpi = fft.getImaginaryPart();
73 | tmpr = fft.getRealPart();
74 |
75 | GraphViewData[] gDataFftMagnitudeArr = new GraphViewData[array.length];
76 | GraphViewData[] gDataFftPhaseArr = new GraphViewData[array.length];
77 | for (int i = 0; i < array.length ;i++){
78 |
79 | }
80 | for(int i=0;i= FFT_WINDOWS_LEN){
253 | GraphViewData[] tmpGVD = new GraphViewData[(int)FFT_WINDOWS_LEN];
254 | tmpGVD = realtimeFftCalculation(graph2LastXValue, signalDataArr, FFT_WINDOWS_LEN);
255 | fftSignalMagnitudeSeries.resetData(tmpGVD);
256 | }
257 | else{
258 |
259 | }
260 |
261 | }
262 | else{
263 |
264 | }
265 | mHandler.postDelayed(this, 500);
266 | }
267 | };
268 | mHandler.postDelayed(mTimer1, 500);
269 |
270 | mTimer2 = new Runnable() {
271 |
272 | //@Override
273 | public void run() {
274 | if(isPlot == true){
275 | if((n < signalDataArr.length) && (n + PULSE_WIDTH < signalDataArr.length)){
276 | for (int k = 0; k < PULSE_WIDTH; k = k + 10){
277 | graph2LastXValue = n+k;
278 | graph2LastYValue = Double.parseDouble(signalDataArr[n+k]);
279 | realtimeEcgSignalSeries.appendData(new GraphViewData(graph2LastXValue, graph2LastYValue), true);
280 |
281 | if((graph2LastYValue >=PULSE_COUNT_THEADSHOLD) && (isPulseChecklock == false)){
282 | tempPulseLockVal = graph2LastYValue;
283 | isPulseChecklock = true;
284 |
285 | }
286 | else if((graph2LastYValue <= tempPulseLockVal) && (isPulseChecklock == true)){
287 | pulseCountAcc++;
288 | isPulseChecklock = false;
289 | }
290 | else{
291 |
292 | }
293 | }
294 | n = n + PULSE_WIDTH;
295 |
296 | }
297 | else{
298 | n = 0;
299 | }
300 | }
301 | else{
302 |
303 | }
304 | mHandler.postDelayed(this, 500);
305 | }
306 | };
307 | mHandler.postDelayed(mTimer2, 500);
308 |
309 | mTimer3 = new Runnable() {
310 | //@Override
311 | public void run() {
312 | if(isPlot == true){
313 | heartRate = pulseCountAcc * 6;
314 | heartrateLabel.setText(String.valueOf(heartRate));
315 | pulseCountAcc = 0;
316 | }
317 | else{
318 |
319 | }
320 | mHandler.postDelayed(this, 10000);
321 | }
322 | };
323 | mHandler.postDelayed(mTimer3, 10000);
324 | }
325 | }
--------------------------------------------------------------------------------