Sunday, September 18, 2016

Springboot + Java Robot

Pada kesempatan sebelumnya saya pernah membahas mengenai java.awt.Robot di artikel ini.
Dan saat itu saya menganggap bahwa ini library menarik, karena bisa melakukan/menggantikan input dari keyboard dan mouse. 

Pada dasarnya java robot ini memang ditujukan untuk automation seperti yang di jelaskan pada java doc:
This class is used to generate native system input events for the purposes of test automation, self-running demos, and other applications where control of the mouse and keyboard is needed. The primary purpose of Robot is to facilitate automated testing of Java platform implementations.
Untuk input mouse menggunakan java.awt.event.InputEvent yang sudah dibahas pada post sebelum nya. Sedangkan untuk input keyboard menggunakan java.awt.event.KeyEvent. Pada kali ini yg akan kita gunakan adalah input keyboard, berikut contohnya:
 
try {
    Robot robot = new Robot();

    // untuk melakukan aksi menekan tombol enter 
    robot.keyPress(KeyEvent.VK_ENTER);
    // untuk melakukan aksi melepas tombol enter
    robot.keyRelease(KeyEvent.VK_ENTER);

    // untuk melakukan aksi menekan tombol tab 
    robot.keyPress(KeyEvent.VK_TAB);
    // untuk melakukan aksi melepas tombol tab
    robot.keyRelease(KeyEvent.VK_TAB);

} catch (AWTException e) {
    e.printStackTrace();
}
 

Springboot & Headless Mode

Dan ternyata java Robot ini bisa di kombinasikan dengan Springboot. Library ini ternyata bisa digunakan/running dalam springboot yang merupakan sebuah application server dengan menambahkan sedikit code, yaitu konfigurasi system headless. Beberapa library java secara default berasumsi bahwa UI atau Display Monitor dan juga keyboard terpasang. Application server tidak memiliki UI atau Display Monitor yang terpasang, dan ini disebut mode Headless.

Tetapi karena Springboot merupakan sebuah standalone yang bisa juga kita running pada laptop/PC, jadi bisa kita mengeset mode Headless ini menjadi false. Berikut baris code tambahan untuk melakukan setting mode headless :
 
System.setProperty("java.awt.headless", "false");
 

Implementasi

Jadi ide kali ini bertujuan akhir untuk bisa menginput aksi tombol arrow ke kanan dan kiri keyboard.
Sehingga bisa membantu kita saat melakukan presentasi dan berposisi jauh dari laptop.

Untuk spring boot yang digunakan adalah gs-rest-service bisa di dapatkan dari github springboot rest.
Buatlah sebuah API baru seperti berikut:
 
@RequestMapping("/right")
public void right(){
    try {
        System.setProperty("java.awt.headless", "false");

        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_RIGHT);
        robot.keyRelease(KeyEvent.VK_RIGHT);
    } catch (AWTException e) {
        e.printStackTrace();
    }
}
 

Setelah kita running springboot tersebut dan mengakses API yang baru saja kita buat, maka laptop/komputer akan mendapatkan aksi tombol arrow ke kanan.
 
http://localhost:8080/right
 
API ini bisa di call melalui perangkat lain yang satu jaringan dengan laptop ini. Misalnya laptop lain yang terkonek pada Access Point/WiFi yang sama, atau perangkat mobile yang bisa mengakses url API tersebut.

Kita tinggal mengemasnya menjadi sebuah aplikasi mobile yang memudahkan pengguna untuk mengakses method-method baru yang kita buat. Dimana di dalam method-method baru itu mungkin berisi logic dari sebuah kombinasi aktivitas keyboard dan mouse yang sudah kita tentukan sendiri.






No comments:

Post a Comment