-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
dcbadd0
commit 00d64b4
Showing
10 changed files
with
423 additions
and
1 deletion.
There are no files selected for viewing
184 changes: 184 additions & 0 deletions
184
SensorLib/app/src/main/java/de/fau/sensorlibtest/RxMainActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
/** | ||
* Copyright (C) 2015-2016 Digital Sports Group, Friedrich-Alexander University Erlangen-Nuremberg (FAU). | ||
* <p> | ||
* This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without | ||
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. If you reuse | ||
* this code you have to keep or cite this comment. | ||
*/ | ||
package de.fau.sensorlibtest; | ||
|
||
import android.annotation.SuppressLint; | ||
import android.app.Activity; | ||
import android.graphics.Color; | ||
import android.os.Bundle; | ||
import android.support.v7.app.AppCompatActivity; | ||
import android.util.Log; | ||
|
||
import com.androidplot.xy.LineAndPointFormatter; | ||
import com.androidplot.xy.PointLabelFormatter; | ||
import com.androidplot.xy.SimpleXYSeries; | ||
import com.androidplot.xy.XYPlot; | ||
|
||
import java.util.List; | ||
|
||
import de.fau.sensorlib.BleSensorManager; | ||
import de.fau.sensorlib.SensorDataProcessor; | ||
import de.fau.sensorlib.SensorFoundCallback; | ||
import de.fau.sensorlib.SensorInfo; | ||
import de.fau.sensorlib.dataframe.AccelDataFrame; | ||
import de.fau.sensorlib.dataframe.AmbientDataFrame; | ||
import de.fau.sensorlib.dataframe.SensorDataFrame; | ||
import de.fau.sensorlib.enums.HardwareSensor; | ||
import de.fau.sensorlib.enums.KnownSensor; | ||
import de.fau.sensorlib.rx.RxSensorDataProcessor; | ||
import de.fau.sensorlib.sensors.GenericBleSensor; | ||
import de.fau.sensorlib.sensors.TekSensor; | ||
import io.reactivex.functions.Consumer; | ||
|
||
/** | ||
* A simple example application to demonstrate the use of the SensorLib. | ||
*/ | ||
public class RxMainActivity extends AppCompatActivity | ||
{ | ||
|
||
private static final String TAG = "SensorLib::TestApp"; | ||
|
||
GenericBleSensor mSensor; | ||
|
||
XYPlot mPlot; | ||
SimpleXYSeries mPlotData; | ||
|
||
@SuppressLint("CheckResult") | ||
@Override | ||
protected void onCreate(Bundle savedInstanceState) | ||
{ | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_main); | ||
|
||
try | ||
{ | ||
BleSensorManager.checkBtLePermissions(this, true); | ||
} catch (Exception e) | ||
{ | ||
// TODO Really handle exception | ||
e.printStackTrace(); | ||
} | ||
|
||
mPlot = (XYPlot) findViewById(R.id.plotViewA); | ||
mPlotData = new SimpleXYSeries("Sensor Values"); | ||
mPlotData.useImplicitXVals(); | ||
mPlot.addSeries(mPlotData, new LineAndPointFormatter(Color.rgb(100, 100, 200), null, null, new PointLabelFormatter(Color.DKGRAY))); | ||
mPlot.setDomainLabel("Sample Index"); | ||
mPlot.setRangeLabel("Value"); | ||
mDataHandler.getNewDataObservable().forEach( | ||
new Consumer<SensorDataFrame>() | ||
{ | ||
@Override | ||
public void accept(SensorDataFrame data) | ||
{ | ||
|
||
if (mPlotData.size() > 99) | ||
{ | ||
mPlotData.removeFirst(); | ||
} | ||
|
||
if (data instanceof AccelDataFrame) | ||
{ | ||
AccelDataFrame adf = (AccelDataFrame) data; | ||
mPlotData.addLast(null, adf.getAccelX()); | ||
} | ||
if (data instanceof AmbientDataFrame) | ||
{ | ||
AmbientDataFrame adf = (AmbientDataFrame) data; | ||
mPlotData.addLast(null, adf.getLight()); | ||
} | ||
|
||
TekSensor.TekDataFrame df = (TekSensor.TekDataFrame) data; | ||
Log.d(TAG, "DataFrame (" + df.getCounter() + "): " + df.toString()); | ||
|
||
// redraw the Plots: | ||
mPlot.redraw(); | ||
} | ||
} | ||
); | ||
} | ||
|
||
RxSensorDataProcessor mDataHandler = new RxSensorDataProcessor(); | ||
|
||
Activity getThis() | ||
{ | ||
return this; | ||
} | ||
|
||
@Override | ||
protected void onResume() | ||
{ | ||
super.onResume(); | ||
|
||
/*String tekMac = "52:4D:4B:5F:01:55"; | ||
mSensor = new TekSensor(this, tekMac, mDataHandler); | ||
mSensor.useHardwareSensor(HardwareSensor.ACCELEROMETER); | ||
mSensor.useHardwareSensor(HardwareSensor.LIGHT); | ||
try { | ||
mSensor.connect(); | ||
mSensor.startStreaming(); | ||
} catch (Exception e) { | ||
e.printStackTrace(); | ||
}*/ | ||
|
||
|
||
List<SensorInfo> list = BleSensorManager.getConnectableSensors(); | ||
for (SensorInfo s : list) | ||
{ | ||
Log.d(TAG, "Sensor found: " + s.getName()); | ||
} | ||
|
||
try | ||
{ | ||
BleSensorManager.searchBleDevices(new SensorFoundCallback() | ||
{ | ||
public boolean onKnownSensorFound(SensorInfo sensor) | ||
{ | ||
Log.d(TAG, "BLE Sensor found: " + sensor.getName()); | ||
|
||
// we check what kind of sensor we found | ||
if (sensor.getDeviceClass() == KnownSensor.GENERIC_BLE) | ||
{ | ||
// ignore default/unknown BLE sensors | ||
//if (sensor.getDeviceName().contains("miCoach")) { | ||
|
||
} else if (sensor.getDeviceClass() == KnownSensor.TEK) | ||
{ | ||
// this is a TEK sensor, create and connect it. | ||
mSensor = new TekSensor(getThis(), sensor, mDataHandler); | ||
mSensor.useHardwareSensor(HardwareSensor.ACCELEROMETER); | ||
mSensor.useHardwareSensor(HardwareSensor.LIGHT); | ||
try | ||
{ | ||
mSensor.connect(); | ||
mSensor.startStreaming(); | ||
} catch (Exception e) | ||
{ | ||
e.printStackTrace(); | ||
} | ||
return false; | ||
} | ||
return true; | ||
} | ||
}); | ||
} catch (Exception e) | ||
{ | ||
e.printStackTrace(); | ||
} | ||
} | ||
|
||
@Override | ||
protected void onPause() | ||
{ | ||
if (mSensor != null) | ||
{ | ||
mSensor.disconnect(); | ||
} | ||
super.onPause(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
apply plugin: 'com.android.library' | ||
apply plugin: 'com.github.dcendents.android-maven' | ||
|
||
group='com.github.gradlman.SensorLib' | ||
version = '1.0' | ||
|
||
android { | ||
compileSdkVersion 27 | ||
|
||
|
||
|
||
defaultConfig { | ||
minSdkVersion 21 | ||
targetSdkVersion 27 | ||
versionCode 1 | ||
versionName "1.0" | ||
|
||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | ||
|
||
} | ||
|
||
buildTypes { | ||
release { | ||
minifyEnabled false | ||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | ||
} | ||
} | ||
|
||
} | ||
|
||
dependencies { | ||
implementation fileTree(dir: 'libs', include: ['*.jar']) | ||
|
||
api 'io.reactivex.rxjava2:rxandroid:2.1.0' | ||
api 'io.reactivex.rxjava2:rxjava:2.2.6' | ||
implementation 'com.android.support:appcompat-v7:27.1.1' | ||
testImplementation 'junit:junit:4.12' | ||
androidTestImplementation 'com.android.support.test:runner:1.0.2' | ||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' | ||
api project(path: ':sensorlib') | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Add project specific ProGuard rules here. | ||
# You can control the set of applied configuration files using the | ||
# proguardFiles setting in build.gradle. | ||
# | ||
# For more details, see | ||
# http://developer.android.com/guide/developing/tools/proguard.html | ||
|
||
# If your project uses WebView with JS, uncomment the following | ||
# and specify the fully qualified class name to the JavaScript interface | ||
# class: | ||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
# public *; | ||
#} | ||
|
||
# Uncomment this to preserve the line number information for | ||
# debugging stack traces. | ||
#-keepattributes SourceFile,LineNumberTable | ||
|
||
# If you keep the line number information, uncomment this to | ||
# hide the original source file name. | ||
#-renamesourcefileattribute SourceFile |
28 changes: 28 additions & 0 deletions
28
SensorLib/rxsensorlib/src/androidTest/java/de/fau/sensorlib/rx/ExampleInstrumentedTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package de.fau.sensorlib.rx; | ||
|
||
import android.content.Context; | ||
import android.support.test.InstrumentationRegistry; | ||
import android.support.test.runner.AndroidJUnit4; | ||
|
||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
|
||
import static org.junit.Assert.*; | ||
|
||
/** | ||
* Instrumented test, which will execute on an Android device. | ||
* | ||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a> | ||
*/ | ||
@RunWith(AndroidJUnit4.class) | ||
public class ExampleInstrumentedTest | ||
{ | ||
@Test | ||
public void useAppContext() | ||
{ | ||
// Context of the app under test. | ||
Context appContext = InstrumentationRegistry.getTargetContext(); | ||
|
||
assertEquals("de.fau.sensorlib.rx.test", appContext.getPackageName()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="de.fau.sensorlib.rx"/> |
Oops, something went wrong.