16224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala/* 26224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Copyright 2012 AndroidPlot.com 36224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * 46224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 56224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * you may not use this file except in compliance with the License. 66224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * You may obtain a copy of the License at 76224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * 86224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 96224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * 106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * See the License for the specific language governing permissions and 146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * limitations under the License. 156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala */ 166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapackage com.androidplot.demos; 186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.app.Activity; 206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.content.Context; 216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.graphics.Color; 226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.hardware.Sensor; 236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.hardware.SensorEvent; 246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.hardware.SensorEventListener; 256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.hardware.SensorManager; 266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.os.Bundle; 276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.view.View; 286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.widget.CheckBox; 296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.widget.CompoundButton; 306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.Plot; 316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.util.PlotStatistics; 326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.util.Redrawer; 336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.xy.*; 346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport java.text.DecimalFormat; 356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport java.util.Arrays; 366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala// Monitor the phone's orientation sensor and plot the resulting azimuth pitch and roll values. 386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala// See: http://developer.android.com/reference/android/hardware/SensorEvent.html 396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapublic class OrientationSensorExampleActivity extends Activity implements SensorEventListener 406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala{ 416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private static final int HISTORY_SIZE = 300; // number of points to plot in history 436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private SensorManager sensorMgr = null; 446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private Sensor orSensor = null; 456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private XYPlot aprLevelsPlot = null; 476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private XYPlot aprHistoryPlot = null; 486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private CheckBox hwAcceleratedCb; 506224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private CheckBox showFpsCb; 516224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala //private SimpleXYSeries aprLevelsSeries = null; 526224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private SimpleXYSeries aLvlSeries; 536224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private SimpleXYSeries pLvlSeries; 546224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private SimpleXYSeries rLvlSeries; 556224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private SimpleXYSeries azimuthHistorySeries = null; 566224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private SimpleXYSeries pitchHistorySeries = null; 576224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private SimpleXYSeries rollHistorySeries = null; 586224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 596224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private Redrawer redrawer; 606224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 616224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala /** Called when the activity is first created. */ 626224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Override 636224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void onCreate(Bundle savedInstanceState) { 646224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala super.onCreate(savedInstanceState); 656224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala setContentView(R.layout.orientation_sensor_example); 666224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 676224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // setup the APR Levels plot: 686224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot = (XYPlot) findViewById(R.id.aprLevelsPlot); 696224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setDomainBoundaries(-1, 1, BoundaryMode.FIXED); 706224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.getGraphWidget().getDomainLabelPaint().setColor(Color.TRANSPARENT); 716224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 726224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aLvlSeries = new SimpleXYSeries("A"); 736224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala pLvlSeries = new SimpleXYSeries("P"); 746224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala rLvlSeries = new SimpleXYSeries("R"); 756224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 766224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.addSeries(aLvlSeries, 776224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala new BarFormatter(Color.rgb(0, 200, 0), Color.rgb(0, 80, 0))); 786224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.addSeries(pLvlSeries, 796224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala new BarFormatter(Color.rgb(200, 0, 0), Color.rgb(0, 80, 0))); 806224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.addSeries(rLvlSeries, 816224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala new BarFormatter(Color.rgb(0, 0, 200), Color.rgb(0, 80, 0))); 826224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 836224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setDomainStepValue(3); 846224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setTicksPerRangeLabel(3); 856224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 866224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // per the android documentation, the minimum and maximum readings we can get from 876224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // any of the orientation sensors is -180 and 359 respectively so we will fix our plot's 886224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // boundaries to those values. If we did not do this, the plot would auto-range which 896224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // can be visually confusing in the case of dynamic plots. 906224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setRangeBoundaries(-180, 359, BoundaryMode.FIXED); 916224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 926224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // update our domain and range axis labels: 936224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setDomainLabel(""); 946224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.getDomainLabelWidget().pack(); 956224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setRangeLabel("Angle (Degs)"); 966224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.getRangeLabelWidget().pack(); 976224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setGridPadding(15, 0, 15, 0); 986224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setRangeValueFormat(new DecimalFormat("#")); 996224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1006224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // setup the APR History plot: 1016224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot = (XYPlot) findViewById(R.id.aprHistoryPlot); 1026224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1036224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala azimuthHistorySeries = new SimpleXYSeries("Az."); 1046224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala azimuthHistorySeries.useImplicitXVals(); 1056224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala pitchHistorySeries = new SimpleXYSeries("Pitch"); 1066224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala pitchHistorySeries.useImplicitXVals(); 1076224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala rollHistorySeries = new SimpleXYSeries("Roll"); 1086224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala rollHistorySeries.useImplicitXVals(); 1096224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setRangeBoundaries(-180, 359, BoundaryMode.FIXED); 1116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setDomainBoundaries(0, HISTORY_SIZE, BoundaryMode.FIXED); 1126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.addSeries(azimuthHistorySeries, 1136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala new LineAndPointFormatter( 1146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala Color.rgb(100, 100, 200), null, null, null)); 1156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.addSeries(pitchHistorySeries, 1166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala new LineAndPointFormatter( 1176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala Color.rgb(100, 200, 100), null, null, null)); 1186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.addSeries(rollHistorySeries, 1196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala new LineAndPointFormatter( 1206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala Color.rgb(200, 100, 100), null, null, null)); 1216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setDomainStepMode(XYStepMode.INCREMENT_BY_VAL); 1226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setDomainStepValue(HISTORY_SIZE/10); 1236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setTicksPerRangeLabel(3); 1246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setDomainLabel("Sample Index"); 1256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.getDomainLabelWidget().pack(); 1266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setRangeLabel("Angle (Degs)"); 1276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.getRangeLabelWidget().pack(); 1286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setRangeValueFormat(new DecimalFormat("#")); 1306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setDomainValueFormat(new DecimalFormat("#")); 1316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // setup checkboxes: 1336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala hwAcceleratedCb = (CheckBox) findViewById(R.id.hwAccelerationCb); 1346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala final PlotStatistics levelStats = new PlotStatistics(1000, false); 1356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala final PlotStatistics histStats = new PlotStatistics(1000, false); 1366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.addListener(levelStats); 1386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.addListener(histStats); 1396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala hwAcceleratedCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 1406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Override 1416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 1426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala if(b) { 1436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setLayerType(View.LAYER_TYPE_NONE, null); 1446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setLayerType(View.LAYER_TYPE_NONE, null); 1456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } else { 1466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprLevelsPlot.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 1476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aprHistoryPlot.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 1486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 1496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 1506224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala }); 1516224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1526224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala showFpsCb = (CheckBox) findViewById(R.id.showFpsCb); 1536224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala showFpsCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 1546224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Override 1556224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 1566224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala levelStats.setAnnotatePlotEnabled(b); 1576224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala histStats.setAnnotatePlotEnabled(b); 1586224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 1596224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala }); 1606224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1616224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // get a ref to the BarRenderer so we can make some changes to it: 1626224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala BarRenderer barRenderer = (BarRenderer) aprLevelsPlot.getRenderer(BarRenderer.class); 1636224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala if(barRenderer != null) { 1646224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // make our bars a little thicker than the default so they can be seen better: 1656224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala barRenderer.setBarWidth(25); 1666224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 1676224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1686224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // register for orientation sensor events: 1696224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala sensorMgr = (SensorManager) getApplicationContext().getSystemService(Context.SENSOR_SERVICE); 1706224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala for (Sensor sensor : sensorMgr.getSensorList(Sensor.TYPE_ORIENTATION)) { 1716224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala if (sensor.getType() == Sensor.TYPE_ORIENTATION) { 1726224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala orSensor = sensor; 1736224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 1746224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 1756224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1766224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // if we can't access the orientation sensor then exit: 1776224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala if (orSensor == null) { 1786224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala System.out.println("Failed to attach to orSensor."); 1796224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala cleanup(); 1806224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 1816224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1826224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala sensorMgr.registerListener(this, orSensor, SensorManager.SENSOR_DELAY_UI); 1836224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1846224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala redrawer = new Redrawer( 1856224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala Arrays.asList(new Plot[]{aprHistoryPlot, aprLevelsPlot}), 1866224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 100, false); 1876224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 1886224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1896224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Override 1906224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void onResume() { 1916224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala super.onResume(); 1926224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala redrawer.start(); 1936224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 1946224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 1956224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Override 1966224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void onPause() { 1976224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala redrawer.pause(); 1986224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala super.onPause(); 1996224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 2006224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2016224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Override 2026224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void onDestroy() { 2036224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala redrawer.finish(); 2046224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala super.onDestroy(); 2056224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 2066224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2076224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala private void cleanup() { 2086224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // aunregister with the orientation sensor before exiting: 2096224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala sensorMgr.unregisterListener(this); 2106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala finish(); 2116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 2126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // Called whenever a new orSensor reading is taken. 2156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Override 2166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public synchronized void onSensorChanged(SensorEvent sensorEvent) { 2176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // update level data: 2196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala aLvlSeries.setModel(Arrays.asList( 2206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala new Number[]{sensorEvent.values[0]}), 2216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala SimpleXYSeries.ArrayFormat.Y_VALS_ONLY); 2226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala pLvlSeries.setModel(Arrays.asList( 2246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala new Number[]{sensorEvent.values[1]}), 2256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala SimpleXYSeries.ArrayFormat.Y_VALS_ONLY); 2266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala rLvlSeries.setModel(Arrays.asList( 2286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala new Number[]{sensorEvent.values[2]}), 2296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala SimpleXYSeries.ArrayFormat.Y_VALS_ONLY); 2306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // get rid the oldest sample in history: 2326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala if (rollHistorySeries.size() > HISTORY_SIZE) { 2336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala rollHistorySeries.removeFirst(); 2346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala pitchHistorySeries.removeFirst(); 2356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala azimuthHistorySeries.removeFirst(); 2366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 2376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // add the latest history sample: 2396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala azimuthHistorySeries.addLast(null, sensorEvent.values[0]); 2406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala pitchHistorySeries.addLast(null, sensorEvent.values[1]); 2416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala rollHistorySeries.addLast(null, sensorEvent.values[2]); 2426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 2436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 2456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Override 2466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void onAccuracyChanged(Sensor sensor, int i) { 2476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala // Not interested in this event 2486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 2496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala}