Android: dans etmek istiyorum
Benim Android uygulaması yenilemek için sallamak bir özellik eklemek istiyorum.
Dokümantasyon SensorListener uygulama içerir buluyorum, ama Eclipse bana söyler tüm itiraz ve önermek SensorEventListener.
Kimse bu oluşturma hakkında gitmek nasıl güzel bir rehber vardenetleyicisi sallamak?
CEVAP
Aşağıda örnek bir kod. Etkinlik sınıf içine koy:
/* put this into your activity class */
private SensorManager mSensorManager;
private float mAccel; // acceleration apart from gravity
private float mAccelCurrent; // current acceleration including gravity
private float mAccelLast; // last acceleration including gravity
private final SensorEventListener mSensorListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent se) {
float x = se.values[0];
float y = se.values[1];
float z = se.values[2];
mAccelLast = mAccelCurrent;
mAccelCurrent = (float) Math.sqrt((double) (x*x y*y z*z));
float delta = mAccelCurrent - mAccelLast;
mAccel = mAccel * 0.9f delta; // perform low-cut filter
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
mSensorManager.unregisterListener(mSensorListener);
super.onPause();
}
Ve onCreate yöntemini ekleyin:
/* do this in onCreate */
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
mAccel = 0.00f;
mAccelCurrent = SensorManager.GRAVITY_EARTH;
mAccelLast = SensorManager.GRAVITY_EARTH;
Sonra "mAccel" her yerde geçerli ivme, eksen bağımsız uygulama ve yerçekimi gibi statik ivme temizlenmiş.sorabilirsiniz Yaklaşık olacaktır. Eğer hareket yok, ve, izin verirse 0 ki >Eğer cihaz çalkalanır ise 2.
Yorumlara dayalı bu test için:
if (mAccel > 12) {
Toast toast = Toast.makeText(getApplicationContext(), "Device has shaken.", Toast.LENGTH_LONG);
toast.show();
}
Notlar:
Bu accelometer kapatmanız gerekiyoronPauseve aktifonResumekaynaklar (CPU, Pil) kaydetmek için. Kodu gezegeni üzerinde varsayar ;-) ve Dünya'nın yerçekimi ivmesi başlatır. Aksi takdirde güçlü bir "" uygulama başlar ve "serbest düşüş" olarak yere çarptığında sarsıntı olacaktı Ancak, kod yerçekimi düşük-cut filtre nedeniyle alışması başlatıldı ve sonra da serbest uzayda başka gezegenlerde ya da iş. (hiç bir zaman kendi uygulamasını kullanmak olacak ne kadar biliyor...;-)
Nasıl bir hizmet Android üzerinde çalı...
Nasıl Android üzerinde internet erişim...
Nasıl Android yazılım klavye görünürlü...
Nasıl Android Emülatör GPS konumunu ta...
Android SDK araçları İnşa etmek ve han...