Привет, ребята, я сделал приложение из android, в моем приложении я реализовал датчик, значения датчика отображаются в текстовом виде, 3 вида текста используются в датчике, и эти значения постоянно меняются, теперь я хочу показать эти данные текстового обзора в линейном графике, как это возможно? мой код датчика ID:
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private TextView xTV;
private TextView yTV;
private TextView zTV;
private ProgressBar mProgress;
private SensorManager sensorManager = null;
private float[] geomag = new float[3];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
setContentView(R.layout.activity_main);
xTV = (TextView) findViewById(R.id.xTV);
yTV = (TextView) findViewById(R.id.yTV);
zTV = (TextView) findViewById(R.id.zTV);
GraphView graph = (GraphView) findViewById(R.id.graph);
// data
// Initialise values.
xTV.setText("X: 0.00");
yTV.setText("Y: 0.00");
zTV.setText("Z: 0.00");
// Setup progress bar value.
mProgress = (ProgressBar) findViewById(R.id.progress_bar);
mProgress.setMax(100);
}
public void onSensorChanged(SensorEvent sensorEvent) {
synchronized (this) {
geomag = sensorEvent.values.clone();
if (geomag != null) {
xTV.setText("X: "+Float.toString(geomag[0]));
yTV.setText("Y: "+Float.toString(geomag[1]));
zTV.setText("Z: "+Float.toString(geomag[2]));
mProgress.setProgress(getProgressBarValue(geomag[0]));
//Metal detected.
if( Math.abs(geomag[0]) > 50){
playAlarm();
}
}
}
}
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
protected void onResume() {
super.onResume();
// Register this class as a listener for the sensors.
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onStop() {
super.onStop();
// Unregister the listener
sensorManager.unregisterListener(this);
}
/**
* Method to play an alarm sound to signal half time or full time.
*/
private void playAlarm() {
MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.buzzer);
if(!mp.isPlaying()){ //If mediaplayer is not already playing.
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
}
/**
* Takes in a sensor value and returns a value to set the
* progress bar to depending on the sensor value.
* @param sensorValue
* @return
*/
private int getProgressBarValue(float sensorValue){
sensorValue = Math.abs(sensorValue);
if(sensorValue >= 10 && sensorValue < 30)
return 15;
else if(sensorValue >= 30 && sensorValue < 50)
return 30;
else if(sensorValue >= 30 && sensorValue < 50)
return 30;
else if(sensorValue >= 50 && sensorValue < 70)
return 50;
else if(sensorValue >= 70 && sensorValue < 100)
return 75;
else if(sensorValue >= 100)
return 99;
else
return 0;
}
Так что, пожалуйста, помогите мне решить эту проблему