2017-06-28 47 views
-1

我想繪製接近傳感器的實時圖表是可能的。我不是專業如何在Android Studio中繪製接近傳感器的實時圖?

public class MainActivity extends AppCompatActivity { 

    private GraphView graph1; 
    private LineGraphSeries<DataPoint> Series; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     GraphView graph1 = (GraphView) findViewById(R.id.main_graph1); 

     Series = new LineGraphSeries<DataPoint>(); 
     graph1.addSeries(Series); 
     Viewport viewport = graph.getViewport(); 
     viewport.setYAxisBoundsManual(true); 
     viewport.setMinY(0); 
     viewport.setMaxY(10); 
     viewport.setScrollable(true); 

    } 
} 

回答

0

當然這是可能的。此代碼將幫助您獲得傳感器的價值。然後,在onSensorChanged中使用event.values[0]來獲取該值,並以任何希望的方式繪製該值。

import android.content.Context; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity implements SensorEventListener { 

private SensorManager mSensorManager; 
private Sensor mProximity; 
private static final int SENSOR_SENSITIVITY = 4; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 

} 

@Override 
protected void onResume() { 
    super.onResume(); 
    mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    mSensorManager.unregisterListener(this); 
} 

@Override 
public void onSensorChanged(SensorEvent event) { 
    /*if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) { 
     if (event.values[0] >= -SENSOR_SENSITIVITY && event.values[0] <= SENSOR_SENSITIVITY) { 
      //near 
      Toast.makeText(getApplicationContext(), "near", Toast.LENGTH_SHORT).show(); 
     } else { 
      //far 
      Toast.makeText(getApplicationContext(), "far", Toast.LENGTH_SHORT).show(); 
     } 
    }*/ 
} 

@Override 
public void onAccuracyChanged(Sensor sensor, int accuracy) { 

} 

*編輯* 爲了將值添加到圖上,你只需追加的數據系列,是這樣的:

series.appendData(new DataPoint(xPoint, lumValue), true, 1000); 

你可以看看這裏的一個例子: RealTime chartGraphView Realtime plot of Sensor Data

+0

非常感謝。我使用與您相同的代碼,但我的問題是當我將手指放在傳感器上時,它顯示在附近,當我移開手指時,它顯示很遠。我添加了一個圖庫來繪製一個實時圖。我正在開發一個應用程序來記錄使用這個傳感器的光電容積脈搏波信號,但我很困惑。 – Hamid7497

+0

你的問題還不清楚。我的理解是,你需要接近值,以便你可以將它們放在圖上,並且我建議了獲取它們的方法(在onSensorChanged中使用event.values [0])。如果您的問題是其他問題,請解釋您的需求。 – yakobom

+0

我認爲由於光線的變化,當我將手指放在它上面時,接近值必須隨時改變,但我不知道如何在圖表上放置實時光線值。 – Hamid7497

相關問題