Kamis, 27 Maret 2014

Sensor Posisi Menggunakan Game Rotasi Vector Sensor & Proximity Sensor

Platform Android menyediakan dua sensor yang memungkinkan Anda menentukan posisi perangkat: sensor medan magnetik bumi dan sensor orientasi. Platform Android juga menyediakan sensor yang memungkinkan Anda menentukan seberapa dekat wajah perangkat pada sebuah objek (yang dikenal sebagai sensor proximity). Sensor medan magnetik bumi dan sensor jarak berbasis hardware. Kebanyakan handset dan tablet memproduksi termasuk sensor medan magnetik bumi didalamnya. Demikian juga, produsen handset biasanya menyertakan sensor jarak untuk menentukan kapan handset sedang digunakan dekat dengan wajah pengguna (misalnya, selama panggilan telepon). Orientasi sensor adalah sensor berbasis perangkat lunak dan berasal data dari accelerometer dan sensor medan magnetik bumi.

Catatan: Orientasi sensor yang usang dalam Android 2.2 ( API Level 8) .

Posisi sensor berguna untuk menentukan posisi fisik perangkat di bingkai dunia acuan. Sebagai contoh, Anda dapat menggunakan sensor medan geomagnetik dalam kombinasi dengan accelerometer untuk menentukan posisi perangkat relatif terhadap magnetik Kutub Utara. Anda juga dapat menggunakan sensor orientasi (atau metode yang serupa berbasis sensor orientasi) untuk menentukan posisi perangkat dalam bingkai aplikasi acuan anda. Sensor posisi yang tidak biasanya digunakan untuk memantau pergerakan perangkat atau gerakan, seperti goyang, miring, atau dorong.

Sensor medan magnetik bumi dan sensor orientasi kembali array multi-dimensi nilai sensor untuk setiap SensorEvent. Sebagai contoh, sensor orientasi memberikan nilai kekuatan medan geomagnetik untuk masing-masing dari tiga sumbu koordinat selama acara sensor tunggal. Demikian juga, sensor orientasi memberikan azimuth (yaw), nada, dan nilai-nilai gulungan selama peristiwa sensor tunggal. Sensor jarak memberikan nilai tunggal untuk setiap acara sensor.


Menggunakan Game Rotasi Vector Sensor
Rotasi permainan sensor vector identik dengan Rotation Vector Sensor, kecuali ia tidak menggunakan medan magnetik bumi. Oleh karena sumbu Y tidak menunjuk ke utara melainkan untuk beberapa referensi lainnya. Referensi yang diperbolehkan untuk melayang dengan urutan yang sama besarnya seperti giroskop hanyut sekitar Z sumbu.

Karena rotasi permainan sensor vector tidak menggunakan medan magnet, rotasi relatif lebih akurat, dan tidak dipengaruhi oleh perubahan medan magnet. Gunakan sensor ini dalam permainan jika Anda tidak peduli tentang di mana utara adalah, dan vektor rotasi normal tidak sesuai dengan kebutuhan Anda karena ketergantungan pada medan magnet.

Kode berikut menunjukkan kepada Anda bagaimana untuk mendapatkan contoh dari permainan standar sensor vector rotasi:

private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GAME_ROTATION_VECTOR);

Menggunakan Proximity Sensor
Proximity Sensor atau Sensor jarak memungkinkan Anda untuk menentukan seberapa jauh suatu objek dari perangkat. Kode berikut menunjukkan kepada Anda bagaimana untuk mendapatkan sebuah instance dari sensor jarak default:

private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
Sensor jarak biasanya digunakan untuk menentukan seberapa jauh kepala seseorang dari muka perangkat handset (misalnya, ketika pengguna membuat atau menerima panggilan telepon). Kebanyakan sensor jarak mengembalikan jarak absolut, dalam cm, tetapi beberapa return hanya nilai dekat dan jauh. Kode berikut menunjukkan kepada Anda bagaimana menggunakan sensor jarak:

public class SensorActivity extends Activity implements SensorEventListener {
  private SensorManager mSensorManager;
  private Sensor mProximity;

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

    // Get an instance of the sensor service, and use that to get an instance of
    // a particular sensor.
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
  }

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

  @Override
  public final void onSensorChanged(SensorEvent event) {
    float distance = event.values[0];
    // Do something with this sensor data.
  }

  @Override
  protected void onResume() {
    // Register a listener for the sensor.
    super.onResume();
    mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
  }

  @Override
  protected void onPause() {
    // Be sure to unregister the sensor when the activity pauses.
    super.onPause();
    mSensorManager.unregisterListener(this);
  }
}
Catatan: Beberapa sensor jarak return nilai-nilai biner yang mewakili "dekat" atau "jauh." Dalam hal ini, sensor biasanya laporan rentang nilai maksimum di negara yang jauh dan nilai yang lebih rendah di negara dekat. Biasanya, nilai yang jauh adalah nilai > 5 cm, tetapi ini bisa berbeda dari sensor ke sensor. Anda dapat menentukan jangkauan maksimum sensor dengan menggunakan metode getMaximumRange ().

Sumber: http://developer.android.com/guide/topics/sensors/sensors_position.html

Tidak ada komentar:

Posting Komentar