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

Sensor Gerak Menggunakan Accelerometer & Gyroscope

Platform Android menyediakan beberapa sensor yang bisa memonitor gerakan perangkat. Dua sensor ini selalu berbasis hardware (accelerometer dan gyroscope), dan tiga sensor ini dapat berupa hardware-based atau berbasis software (gravitasi, percepatan linear, dan sensor vektor rotasi). Sebagai contoh, pada beberapa perangkat sensor berbasis software memperoleh data dari accelerometer dan magnetometer, tapi pada perangkat lain mereka juga dapat menggunakan gyroscope untuk mendapatkan data mereka. Sebagian besar perangkat Android-powered memiliki accelerometer, dan banyak sekarang termasuk gyroscope. Ketersediaan sensor berbasis software lebih variabel karena mereka sering bergantung pada satu atau lebih sensor hardware untuk mendapatkan data mereka.

Sensor gerak berguna untuk gerakan perangkat monitoring, seperti miring, goyang, rotasi, atau ayunan. Gerakan ini biasanya merupakan cerminan dari input pengguna langsung (misalnya, pengguna kemudi mobil dalam permainan atau pengguna mengontrol bola dalam permainan), tetapi bisa juga menjadi cerminan dari lingkungan fisik di mana perangkat duduk (misalnya, bergerak dengan Anda saat Anda mengemudi mobil Anda). Dalam kasus pertama, Anda sedang memantau gerak relatif terhadap frame perangkat acuan atau kerangka aplikasi acuan anda, dalam kasus kedua Anda sedang memantau gerak relatif terhadap frame acuan dunia. Sensor gerak sendiri biasanya tidak digunakan untuk memantau posisi perangkat, tetapi mereka dapat digunakan dengan sensor lain, seperti sensor medan magnetik bumi, untuk menentukan perangkat posisi relatif terhadap frame acuan dunia.

Semua sensor gerak return multi-dimenstional array nilai sensor untuk setiap SensorEvent. Sebagai contoh, selama acara sensor accelerometer tunggal mengembalikan data yang berlaku untuk percepatan tiga sumbu koordinat, dan gyroscope mengembalikan tingkat data rotasi untuk tiga sumbu koordinat. Nilai data ini dikembalikan dalam float array (values) bersama dengan parameter SensorEvent lainnya.

Menggunakan Accelerometer
Sebuah sensor percepatan mengukur percepatan yang diterapkan untuk perangkat, termasuk gaya gravitasi. Kode berikut menunjukkan kepada Anda bagaimana untuk mendapatkan contoh dari sensor percepatan default:

private SensorManager mSensorManager;
private Sensor mSensor;
  ...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Secara konseptual, sebuah sensor percepatan menentukan percepatan yang diterapkan ke perangkat (Ad) dengan mengukur kekuatan yang diterapkan pada sensor itu sendiri (Fs) dengan menggunakan hubungan berikut:

Ad = - ∑Fs / mass
Namun, gaya gravitasi selalu mempengaruhi percepatan diukur sesuai dengan hubungan berikut:

Ad = -g - ∑F / mass

Untuk alasan ini, saat perangkat sedang duduk di meja (dan tidak dipercepat), accelerometer membaca besarnya g = 9,81 m/s2. Demikian pula, bila perangkat jatuh bebas dan karena itu cepat mempercepat ke tanah di 9,81 m/s2, accelerometer yang membaca besarnya g = 0 m/s2. Oleh karena itu, untuk mengukur percepatan nyata perangkat, kontribusi gaya gravitasi harus dihilangkan dari data accelerometer. Hal ini dapat dicapai dengan menerapkan filter high-pass. Sebaliknya, low-pass filter dapat digunakan untuk mengisolasi gaya gravitasi. Contoh berikut ini menunjukkan bagaimana Anda dapat melakukan ini:

public void onSensorChanged(SensorEvent event){
  // In this example, alpha is calculated as t / (t + dT),
  // where t is the low-pass filter's time-constant and
  // dT is the event delivery rate.

  final float alpha = 0.8;

  // Isolate the force of gravity with the low-pass filter.
  gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
  gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
  gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

  // Remove the gravity contribution with the high-pass filter.
  linear_acceleration[0] = event.values[0] - gravity[0];
  linear_acceleration[1] = event.values[1] - gravity[1];
  linear_acceleration[2] = event.values[2] - gravity[2];

Catatan: Anda dapat menggunakan teknik yang berbeda untuk menyaring data sensor. Contoh kode di atas menggunakan filter konstan sederhana (alpha) untuk membuat low-pass filter. Konstan Filter ini berasal dari sebuah konstanta waktu (t), yang merupakan representasi kasar dari latency bahwa filter menambah peristiwa sensor, dan tingkat pengiriman acara sensor (dt). Contoh kode menggunakan nilai alpha dari 0,8 untuk tujuan demonstrasi. Jika Anda menggunakan metode penyaringan ini, Anda mungkin perlu memilih nilai alpha yang berbeda.

Accelerometers menggunakan sensor standar sistem koordinat. Dalam prakteknya, ini berarti bahwa kondisi berikut berlaku bila perangkat adalah meletakkan datar di atas meja dalam orientasi alam:

  • Jika Anda mendorong perangkat di sisi kiri (sehingga bergerak ke kanan), x nilai percepatan positif. 
  • Jika Anda mendorong perangkat di bagian bawah (sehingga bergerak menjauh dari Anda), nilai y percepatan positif. 
  • Jika Anda mendorong perangkat ke langit dengan percepatan A m/s2, nilai percepatan z sama dengan A + 9,81, yang sesuai dengan akselerasi perangkat (+ A m/s2) minus gaya gravitasi (- 9,81 m/s2). 
  • Perangkat stasioner akan memiliki nilai percepatan 9,81, yang sesuai dengan percepatan perangkat (0 m/s2 minus gaya gravitasi, yaitu -9,81 m/s2).

Secara umum, accelerometer adalah sensor yang baik untuk digunakan jika Anda sedang memantau gerakan perangkat. Hampir setiap handset Android-powered dan tablet memiliki accelerometer, dan menggunakan sekitar 10 kali lebih sedikit daya dibandingkan sensor gerak lainnya. Satu kelemahan adalah bahwa Anda mungkin harus menerapkan low-pass dan high-pass filter untuk menghilangkan gaya gravitasi dan mengurangi kebisingan.

Menggunakan Gyroscope
Gyroscope mengukur tingkat atau rotasi dalam rad/s sekitar perangkat x, y, dan sumbu z. Kode berikut menunjukkan kepada Anda bagaimana untuk mendapatkan contoh dari gyroscope default:

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

Sistem koordinat sensor adalah sama dengan yang digunakan untuk sensor percepatan. Rotasi adalah positif dalam arah berlawanan arah jarum jam, maka dari itu pengamat melihat dari beberapa lokasi positif pada x, y atau z sumbu pada perangkat diposisikan pada titik asal akan melaporkan rotasi positif jika perangkat tampaknya berputar berlawanan arah jarum jam. Ini adalah definisi matematika standar rotasi positif dan tidak sama dengan definisi untuk roll yang digunakan oleh sensor orientasi.

Biasanya, output dari gyroscope terintegrasi dari waktu ke waktu untuk menghitung rotasi menggambarkan perubahan sudut atas timestep tersebut. Sebagai contoh:

// Create a constant to convert nanoseconds to seconds.
private static final float NS2S = 1.0f / 1000000000.0f;
private final float[] deltaRotationVector = new float[4]();
private float timestamp;
public void onSensorChanged(SensorEvent event) {
  // This timestep's delta rotation to be multiplied by the current rotation
  // after computing it from the gyro sample data.
  if (timestamp != 0) {
    final float dT = (event.timestamp - timestamp) * NS2S;
    // Axis of the rotation sample, not normalized yet.
    float axisX = event.values[0];
    float axisY = event.values[1];
    float axisZ = event.values[2];

    // Calculate the angular speed of the sample
    float omegaMagnitude = sqrt(axisX*axisX + axisY*axisY + axisZ*axisZ);

    // Normalize the rotation vector if it's big enough to get the axis
    // (that is, EPSILON should represent your maximum allowable margin of error)
    if (omegaMagnitude > EPSILON) {
      axisX /= omegaMagnitude;
      axisY /= omegaMagnitude;
      axisZ /= omegaMagnitude;
    }

    // Integrate around this axis with the angular speed by the timestep
    // in order to get a delta rotation from this sample over the timestep
    // We will convert this axis-angle representation of the delta rotation
    // into a quaternion before turning it into the rotation matrix.
    float thetaOverTwo = omegaMagnitude * dT / 2.0f;
    float sinThetaOverTwo = sin(thetaOverTwo);
    float cosThetaOverTwo = cos(thetaOverTwo);
    deltaRotationVector[0] = sinThetaOverTwo * axisX;
    deltaRotationVector[1] = sinThetaOverTwo * axisY;
    deltaRotationVector[2] = sinThetaOverTwo * axisZ;
    deltaRotationVector[3] = cosThetaOverTwo;
  }
  timestamp = event.timestamp;
  float[] deltaRotationMatrix = new float[9];
  SensorManager.getRotationMatrixFromVector(deltaRotationMatrix, deltaRotationVector);
    // User code should concatenate the delta rotation we computed with the current rotation
    // in order to get the updated rotation.
    // rotationCurrent = rotationCurrent * deltaRotationMatrix;
   }
}
Standar gyroscope menyediakan data rotasi mentah tanpa penyaringan atau koreksi untuk kebisingan dan penyimpangan (bias). Dalam prakteknya, kebisingan gyroscope dan pergeseran akan memperkenalkan kesalahan yang perlu dikompensasi. Anda biasanya menentukan penyimpangan (bias) dan kebisingan dengan memantau sensor lain, seperti sensor gravitasi atau accelerometer.

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

Sabtu, 01 Maret 2014

Cara Membuat Aplikasi Android Virtual Device

Langkah 1:
Persiapkan alat dan bahan.
- PC/laptop yang memadai
- Download Android SDK
http://dl.google.com/android/installer_r22.3-windows.exe

Langkah 2:
-Install Android SDK Installer
pada instalasi, installer akan mendownload tools yang akan digunakan.

Langkah 3:
- Setelah instalasi selesai, buka AVD Manager, lalu klik New pada tab Android Virtual Device.
- Isi nama, device, dll
- klik OK.

Dan ini adalah Android Virtual Device Manager untuk Implementasi aplikasi android melalui emulator.

Selasa, 04 Februari 2014

NoteWagon

NoteWagon adalah suatu aplikasi atau fasilitas untuk mengubah catatan sekolah atau kuliah menjadi uang dengan cara berbagi catatan pada aplikasi tersebut lalu teman atau pelajar yang mengambil mata kuliah yang sama dapat melihat maupun mendownload apa yang kita bagi.

Kok bisa?
Video ini akan menjawabnya ^_^


Dari video diatas, saya jadi percaya apa yang ditulis pada sampul kopi waktu sekolah dasar dulu "Rajin Pangkal Pandai (mencari uang)", semakin rajin kita membuat catatan, semakin banyak uang yang kita dapatkan.

Tahukah anda siapa yang paling di untungkan?
yup! yang paling diuntungkan adalah orang yang sangat diluar dugaan, orang yang rajin ke kampus, rajin mencatat di setiap pelajaran lah yang paling diuntungkan, dan video dibawah ini akan menunjukkan betapa bahagianya dia. hahaha >.<


Rabu, 16 Oktober 2013

Cara bermain basket dengan baik dan benar



Untuk pemula sebaiknya pertama-tama berlatih dribel menggunakan tangan kanan setelah mahir bisa berlatih menggunakan tangan kiri setelah mahir kedua-duanya bisa menggabungkan nya menjadi satu. Setelah itu berlatih shooting di dekat ring setelah mahir di dekat ring bisa berlatih shooting di area free throw, setelah mahir bisa berlatih shooting di area 3 poin  Untuk pemula juga sebaiknya bisa berlatih lay up. Untuk menjadi pemain basket yang hebat perlu usaha dan terus berlatih keras.



TEKNIK DASAR PERMAINAN BOLA BASKET:
A. PASSING DAN CATCHING
Istilah mengoper/melempar/mengumpan selalu berhubungan dengan menangkap (catching) atau menerima bola. Operan pada umumnya dilakukan dengan 2 bahkan 1 tangan serta harus cepat, tepat dan keras, tetapi tidak liar sehingga dapat dikuasai oleh kawan yang menerimanya. Namun mengoper tidaklah semudah orang menduga. Ada beberapa hal yang harus diperhatikan saat mengoper bola antara lain :
Arah bola ke sasaran harus terhindar dari serobotan ( intercept) lawan.
Timing harus tepat
Perasaan (feeling)
Hindari lemparan menyilang
Untuk dapat melakukan operan dengan baik harus dapat menguasai macam-macam teknik dasar melempar dan menangkap bola dengan baik. Teknik dasar melempar bola tersebut al :
Chest Pass ( Operan dada)
Bounce Pass ( Operan pantulan)
Over Head Pass ( Operan dari atas kepala)
Baseball Pass ( operan jarak jauh ( fast break)
Biasanya untuk pemain pemula yang diberikan ada 3 macam passing seperti yang diatas, sedangkan untuk baseball pass biasanya diberikan setelah mereka dapat melakukan gerakan yang lain dengan baik.
B. DRIBBLING
Menggiring bola adalah cara untuk membawa bola ke segala arah dengan lebih dari satu langkah asal bola sambil dipantulkan dan merupakan suatu usaha untuk mengamankan bola dari rampasan lawan sebab dengan demikian ia dapat bergerak menjauhkan lawan sambil memantulkan bola kemana ia tuju. Ada beberapa cara menggiring bola al :
Menggiring bola rendah ( untuk control bola).
Menggiring bola tinggi (untuk kecepatan).
Menggiring campuran
Menggiring bola ini dilatih dari hal yang mudah yaitu dengan sikap ditempat atau berhenti kemudian berjalan dan terakhir baru berlari setelah agak mahir baru kemudian diberikan latihan dengan rintangan untuk lebih mempersulit dribbling/menggiring bola.
C. SHOOTING
Menembak adalah sasaran akhir setiap bermain, juga termasuk unsure yang menentukan kemenangan dalam pertandingan sebab kemenangan ditentukan oleh banyaknya bola yang masuk dalam keranjang (basket) setiap serangan selalu berusaha untuk dapat melakukan tembakan. Dasar-dasar teknik menembak sebenarnya sama dengan teknik operan disamping itu juga tepat tidaknya mekanika gerakan dalam menembak menentukan baik buruknya tembakan.
Shooting atau menembak ini harus dilakukan sesering mungkin untuk melatih anak merasakan gerakannya dengan benar serta dapat terlatih ketepatannya. Untuk para atlit yunior biasanya penekanan latihan pada dua macam cara dalam melakukan shooting atau menembaknya antara lain :
One Hand Shoot (Tembakan satu tangan).
Two Hand Shoot (Tembakan dua tangan).
D. PIVOT
Teknik ini diperlukan untuk mengatasi peraturan tentang diperkenankannya seorang pemain yang memegang bola sambil jalan atau lari. Bahkan seorang pemain yang memegang bola tidak boleh melangkah lebih dari satu langkah tanpa memantulkan bola. Untuk menghindari bola dari sergapan lawan maka ia diperbolehkan melakukan pivot. Garakan berporos (pivot) adalah suatu usaha mengubah arah hadap badan kesegala arah dengan satu kaki tetap sebagai poros (tumpuan). Kaki poros tidak boleh terangkat atau tergeser dari tempatnya, sementara kaki yang lain boleh bergerak atau melangkah kesegala arah, khususnya pada saat memegang bola, sebab dipergunakan agar bola dapat dijauhkan dari jangkauan lawan.
Pivot dapat berbentuk al :
In Front Pivot (front turn).
Reverse Pivot (reverse turn).
E. REBOUND
Merayah bola merupakan teknik dasar yang perlu dikuasai oleh seorang pemain, hal ini dapat dimaklumi sebab kemenangan dalam merayah bola merupakan suatu kesempatan untuk melakukan serangan berikutnya. Merayah bola (rebound) merupakan suatu usaha untuk mengambil atau menangkap bola yang datangnya memantul dari papan pantul atau keranjang akibat dari tembakan yang tidak berhasil. Beberapa ahli mengatakan “ Kalau tidak dapat memenangkan bola rebound maka tim anda tak akan bias menang “, hal ini dapat dibenarkan sebab memenangkan rebound berarti kita mempunyai kesempatan lagi untuk menembak.
Teknik merayah bola (rebound) dibagi menjadi dua yaitu :
Defensive Rebound (merayah bola pada saat bertahan).
Offensive Rebound (merayah bola pada saat menyerang).
Rebound atau merayah bola dilakukan sesering mungkin karena memerlukan ketepatan waktu (timing) yang baik. Sebaiknya saat masih yunior diberikan sehingga para pemain sudah dapat merasakan gerakan dengan baik dan mempunyai ketepatan waktu (timing) dan menutup lawan.