SORU
11 Mart 2011, Cuma


Nasıl android ile doldurun olayı algılamak için?

Nasıl android ile doldurun bir olay olarak algılayabilir miyim? Nasıl salla yönünü algılayabilir miyim?

Sarsıntı meydana geldiğinde bir imageview görüntüyü değiştirmek istiyorum.

CEVAP
11 Mart 2011, Cuma


Görünüm kodu noktasından, SensorListener uygulamak gerekir:

public class ShakeActivity extends Activity implements SensorListener

Bir SensorManager elde etmek gerekir:

sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);

Ve istediğiniz bayrakları ile bu sensör kayıt:

sensorMgr.registerListener(this,
SensorManager.SENSOR_ACCELEROMETER,
SensorManager.SENSOR_DELAY_GAME);

Senin onSensorChange (), bir sarsıntı olup olmadığını belirlemek yöntem:

public void onSensorChanged(int sensor, float[] values) {
  if (sensor == SensorManager.SENSOR_ACCELEROMETER) {
    long curTime = System.currentTimeMillis();
    // only allow one update every 100ms.
    if ((curTime - lastUpdate) > 100) {
      long diffTime = (curTime - lastUpdate);
      lastUpdate = curTime;

      x = values[SensorManager.DATA_X];
      y = values[SensorManager.DATA_Y];
      z = values[SensorManager.DATA_Z];

      float speed = Math.abs(x y z - last_x - last_y - last_z) / diffTime * 10000;

      if (speed > SHAKE_THRESHOLD) {
        Log.d("sensor", "shake detected w/ speed: "   speed);
        Toast.makeText(this, "shake detected w/ speed: "   speed, Toast.LENGTH_SHORT).show();
      }
      last_x = x;
      last_y = y;
      last_z = z;
    }
  }
}

Shake eşik olarak tanımlanır:

private static final int SHAKE_THRESHOLD = 800;

Çok değişik yöntemler, sallamak hareket algılama vardır. link.Bu link çalışmıyor veya link öldüyse(, look at this web archive.)bak.

example şuna bir bakın android shake dinleyici algılar.

Not:SensorListener önerilmiyor. SensorEventListener yerine kullanabiliriz. Here is a quick example using SensorEventListener.

Teşekkürler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • aki6336

    aki6336

    14 AĞUSTOS 2008
  • Gavin Hoey

    Gavin Hoey

    21 Aralık 2007
  • pissengehen

    pissengehen

    26 EYLÜL 2006