Selasa, 12 Juni 2012

UNIT II - Bab 5 - Bagaimana mengatur waktu timer


UNIT II - Bab 5 - Bagaimana mengatur waktu timer

Timer   selalu merupakan bagian penting dari pemrograman. Mereka bahkan lebih penting dalam domain mobile sebagai dua aplikasi yang paling digunakan pada ponsel adalah permainan dan auto sinkronisasi aplikasi jaringan diaktifkan. Kedua jenis aplikasi sangat bergantung pada ada timer untuk berfungsi. Penginderaan ini Sun Microsystems sudah termasuk Timer kelas dan TimerTask dalam Mobile Information Device Profile (MIDP).

Kedua kelas ini sangat mudah digunakan dan memungkinkan kita untuk melakukan fungsi waktu kompleks. Mereka dapat digunakan dalam beberapa tugas seperti:
  • Permainan
  • Animasi
  • Otomatis sinkronisasi data dari server
  • Pengingat
  • Splash layar untuk menampilkan logo perusahaan
  • Auto bantuan fungsi seperti di dalam Nokia 6610
Dengan demikian fungsi waktu adalah sangat penting. Sekarang kita akan membahas Timer kelas dan TimerTask lebih luas. Namun sebelum mengejar lebih lanjut saya ingin memberitahu Anda sebuah fakta penting, kelas Timer tidak dapat menjamin ketepatan interval. Jadi kita tidak harus menggunakan class Timer untuk waktu yang sangat akurat menjaga tugas-tugas seperti stop watch. Kami telah memberikan contoh kode untuk stop watch hanya untuk membuat Anda terbiasa dengan pemrograman untuk timer.
Timer
           Kelas Timer terkandung dalam paket java.util dari Mobile Information Device Profile (MIDP). Kelas Timer memberikan kita 2 jenis ketepatan waktu, yaitu:
  • Satu waktu eksekusi
Timer menyediakan satu waktu eksekusi untuk tugas-tugas seperti menghidupkan splash screen atau menampilkan bantuan secara otomatis setelah beberapa waktu, sekali. Ada 2 metode dalam kelas Timer yang dapat menjadwalkan Timer untuk berjalan sekali, yaitu:
o      public void jadwal (TimerTask task, waktu Tanggal)
Metode ini dapat digunakan untuk penjadwalan tugas tertentu untuk eksekusi pada waktu yang ditentukan. Jika waktu saat ini sudah melewati waktu yang disebutkan oleh programmer, tugas dijadwalkan untuk eksekusi langsung.
o      public void jadwal (TimerTask task, long delay)
Metode jadwal eksekusi TimerTask ditentukan setelah jumlah yang ditentukan keterlambatan.
  • Diulang eksekusi
Eksekusi diulang tugas diperlukan untuk situasi tertentu seperti aplikasi game dan aplikasi auto sinkronisasi. Permainan umumnya melibatkan animasi dimana perubahan frame dihitung melalui penggunaan Timer dengan eksekusi diulang. Kelas Timer menyediakan metode berikut untuk eksekusi diulang:
Penundaan eksekusi tetap diulang
Dalam jenis penjadwalan tugas-tugas yang dijadwalkan untuk berjalan relatif terhadap waktu sebenarnya dari pelaksanaan eksekusi sebelumnya.
o      public void jadwal (TimerTask task, firstTime Tanggal, waktu yang panjang)
Metode ini dapat digunakan untuk penjadwalan tugas tertentu berulang kali untuk awal eksekusi pada waktu yang ditentukan.
o      public void jadwal (TimerTask task, long delay, periode panjang)
Metode jadwal eksekusi TimerTask tertentu berulang kali setelah jumlah yang ditentukan keterlambatan.
Bunga tetap diulang eksekusi
Dalam jenis penjadwalan tugas-tugas yang dijadwalkan untuk berjalan secara berkala waktu. Jika salah satu eksekusi tertunda maka eksekusi lainnya akan terjadi dengan cepat sehingga memastikan bahwa dalam jangka panjang frekuensi dari eksekusi adalah kebalikan dari periode yang ditentukan.
o      public void scheduleAtFixedRate (TimerTask task, firstTime Tanggal, waktu yang panjang)
Metode ini dapat digunakan untuk penjadwalan tugas tertentu berulang kali untuk awal eksekusi pada waktu yang ditentukan.
o      public void scheduleAtFixedRate (TimerTask task, long delay, periode panjang)
Metode jadwal eksekusi TimerTask tertentu berulang kali setelah jumlah yang ditentukan keterlambatan.
TimerTask
Kelas ini merupakan tugas yang harus dijadwalkan oleh Timer. TimerTask adalah kelas abstrak dan menerapkan 'Runnable' antarmuka dan dengan demikian mengandung run () method. Tindakan yang harus dilakukan dalam eksekusi Timer harus dilaksanakan di jalankan () metode. Sekarang kita akan melihat contoh praktis ekstensif menggunakan Timer dan TimerTask kelas.
Kode Contoh: Timer & TimerTask
Contoh ini menunjukkan bagaimana bekerja dengan Timer dan TimerTask. Ini tampilan aplikasi adalah stopwatch. Fitur utama dari aplikasi ini adalah bahwa kita dapat menyimpan upto 32 timing berbeda sepersekian detik dalam array dan menampilkannya pada kanvas. Harap diingat bahwa timer MIDP tidak boleh digunakan untuk kegiatan yang memerlukan waktu precesion mutlak seperti acara trek dan lapangan.
Tombol berikut digunakan dalam kami stopwatch:
Ø    '*' Tombol
Hal ini digunakan untuk memulai dan menghentikan stopwatch.
Ø    '0 'Tombol
Hal ini digunakan untuk mengatur stopwatch untuk nol.
Ø    '#' Tombol
Hal ini digunakan untuk mengaktifkan fungsi detik.
  / ************************* / 
  / *                TimerMIDlet.java                       * / 
  / ************************* / 
mengimpor javax.microedition.midlet *;.
mengimpor javax.microedition.lcdui *;.
/ **
  * @ Author SKJ
  * @ Version 1.0.0
  * /
TimerMIDlet kelas publik meluas javax.microedition.midlet.MIDlet
{
     swasta Tampilan layar;

     / / Variabel objek defineing
     TimerCan swasta bisa;
   
     public void startApp ()     
     {
         this.display = Display.getDisplay (ini);
         this.can = new TimerCan ();

         / / Mengatur tampilan saat ini
         this.display.setCurrent (this.can);
     }
   
     public void pauseApp () {
     }
   
     public void destroyApp (boolean unconditional) {
     }
}
 
  / ************************* / 
  / *                TimerCanvas.java                     * / 
  / ************************* / 
mengimpor javax.microedition.lcdui *;.
import java.util *;.

/ **
  * @ Author SKJ
  * @ Version 1.0.0
  * /

masyarakat kelas TimerCan meluas kanvas
{
     / / Untuk Timer
     swasta Timer Timer    ;
   
     / / Variabel untuk menyimpan waktu
     jam private int []    ;
     private int sec []    ;
     private int min []    ;
     private int msec []    ;
   
     / / Variabel kanvas
     private int maxx    ;
     private int maxY    ;
   
     / / Array incement dan pengurangan
     private int saat ini    ;
   
     / / Variabel g.drawString untuk ditampilkan di baris berikutnya
     private int ctrY    ;    

     / Panjang font / toko untuk menampilkan di tengah kanvas
     private int panjang    ;
         
     private int offsety;  
   
     / / Variabel waktu
     swasta String waktu;
   
     / / Font tinggi ternak dan lebar
     private int strWid;
     private int strht;    
   
     boolean swasta gulir    ;
     private int countpl    ;
     private int rect    ;
   
     / / Array increment dan decrement variabel
     swasta int counter    ;
   
     / / Untuk memulai dan menghentikan waktu
     boolean swasta mulai    ;
     swasta boolean berhenti    ;
   
     boolean swasta ya    ;
   
     / / Konstruktor
     publik TimerCan ()
     {
         super ()    ;
         mencoba
         {
             / / Mendapatkan heigth dan lebar kanvas
             this.maxX = this.getWidth ()    ;
             this.maxY = this.getHeight ()    ;       

             / / Variabel initilizing
             this.ctrY = 0    ;
             this.rect = 0    ;
             this.countpl = 0    ;           
             this.current = 0    ;
             this.offsetY = 0    ;

             / / Inisialisasi array dengan 33 Ukuran
             this.hour = new int [33]    ;
             this.min = new int [33]    ;
             this.sec = new int [33]    ;
             this.msec = new int [33]    ;
             this.start = false    ;
             this.stop = true    ;
             this.yes = true    ;
             this.scroll = false    ;  
           
             / / Array untuk initilizing nol
             for (int j = 0    J <= 31; j + +)
             {
                 this.hour [j] = 0    ;
                 this.min [j] = 0    ;
                 this.sec [j] = 0    ;
                 this.msec [j] = 0    ;
             }
         }
       
         catch (Exception e)
         {
             e.printStackTrace ()    ;
         }
     }
     public void paint (Graphics g)
     {        
         g.setColor (180254243);
         / / Menggambar persegi panjang
         g.fillRect (0,0, Maxx, maxY);
       
         / / Menginisialisasi Font        
         Font font = Font.getDefaultFont ()    ;

         / / Mendapatkan lebar dari string                
         this.strWid =    font.stringWidth ("this.time");

         / / Mendapatkan hieght string
         this.strht = font.getHeight ();            
         this.ctrY = this.strht;
       
         for (int j = 1    J <= saat ini    J + +)
         {
             / / Pengaturan variabel waktu    seperti 00:00:00:00
             jika (jam [j-1] <10)
             {
                 this.time = "0" + String.valueOf (this.hour [j-1]) + ":";  
             }
             lain
             {
                    this.time = String.valueOf (this.hour [j-1]) + ":"    ;
             }
            
             if (min [j-1] <10)
             {
                 this.time = this.time + "0" + String.valueOf (this.min [j-
                 1]) + ":"    ;
             }
             lain
             {
                 this.time = this.time + String.valueOf (this.min [j-1]) +  
                 ":"    ;
             }
           
             if (sec [j-1] <10)
             {
                 this.time = this.time + "0" + String.valueOf (this.sec [j-1])
                + ":"    ;
             }
             lain
             {
                 this.time = this.time + String.valueOf (this.sec [j-1]) +
                 ":"    ;
             }
           
             if (msec [j-1] <10)
             {
                 this.time = this.time +
                 "0" + String.valueOf (this.msec [j1]);
             }
             lain
             {
                 this.time = this.time + String.valueOf (this.msec [j-1]):
             }
           
             "." this.time = j + + this.time;                                    

             / / Mendapatkan lebar dari string
             this.strWid =    font.stringWidth (this.time);          
             this.length =    this.maxX - this.strWid;
           
             / / Panjang dibagi dua untuk cenrte
             this.length / = 2;                        

             / / Mengatur Warna dan tampilan waktu yang tersimpan
             g.setColor (255,0,128);            
             g.drawString (this.time, this.length, this.ctrY-
             this.offsetY, Graphics.TOP | Graphics.LEFT);                         

             / / Selisih ctrY oleh gieght tali untuk menarik waktu di depan
             / / Baris
             this.ctrY + =    this.strht;
           
         }
               
             / / Set variabel waktu seperti 00:00:00:00
             jika (jam [saat ini] <10)
             {
                 this.time = "0" +
                 String.valueOf (this.hour [saat ini]) + ":"    ;
             }
             lain
             {
                 this.time = String.valueOf (this.hour [saat ini]) + ":";   
             }
       
             if (min [saat ini] <10)
             {
                 this.time = this.time +
                 "0" + String.valueOf (this.min [saat ini]) + ":"    ;
             }
             lain
             {
                 this.time = this.time +
                 String.valueOf (this.min [saat ini]) + ":"    ;
             }
       
             if (detik [saat ini] <10)
             {
                 this.time = this.time +
                 "0" + String.valueOf (this.sec [saat ini]) + ":"    ;
             }
             lain
             {
                 this.time = this.time +
                 String.valueOf (this.sec [saat ini]) + ":"    ;
             }
       
             if (msec [saat ini] <10)
             {
                 this.time = this.time +
                 "0" + String.valueOf (this.msec [saat ini]);
             }
             lain
             {
                 this.time = this.time +
                 String.valueOf (this.msec [saat ini]);
             }   
       
         / / Mendapatkan lebar dari string
         this.strWid =    font.stringWidth (this.time);
         this.length =    this.maxX - this.strWid;
       
         / / Panjang dibagi dua untuk    menampilkan di tengah
         this.length / = 2;            
   
         / / Mengatur Warna untuk rect
         g.setColor (255255255);
       
         / / Fillrect latar belakang menjalankan menonton                         
         g.fillRect (0,0, Maxx, strht);        
         g.fillRect (0, (countpl + 1) * strht, Maxx, maxY);
       
         / / Tampilan    jam waktu: menit: detik: msec        
         g.setColor (0,0,0);                                                
         g.drawString (this.time, panjang, 0, Graphics.TOP | Graphics.LEFT);                                       
       
     }

     private void startTimer ()
     {
         TimerTask task = new TimerTask ()
         {
             public void run ()
             {
                msec [saat ini] + +;
              
                 if (msec [saat ini] == 100)
                 {
                     msec [saat ini] = 0;
                 
                     / / Detik selisih dengan 1 jika sama dengan 100 msec
                     sec [saat ini] + +;
                 }
                 else if (detik [saat ini] == 60)
                 {
                     sec [saat ini] = 0;
                 
                     / / Menit selisih dengan 1 jika sama dengan 60 detik
                     min [saat ini] + +;
                 }
                 lain jika (min [saat ini] == 60)
                 {
                     min [saat ini] = 0;
                       
                     / / Jam selisih dengan 1 Ketika Min sebesar 60
                     jam [saat ini] + +;
                                     }
                 lain jika (jam [saat ini] == 24)
                 {
                     jam [saat ini] = 0;
                 }                                  
                        repaint ();                  
             }  
         };   
        
         Timer Timer = new ();
         timer.scheduleAtFixedRate (tugas, 10,10);            
       
     }  
   
     / **
      * Disebut ketika tombol ditekan.
      * /
   
     terlindung    membatalkan keyPressed (int keyCode)
     {
         int action = getGameAction (keyCode);
               
         if (== tindakan Canvas.UP && offsety> 0)
         {   
                offsety - = strht;                        
         }
       
         if (== tindakan Canvas.DOWN && offsety <kontra * strht && gulir
         == True)
         {     
                offsety + = strht;            
         }
       
         if (== keyCode Canvas.KEY_STAR)
         {
             if (this.start == false)
             {
                 this.start = true;
                 this.stop = false;
             }
             lain jika (this.stop == false)
             {
                 this.start = false;
                 this.stop = true;
                 this.timer.cancel ();
             }
             if (mulai == true)
             {
                  this.StartTimer ();
             }
         }
       
         if (== keyCode Canvas.KEY_NUM0)
         {                  
             / / Cancellling efek Timer
             this.timer.cancel ();
           
             / / Array untuk menetapkan nol
             this.hour [saat ini] = 0;
             this.min [saat ini] = 0;
             this.sec [saat ini] = 0;
             this.msec [saat ini] = 0;        
             this.start = false;
         }
       
         if (== keyCode Canvas.KEY_POUND)        
         {
             if (start = palsu!)
             {
                 jika (((maxY - ctrY) <strht | | ctrY> = maxY) && offsety
                 <((32-countpl) * strht) && saat <32)
                 {
                      offsety + = this.strht;
                      this.scroll = true;
                      this.counter + +;
                      this.yes = false;
                 }
                 lain jika (ya)
                 {
                     this.countpl + +;
                     this.rect + = this.ctrY;
                 }
                 jika (saat ini <= 31)
                 {
                     this.current + +;
                     / / Toko waktu saat ini dalam array ketika kunci pon
                     ditekan
                     this.hour [saat ini] =    this.hour [saat-1];
                     this.min [saat ini] = this.min [saat-1];
                     this.sec [saat ini] = this.sec [saat-1];
                     this.msec [saat ini] = this.msec [saat-1];                
                 }
             }
         }
      }

Ketika Anda menjalankan aplikasi layar berikut akan ditampilkan:
 

Bila Anda tekan '*' tombol kemudian memulai timer
 

Bila Anda menekan tombol '#' kemudian menampilkan waktu ketika Anda mengklik:
 

Tidak ada komentar:

Posting Komentar