2016-03-19 22 views
1

Aynı anda ivmeölçer ve jiroskoptan veri alma konusunda bazı sorunlar yaşıyorum. Üzerinde çalıştığım bir projenin göreceli konumunu hesaplamak için bu sensörleri hızlandırmak ve yönlendirmek için kullanmalıyım. Her iki sensör de aynı anda kullanıldığında, verilerin sadece saniyede bir değiştiği bazı çok garip veri çıkışlarına yol açar. Sadece ivmeölçer çalıştırıldığında veriler daha iyi değildir çünkü en hızlı ayarında saniyede yaklaşık 10 kez değişmektedir. Bu veriler, her sensör okuması için bir zaman damgalı bir dosyaya yazdırılır.Android: Eşzamanlı olarak Accelerometer ve Gyroscope'dan veri alma

Özellikle birden fazla sensörü aynı anda kullanarak, internette öğreticiler bulma konusunda sorun yaşıyorum. Her sensörü farklı bir konuya yerleştirmem gerekiyor mu? Konu kullanma konusunda fazla tecrübem yok, bunu nasıl yapabilirim?

+0

Yaklaşımınızı gösterir misiniz lütfen (Kod). –

+0

Bazı ek bağlantılar şunlardır: https://source.android.com/devices/sensors/sensor-types.html https://source.android.com/devices/sensors/index.html http: // developer.android.com/guide/topics/sensors/sensors_overview.html –

cevap

3

Her sensörü farklı bir konuya yerleştirmeniz gerekmez. Yo kaydetmek için sınıf SensorManager kullanmak ve

public class SensorActivity extends Activity, implements SensorEventListener { 
private final SensorManager mSensorManager; 
private final Sensor mAccelerometer; 
private final Sensor mGyroscope; 

public SensorActivity() { 
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    mGyroscope = mSensorManager.getDefaultSensor(TYPE_GYROSCOPE); 
} 

protected void onResume() { 
    super.onResume(); 
    mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mGyroscope, SensorManager.SENSOR_DELAY_NORMAL); 
} 

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

sensorEventList tutucu (özel yöntem onSensorChanged) uygular gerek farklı sensörler kaydını ve kim alınan verilerin ait kontrol edebilir:

public void onSensorChanged(SensorEvent sensorEvent) { 
    sensorName = sensorEvent.sensor.getName(); 
    Log.d(sensorName + ": X: " + sensorEvent.values[0] + "; Y: " + sensorEvent.values[1] + "; Z: " + sensorEvent.values[2] + ";"); 

}

+0

Evet, yaptığım şey buydu. –