2017-12-18 155 views
0

我目前正在尝试做一个Android演示,以约50Hz的采样率测试光照水平。不过,我只能得到onSensorChanged回拨2-3次。我的手机是xiaomi mi5s(lineage os 14.1安装),Android 7.1。Android光传感器采样频率太低

public class MainActivity extends Activity implements SensorEventListener { 
    private SensorManager mSensorManager; 
    private Sensor mLight; 

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

     mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
     mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); 
    } 

    @Override 
    public final void onAccuracyChanged(Sensor sensor, int accuracy) { 
     // Do something here if sensor accuracy changes. 
    } 

    @Override 
    public final void onSensorChanged(SensorEvent event) { 
     // The light sensor returns a single value. 
     // Many sensors return 3 values, one for each axis. 
     float lux = event.values[0]; 
     Log.i("zz", lux + ""); 
     // Do something with this sensor value. 
    } 

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

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

回答

0

您可以使用SENSOR_DELAY_FASTEST而不是普通的。这将使硬件与硬件提供可靠的读数一样快。但是光传感器完全可能在50赫兹时不工作。它的主要用例并不要求这样做。

+0

感谢您的回复。我已经尝试了SENSOR_DELAY_FASTEST,但它仍然每秒2-3次... – iampkuhz

+0

然后这就是你能够从传感器中获得的最多。它并不是真正为你的用例设计的 –