Posts Tagged Java

Mengenal Apa itu Smack Api – XMPP client Java Library

Logo XMPP

Logo XMPP

Smack Api merupakan salah satu opensource XMPP Client Library berbasis Java. Smack Api dapat kita masukkan ke dalam project Java untuk membuat aplikasi client berbasis XMPP, yang dapat berkomunikasi dengan server XMPP seperti https://www.jabber.org.uk, Google Talk, dan masih banyak lagi.

Smack Api adalah salah satu proyek dari Ignite RealtimeRead the rest of this entry »

, , , , , ,

Leave a comment

SIM Application Toolkit (STK) Menggunakan SMSLib

Membuat aplikasi sms menggunakan java memang sebuah perjuangan. Untungnya ada library java yang tersedia yaitu SMSLib. Dengan SMSLib, pembuatan aplikasi SMS semakin mudah dan cepat. Seperti AplikasiSMS yang dapat didownload di https://achmadlutfi.wordpress.com/java-aplikas-sms-dengan-smslib/.

Beberapa waktu lalu, ada kendala dalam software server pulsa yang saya gunakan dan mengharuskan untuk melakukan pengembangan software untuk penggunaan Sim Aplication Toolkit atau STK. Hal ini dikarenakan software yang sebelumnya dipakai terdapat kekurangan dalam STK-nya. Read the rest of this entry »

, , , , , ,

Leave a comment

AplikasiSMS – Mengirim USSD dengan SMSLib

Posting kali ini adalah pembahasan terakhir dari pembuatan AplikasiSMS, yaitu tentang mengirim USSD menggunakan smslib.

Untuk mengirim ussd dengan smslib sebenernya sudah disediakan method tersendiri, yaitu sendUssdCommand(). Tetapi dalam praktiknya, method tersebut tidak berfungsi normal saat menggunakan hp merk Sony Ericson seperti K310, W200. Jika modem yang digunakan adalah modem wavecom, dengan method ini sudah berjalan normal. Agar AplikasiSMS ini dapat berjalan lebih banyak modem, maka pengiriman ussd menggunakan method sendCustomATCommand().

/**
     * Method untuk mengirim USSD
     * @param tujuan
     * @param ussd
     * @return
     * @throws Exception 
     */
    public String sendUssd(String tujuan, String ussd) throws Exception{
        if(service.getServiceStatus()==Service.ServiceStatus.STARTED){
            if(!sendUssdManual.trim().isEmpty()){
                sendUssdManual="";
            }
            lblStatus.setText("PROSES");
            tulisLayar(3, "["+tujuan+"]", ussd, calendar.getTime(), "USSD SENT");
            
            try{
                tempString3 = gateway.sendCustomATCommand("at+cusd=1,\""+ussd+"\",15\r");
                tempString3 = tempString3.trim();
            }catch(Exception exception){
                exception.printStackTrace();
            }
            
            if(tempString3==null || tempString3.isEmpty()){
                tempString3 = "ERROR1";
            }
        }else{
            tempString3 = "ERROR2";
        }
        
        return tempString3;
    }

Untuk menangkap pesan dari proses ussd, kita akan memanfaatkan fasilitas callback dari smslib. Berikut inner class yang digunakan.

/**
     * Class yang akan dijalankan saat aplikasi menerima pesan USSD dari USSD yang telah dikirim
     */
    class USSDInboundNotification implements IUSSDNotification{

        @Override
        public void process(AGateway ag, USSDResponse ussdr) {
            System.out.println(ussdr);
            if(ussdr.getContent()!=null){
                if(trxDial!=null && !trxDial.isEmpty()){
                    tulisLayar(2, "["+trxDial+"]", ussdr.getContent(), calendar.getTime(), "USSD INBOUND READ");
                    trxDial="";
                }else{
                    tulisLayar(2, "[-]", ussdr.getContent(), calendar.getTime(), "USSD INBOUND READ");
                }
            }else{
                tulisLayar(2, "[-]", ussdr.getSessionStatus().toString(), calendar.getTime(), "USSD INBOUND ERROR");
            }
            if(ussdr.getSessionStatus().equals(USSDSessionStatus.FURTHER_ACTION_REQUIRED)){
                try{
                    Thread.sleep(1000);
                        System.out.println("Hasil AT1 : "+gateway.sendCustomATCommand("at\r"));
                        System.out.println("Hasil AT2 : "+gateway.sendCustomATCommand("at+cusd=2\r"));
                    }catch(Exception ex){
                        ex.printStackTrace();
                    }
            }
        }
        
    }

Pesan ussd yang diterima akan ditampilkan dalam layar aplikasi dengan memanfaatkan method tulisLayar(). Didalam aplikasi ini tidak mendukung ussd yang interaktif, jadi setelah menerima pesan sesi ussd akan dihapus.

, , , , , ,

2 Comments

AplikasiSMS – Membaca SMS dengan SMSLib

Kali ini kita masih membahas bagian dari AplikasiSMS, yaitu bagian yang digunakan untuk membaca sms yang masuk dan menghapus sms tersebut.

Didalam AplikasiSMS, digunakan dua cara dalam melakukan pembacaan sms. Yang pertama, sms dibaca saat smslib pertama kali berjalan dengan menggunakan cara synchronous dan yang kedua saat ada sms yang masuk dengan memanfaatkan kelas callback smslib (asynchronous).

Pembacaan sms secara synchronous menggunakan method readMessage(), source codenya seperti berikut.

/**
     * Method untuk membaca pesan yang masuk kemudian menghapusnya secara otomatis
     * @param sleep
     * @throws Exception 
     */
    public void readMessage(int sleep) throws Exception{
        if(service.getServiceStatus()==Service.ServiceStatus.STARTED){
            inboudMessageList = new ArrayList<InboundMessage>();
            service.readMessages(inboudMessageList, MessageClasses.ALL);
            if(inboudMessageList.size()>0){
                for (InboundMessage msg : inboudMessageList){
                    //tulis dilayar
                    tulisLayar(0, HPUtil.cekHP(msg.getOriginator()), msg.getText(), msg.getDate(), "MESSAGE READ");
                    

                    service.deleteMessage(msg);
                }
                Thread.sleep(sleep);
            }
        }
    }

Dengan method diatas, semua pesan yang masuk akan dibaca dengan memanfaatkan ArrayList. Setelah itu sms akan ditampilkan dilayar aplikasi pesan yang ada di modem akan langsung dihapus.

Jika smslib sudah berjalan, pembacaan sms memanfaatkan fasilitas callback yang terdapat di smslib. Inner class yang digunakan adalah sebagai berikut.

/**
     * Class yang akan dijalankan saat aplikasi menerima pesan baru
     */
    class InboundNotification implements IInboundMessageNotification{
        @Override
        public void process(AGateway gateway, MessageTypes msgType, InboundMessage msg){
            if (msgType == MessageTypes.INBOUND){                
                try {
                    if(msg.getText()!=null && msg.getOriginator()!=null){
                        tulisLayar(0, HPUtil.cekHP(msg.getOriginator()), msg.getText(), msg.getDate(), "MESSAGE READ");
                    }
                    
                    service.deleteMessage(msg);
                } catch (Exception ex) {
                    onWarning("Terjadi Kesalahan saat memproses pesan yang masuk !!\n"+ex.getMessage());
                    Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }

Ketika sms masuk, smslib akan memanggil class InboundNotification dan menjalankan method process(). Didalam method tersebut, sms akan ditampilkan dilayar dan sms yang ada dimodem akan dihapus.

Dengan memanfaatkan fasilitas callback, kita tidak perlu membuat sebuah method yang digunakan untuk membaca sms yang masuk. Jadi source code menjadi lebih ringkas.

, , , , , ,

Leave a comment