SMS Gateway menggunakan Java dan Gammu Part 4 - SwingWorker | Tempat Belajar dan Berbagi Pengetahuan Java dan PHP
Home » , , , » SMS Gateway menggunakan Java dan Gammu Part 4 - SwingWorker

SMS Gateway menggunakan Java dan Gammu Part 4 - SwingWorker

Dipostingkan Oleh Ridwan Labs pada Rabu, 03 Agustus 2011 - Diupdate Pada: 8/03/2011


Salah satu yang paling menjengkelkan ketika membuat program yang berhubungan dengan Hardware adalah proses komunikasi dengan hardware. Kenapa? karena biasanya proses komunikasi ini memerlukan waktu, dan biasanya lagi proses ini membuat program/aplikasi Stack (Hung) untuk beberapa saat.


Untuk mengatasi masal tersebut, terutama saat bekerja dengan Komponen Swing adalah menggunakan class SwingWorker. definisi Swing Worker Menurut Sun adalah:
"SwingWorker is designed for situations where you need to have a long running task run in a background thread and provide updates to the UI either when done, or while processing. Subclasses of SwingWorker must implement the doInBackground() method to perform the background computation", 
Kurang lebih terjemahannya kaya gini:" SwingWorker dirancang untuk situasi di mana Anda perlu memiliki tugas lain yang berjalan jangka panjang pada thread latar belakang sekaligus meng-update UI. Subclass dari SwingWorker harus menerapkan method doInBackground () untuk melakukan perhitungan latar belakang." (kalo ada yang jago bahasa inggris benerin yah).

Oke gak perlu panjang lebar lagi, kita mulai membuat contoh implementasi SwingWorker untuk mengirim SMS Menggunakan Gammu.

Yang Perlu Disediakan :D
1. Java JDK dan Netbeans 7 (Atau terserah mau pake yang berapa pun)
2. Gammu for Linux (saya pake yang buat Ubuntu 11.04)

Langkah ke 1
Buat Project pada Netbeans kasih nama sesuai dengan keinginan.
(Silahkan baca http://onta-programing.blogspot.com/2008/12/buat-project-baru-di-netbeans.html untuk mengetahui membuat project di Netbeans)

Langkah Ke 2
Rancang frame dan tambahkan beberapa komponen Swing, rancang kurang lebih seperti gambar di bawah ini:
Langkah ke 3
buat method busy(boolean b):
private void busy(boolean b){
        txnohp.setEnabled(!b);
        txcontent.setEnabled(!b);
        progress.setVisible(b);
}


Langkah Ke 4
Tambahkan Kode ini pada bagian konstruktor Frame. Tambahkan setelah initComponents();
busy(false);

Langkah Ke 5
buat method kirim sms:
private void kirimSMS(final String noHP, final String sms){
        gammuWorker = new SwingWorker() {
            @Override
            protected String doInBackground() throws Exception {
                busy(true);
               
                Runtime runtime = Runtime.getRuntime();
               
                if(sms.length() <= 153){
                    //Untuk Windows
                    //runtime.exec( pathGammu + " -c " + pathGammurc + " TEXT " + noHP + " -text \""+ sms + "\"");
                   
                    //Untuk linux
                    runtime.exec("gammu --sendsms TEXT " + noHP + " -text \""+ sms + "\"");
                   
                    return "Pesan Terkirim";
                } else {
                    return "Pesan Lebih dari 153 Karakter";
                }
            }

            @Override
            protected void done() {
                try {
                    //Cek apakah proses pengiriman pesan selesai?
                    String pesan = get();
                    JOptionPane.showMessageDialog(null, pesan);
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, "Pesan tidak dikirimkan. Alasan:\n" + ex.getMessage());
                } finally {
                    busy(false);
                }
               
            }
        };
       
        gammuWorker.execute();
    }


Langkah ke 6
Supaya menarik pake Nimbus Look And Feel
public static void main(String args[]) {
        try {
            //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(GammuSwingFrame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(GammuSwingFrame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(GammuSwingFrame.class.getName()).log(Level.SEVERE, null, ex);
        } catch (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(GammuSwingFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
       
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new GammuSwingFrame().setVisible(true);
            }
        });
}

Kalo dah dijalankan coba test....
ini Screenshootnya:



Sourcecodenya:
http://www.4shared.com/file/9wfXSTBq/GammuSwingWorker.html

Kalau ada Pertanyaan silahkan Komentar
Share this article :

14 komentar:

  1. ane mau nanya nih tempat ane kok masih saja error [io]

    BalasHapus
  2. programnya hanya untuk mengirimkan 1 sms. Bagaimana jika kasusnya bisa mengirimkan ke banyak nomor?
    apakah program ini juga bisa untuk menerima sms?

    Maaf banyak nanya-nanya,,
    semoga artikelnya berguna dan bermanfaat

    BalasHapus
  3. @gendon: posting gan error codenya

    @valorkedungjati: bisa aja, tinggal di looping aja fungsi mengirim smsnya.

    BalasHapus
  4. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  5. Blackonta (Taopik Ridwan) said...
    @valorkedungjati: bisa aja, tinggal di looping aja fungsi mengirim smsnya.
    >> jika memang di looping apakah harus ditambahkan sesuatu untuk GUInya agar bisa multisms pengirimannya...

    Mohon bantuannya.

    BalasHapus
  6. Di GUI gak perlu di tambahin apa2 cukup di kodingnya aja, cuma kalo mau lebih atraktif GUInya bisa diambahin dengan progressbar

    BalasHapus
  7. mas, kok kalo ngirm yang mengandung spasi kok nggak bisa ya mas ya

    BalasHapus
  8. punya ane keluar error gan :D
    java.io.IOException: Cannot run program "gammu": CreateProcess error=2, The system cannot find the file specified

    BalasHapus
    Balasan
    1. install dulu gammunya gan, sudo apt-get gammu

      Hapus
  9. gan sama ane juga error kaya mas Trihadi, dan saya menggunakan windows7 .. tapi solusi dari mas RDOne barakah itu menggunakan ubuntu .. apa ada gak ya solusi buat windows7?
    maaf gan saya nanya2 maklum masih newbie :D
    semoga postingan ini bermanfaan :)

    BalasHapus
  10. cara looping sms ke banyak nomor bagaimana mas??|
    mohon bantuannya

    BalasHapus
  11. sourcecode nya gak bisa di download..

    BalasHapus

Cari Artikel



 
Support : Admin
Copyright © 2013. Tempat Belajar dan Berbagi Pengetahuan Java dan PHP - All Rights Reserved
Template Created by Creating Website Modified by CaraGampang.Com
Proudly powered by Blogger