«

»

Dec 01

Menggunakan Processing di Android

Saya mencoba menuliskan sejumlah tulisan mengenai aplikasi di lingkungan Android terkait dengan sejumlah riset yang dilakukan oleh sejumlah mahasiswa terkait dengan proyek tugas akhir, di Padepokan Robot NEXT SYSTEM Bandung.

Processing telah menjadi satu cara yang paling mudah untuk menggambar ide dalam bentuk kode program. Dibangun di atas Java, kreasi dari Ben Fry dan Casey Reas dan sejumlah pengembang free software, software ini berjalan di Mac, Windows dan Linux. Melalui Processing.js, API yang sama bekerja dalam sebuah browser melalui JavaScript. Ini telah meng-inspirasi proyek OpenFrameworks, yang menggunakan API yang hampir sama.

Processing sekarang berjalan di mobile platform dengan Android, dan menggunakan Processing di Android tidaklah sesulit yang dibayangkan. Kita dapat mencobanya dengan SDK dan emulator yang bebas pakai, namun akan lebih menyenangkan bila melakukannya dengan sebuah gadget. Menggunakan semua software bebas, kita dapat menggambar dengan mudah pada lingkungan mobile maupun desktop, dan dengan sedikit modifikasi, menjalankan kode yang sama di desktop, browser dan mobile device.

Processing di platform Android mengerjakan semua fungsi inti dari Processing di desktop – visualisasi 2D dan 3D, manipulasi data, image dan tipe. Kita dapat memanfaatkan Android API untuk menghubungkannya dengan multi-touch, sensor dan yang lainnya.

Instalasi Processing dan Android SDK

Instruksi resmi terkait dengan instalasi Processing di Android dapat dilihat di http://wiki.processing.org/w/Android. Gunakan Processing versi 2.0 atau yang lebih baru, yang telah menyediakan dukungan terhadap Android.

Kedua, download Android SDK dari developer.android.com. Tempatkan instalasi Android di folder yang kita suka, nanti arahkan Processing ke folder tersebut. Di lingkungan Windows kita harus men-download USB Driver. Penulis menggunakan SDK versi 22.3.0, namun kita harus men-download SDK “tambahan”, karena Processing untuk Android, saat ini, hanya mendukung Android OS versi 2.3.3 (API 10).

SDK versi 2.3.3 dapat di-install secara online melalui SDK Manager, atau men-download dan meng-installnya secara offline. Untuk cara kedua, periksa repository – http://dl-ssl.google.com/android/repository/repository-8.xml, kemudian download file yang sesuai pada URL yang tertera. Selanjutnya, extract ke sub folder android-10 pada folder platforms.

/your-android-sdk-path/platforms/android-10/

Jalankan Processing dan pindahkan ke mode Android. Processing akan menghubungi repository-nya untuk mengunduh file-file yang dibutuhkan untuk mode Android. Bila kita ingin melakukannya secara offline, unduh file Android mode, kemudian unzip di folder kerja Processing, misal: Documents/Processing/modes. Setelah di-unzip akan muncul satu sub folder AndroidMode.

Selesai memilih mode Android, kita perlu mengarahkan Processing pada instalasi Android SDK. Pilih root directory dari SDK – direktori yang berisi “add-ons”, “docs”, “platforms”, “tools” dan yang lainnya.

Sketch yang dibuat dapat dijalankan di emulator atau device yang terhubung dengan USB. Menggunakan emulator cukup mudah, namun persiapannya cukup lama. Tidak heran Processing IDE tidak menutupnya ketika program dihentikan.

Untuk menggunakan perangkat aktual, kita perlu memastikan bahwa kita memiliki driver USB yang tepat. Bila kita menggunakan perangkat dari Google, seperti Nexus, dipastikan aman. Bila tidak, ikuti petunjuk yang tertera pada – http://developer.android.com/sdk/win-usb.html. Kedua, kita perlu meng-enable mode debugging pada perangkat yang digunakan. Dalam opsi System settings > Developer options, cawang opsi USB debugging. Ketika kita menekan tombol “Run in Device”, Processing akan membuat sebuah folder dengan nama “android” dengan source code yang kita buat di dalamnya, mencoba meng-compile dan menjalankannya.

Coba jalankan sebuah sketch pada emulator – pilih Sketch | Run in Emulator. Kita dapat menggunakan contoh yang disediakan dalam instalasi Processing.

Emulator AndroidPersiapan menjalankan emulator perlu waktu beberapa saat, dan cukup lama untuk menampilkannya di layar. Ketika layar emulator sudah tampil, masih perlu waktu untuk menampilkan layar utama. Kita mungkin harus menjalankannya (Run in Emulator) kembali. Kita mungkin akan melihat pesan kesalahan yang menyebutkan aplikasi tidak me-respons atau can’t run sketch, namun jangan kuatir, karena Android memiliki low threshold untuk aplikasi time out. Jadi, sementara emulator loading, sebaiknya menunggu.

Emulator AndroidLayar emulator cukup besar dan respons-nya cukup lambat. Untungnya tidak demikian bila menjalankannya di device.

Tampilan ProcessingTerakhir, setelah berhasil menjalankan aplikasi di emulator, coba jalankan sebuah sketch di device.

Touch Location

Variabel built-in motionX, motionY, pmotionX dan pmotionY mirip dengan variabel mouse pada mode pemrograman standard. Kita dapat menggunakannya untuk men-track pergerakan relatif. Keempatnya adalah variabel float, dan variabel mouseButton tidak tersedia.

void setup() { }

void draw()
{
  noStroke();
  fill(0, 60);
  rect(0, 0, width, height);

  noFill();
  stroke(255);
  strokeWeight(30);
  line(motionX, motionY, pmotionX, pmotionY);
}

Screen dan Orientasi

Bila fungsi size() tidak digunakan, maka program yang kita buat akan menggunakan seluruh tampilan device, dan variabel width dan height menyimpan ukuran tampilan.

Orientasi program yang berjalan dapat berubah secara otomatis (tergantung pada setting orientasi pada alat). Untuk mengunci orientasi kita dapat menggunakan fungsi orientation().

orientation(PORTRAIT);
orientation(LANDSCAPE);

Accelerometer dan Magnetometer

Banyak smart device dilengkapi dengan accelerometer dan magnetometer yang memungkinkan kita untuk mengukur orientasi alat dan menggunakannya sebagai kompas. Namun untuk menggunakannya kita perlu menggunakan low level system function untuk meng-inisialisasi sensor dan untuk melakukan komputasi nilai orientasi dari data mentah. Contoh kode dari Processing Wiki menyediakan kode contoh minimum untuk menguji accelerometer dan magnetometer.

Sertakan sensor class:

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

Override Class Method

Fungsi onResume() dipanggil ketika program dimulai atau resume, dan onPause() dipanggil ketika program di-pause atau diakhiri. Fungsi initSensor() dan exitSensor() bekerja sesuai dengan namanya.

void onResume()
{
  super.onResume();
  initSensor();
}

void onPause()
{
  super.onPause();
  exitSensor();
}

Class mSensorEventListener meng-implementasikan interface SensorEventListener. Class digunakan untuk menangani event yang dihasilkan sensor. Dalam contoh ini kita hanya menangkap event dari accelerometer dan magnetometer. Object mSensorEventListener dibuat dalam fungsi initSensor() dan me-registernya agar dapat “mendengar” event dari kedua sensor tersebut.