Wednesday, January 20, 2010

Tips Patah Hati Buat Cowok Patah Hati

Tips Patah Hati Buat Cowok Patah Hati

Tips Patah Hati Buat Cowok Patah Hati

Patah hati. Setiap orang pasti pernah merasakan sakitnya patah hati. Mulai dari membuat mood makan jadi kacau, pikiran melayang entah kemana, gak semangat melakukan ini itu, dan lain-lain. Pokoknya saat-2 patah hati adalah saat dimana kita merasa dunia seakan hancur dan gak ada lagi harapan yang bisa menjadi penyemangat.

Tapi, uniknya, para cowok yang patah hati kok bisa ya terlihat biasa-2 aja? Well, ternyata gak juga tuh. “Men also feel the pain”. Buat yang sedang patah hati, kita juga akan memberikan tips supaya harimu kembali ceria.

Men also feel the pain Ketika patah hati, cowok cenderung untuk tidak memperlihatkan perasaan sedihnya itu ke orang-2 sekitarnya. Hal ini dikarenakan sifat dasar cowok yang cenderung memainkan logika ketimbang emosi. Mereka akan menunjukkan mimik muka ceria sehari setelah mereka putus dari pasangannya. Mereka akan dengan mudahnya kembali melakukan aktivitas sehari-hari seperti gak terjadi apa-2. Namun, ketika mereka sendiri di kamar, “they do feel sad just like women”.

Sebenarnya dalam urusan putus hubungan, masih menjadi perdebatan siapa yang paling merasakan sakitnya patah hati. Apakah cowok atau cewek yang lebih menderita? Jawabannya mungkin gak dipengaruhi oleh perbedaan gender atau siapa yang terlebih dulu memutuskan. Tapi, sudah dapat dipastikan bahwa orang yang ditinggalkan “is usually the one feeling the most pain” karena putus bukanlah sesuatu yang mereka harapkan terjadi. Tetapi memang situasi ini lebih sulit untuk dihadapi oleh cowok karena mereka sudah terlebih dulu dicap sebagai “makhluk tangguh” yang mampu bangkit dari segala situasi dan gak pernah terpengaruh urusan emosional akibat patah hati. Ada semacam ekspektasi bahwa “men can just move on and hook another “fish” in the sea of woman”.

Namun, ketika seorang cowok sedang “deeply in love” kepada seorang cewek, maka efek dari putus hubungan akan sangat menyakitkan bagi diri cowok tersebut. Best Friends is the best way out Satu hal yang bisa jadi kekuatan para cowok yang sedang patah hati adalah their best friends! Teman dekat adalah orang pertama yang didatangi cowok saat patah hati. Beda dengan cewek yang langsung curhat ke temen dekatnya, cowok yang patah hati lebih suka untuk memendamnya sendiri dulu.

Cowok punya ego yang cukup besar untuk terlihat baik-2 saja di depan teman-2′nya. Mereka cenderung tidak seekspresif cewek dalam menunjukkan kesedihannya. Begitu perasaan sudah cukup tenang, cowok akan cenderung mencari kesibukan lain di luar atau sekedar menghabiskan waktu bersama teman-2 mereka. Ini nyaris dilakukan oleh semua cowok.

Mayoritas setuju bahwa teman-2′lah yang mampu membuat mereka sedikit lupa akan perasaan bersalah, perasaan kesal, perasaan sedih pasca putus dengan pasangannya. Teman mampu memberikan energi baru saat terpuruk. “Do This and You Will Be Cured” Patah hati memang tidak enak rasanya. Pasti akan ada kebiasaan yang hilang misalnya telepon pacar pagi-2 just to say hello atau udah gak ada lagi dering telepon yang mengingatkan untuk bangun atau makan.

Kalo mengingat hal-2 seperti ini memang membuat diri semakin tidak bersemangat. Untuk itu, coba ikuti langkah-2 berikut ini.

1. Carilah hiburan.

Cobalah pergi ke suatu tempat yang udah dari dulu kamu inginkan. Tinggalkan semua rutinitas yang ada. Kalo perlu matikan handphone biar pikiran tenang dan bisa berpikir jernih. Jika punya hobi yang sifatnya outdoor, inilah saatnya kamu mulai kembali menyalurkan hobimu itu.

2. Luapkan segala perasaanmu lewat tulisan.

Tulis apa yang sudah kamu pelajari dari berakhirnya hubunganmu itu. Ini adalah therapi yang sangat baik untuk menghilangkan beban yang ada di hati. Kalo yang mempunyai bakat menciptakan lagu, bisa juga dicurahkan ke dalam lirik-2 lagu yang ‘dalam’.

3. Stop calling your ex.

Pasti masih suka menatap hp dan bertanya dalam hati “Sms dia nggak ya?”. Well, don’t do that! Itu hanya membuatmu semakin jatuh. Cobalah untuk menahan diri tidak menelpon atau sms mantan. Berilah jarak dan waktu untuk kalian berdua menetralisir perasaan. Ingat dunia terus berputar and you should move on your life.

4. Rubahlah rutinitasmu.

Jangan biarkan dirimu berlama-2 larut dalamn kesedihan. Carilah kegiatan-kegiatan baru yang gak terkait dengan mantan.

5. Cobalah berpikir bahwa kejadian ini adalah babak baru dalam hidupmu.

Tata lagi apa tujuan-2 hidupmu yang belum tercapai. “Explore your passions and make a plan to accomplish a goal”. Bagaimana? Apakah sesuai dengan kondisimu saat ini? Cheer up! Itu yang terpenting.

Coba pelajari tips patah hati di atas, mudah-2′an kamu bisa bangkit dari kesedihan. Perjalanan kisah cinta kamu pasti panjang, jangan pernah terpuruk saat kamu patah hati, jadikan hal itu sebagai pelajaran dan sebuah awal baik buat kamu untuk menjalani kisah cinta selanjutnya. Well, tetap semangat..

Tips Patah Hati Buat Cowok Patah Hati Sumber : heart-break.com




Archive for the ‘newbie’ Category:

ads

How to generate Random Numbers in J2ME application

One of the popular question asked in this blog is ways to generate random numbers in J2ME application.

As most people probably realized, the JavaME CLDC does not include the Math.Random class to generate random numbers. However one can generate a series of random numbers in JavaME/J2ME application by using the included java.util.Random class.


Here's a sample usage

JAVA:
  1. import java.util.Random;
  2. ...
  3. Random generator = new Random();
  4. generator.setSeed(System.currentTimeMillis());
  5. float f = generator.nextFloat();
  6. System.out.println(""+(f*100.0f)%100);
  7. ...

The sample code above will produce a random floating-point number between 0..100 (exclusive)

Here's the source code for the full Random Number Demo application : RandomDemo.java,

Presentation Slides for 10 Sept UUM Sintok Class Talk (AP Hatim)

Here is the presentation slides of the 10 Sept 2007 Network Content & Applications in Mobile Devices - Assoc Prof. Hatim Mohamad Tahir class at UUM Sintok.

[tags]sintok,malaysia,uum,presentation,slides,mobile,j2me,javame,webservice,web service,xmlrpc,xml-rpc,soap[/tags]


The best J2ME MIDlet icon size settings

Although not required, It is nice to include icon in your MIDlet distribution as it give a unique feeling to your mobile application. The only problem is different device seems to have different icon sizes requirements for tJ2ME MIDlet.

The Ideal Icon size guidelines for different mobile device
Here is the icon size guideline for different devices

Nokia

  • Series 40 - 128x160=24x24, 208x208=46x46, 240x320=46x48
  • S60 1st and 2nd - 176x208=42x29, 352x416=76x76
  • S60 3rd - 176x208=31x31, 208x176=37x37, 352x416=76x76, 240x320=53x53/55x55, 320x240=52x52/54x54, 208x208=37x37
  • N90/N95 : 84x58

Samsung & Sony Ericsson
Most Samsung phone accept 16x16, 32x32 icon size

Motorola
15x15, 16x16, 32x32

Most phone seems to accept 8bit-depth color for MIDlet icons, except Nokia S60 3rd edition which seems display 24bit icon quite well.

Note that most of this figure are based on experiments and observation on different phone models.


Create Chart Easily on with J2me ChartComponent class

Charts and graphs are very convenient and efficient way to present data to audiences. Charts make it easy for people to compare figures and present an interpretation of the data itself with just a glance.

However writing a class to represent data in charts in J2ME environment is very time consuming if not difficult, especially when the data representation part consists of a very small part of your mobile application.

Fortunately, there's ChartComponent, an easy to use class for generating charts in J2ME JavaME applications. ChartComponent requires MIDP 2.0 / CLDC 1.0 supported phone in order to be use.

Supported charts in the class are :

  1. Horizontal bars
  2. Vertical bars
  3. Line
  4. Pie (experimental)

ChartComponents comes with javadoc API documentation for references and a test suite which serves as a demo and code reference. The only drawback that I found with are : It is not open source, it is quite large.

However the ChartComponent jar class size can be reduced after integrating with your own midlet with the use of obfuscater.

Download ChartComponent from Beanizer.org


Generic AboutForm class for J2ME / JavaME application

I've seen a lot of J2ME / JavaME application authors create their own 'About' or 'Help' form to provide information regarding their MIDlet application. Most of this 'About' page are re-invented each time the author releases a new application generating inconsistencies between application.

Moreover there are also another breed of authors that take a far more lazy approach by abusing the 'Alert' class to include 'About' information. On most phones, This will severely limits the amount of text displayed on the phone screen regarding the application information.

The Solution : A generic AboutForm
In light of this situation, I decided to create a generic AboutForm (derives from the familiar 'Form' class) which provides a consistent look of a proper "About" page on your application. All you need to do is to initialize the class and use it just like ordinary "Form" class.


AboutForm class features

  • Consistent look on your applications
  • Reusability - You don't need to rewrite the about form class
  • Pre-arrange layout, the application/company logo, name, copyright notice and hyperlink are nicely arranged on the form
  • Easy to use and inuitive
  • You can stop wasting your time creating an About form for each of your applications
  • Clean and straight forward - just initiate the class and let it do all the work for you

Here's a snippets of example usage :

JAVA:
  1. AboutForm aboutForm;
  2. ..
  3. ..
  4. //initialize about form, place logo.png in res folder inside the MIDlet apps folder.
  5. aboutForm = new AboutForm("About","AboutFormDemo 1.0","/logo.png");
  6. //set copyright notice
  7. aboutForm.setCopyright("mypapit","2007");
  8. //set hyperlink
  9. aboutForm.setHyperlink("http://mobilepit.com",this);
  10. //set commandlistener
  11. aboutForm.setCommandListener(this);
  12. //add additional notice
  13. aboutForm.append("This is a demonstration of generic AboutForm class.");
  14. ...
  15. ...
  16. public void commandAction(Command c, Displayable d) {
  17. if (c == exitCommand) {
  18. destroyApp(false);
  19. notifyDestroyed();
  20. } else if (c == aboutCommand) {
  21. //display the about form
  22. display.setCurrent(aboutForm);
  23. } else if (c == aboutForm.DISMISS_COMMAND) {
  24. //this will handle "Back"
  25. //notice that aboutForm uses DISMISS_COMMAND as its Command object similar to Alert class in MIDP 2.0
  26. display.setCurrent(mainForm);
  27. }
  28. }

Download AboutForm class (MIDP 2.0)
Here are the link to the downloads :

[tags]j2me,javame,midp,cldc,mobile,java,coding,programming,application,midlet,midlets[/tags]


How to Round Floating point number (Double) to 2 Decimal Points in J2ME JavaME

The minimalistic design of JavaME CLDC means that a lot of packages from the standard Java has to be trimmed out and this includes the flexible NumberFormat packages which is useful for formatting numbers in Java.

The absence of NumberFormat and java.text package means that you can't even round a floating point number!

However there is a workaround to this problem, with this simple method, you can round floating point number (Double) roughly to a specific number of decimal points.

JAVA:
  1. //round to 2 decimal points
  2. double number = (double)(int)((bmi+0.005)*100.0)/100.0;
  3. //round to 4 decimal points
  4. double number = (double)(int)((bmi+0.00005)*10000.0)/10000.0;

The code above shows you how to round a double to 2 and 4 decimal points, you can change the number of zeros above to round it to your desired decimal points.

Hope that will help you in your JavaME / J2ME programming.

[tags]j2me,javame,midp,java,sdk,j2se[/tags]


How to send SMS using WMA JSR-120 in JavaME J2ME

Here a basic way on how to send SMS programatically from within JavaME / J2ME application using Wireless Messaging API (JSR-120).

WMA JSR-20 Code Snippets

JAVA:
  1. import javax.wireless.messaging.*;
  2. import javax.microedition.io.*;
  3. ...
  4. try {
  5. String addr = "sms://" + this.phone;
  6. MessageConnection conn = (MessageConnection) Connector.open(addr);
  7. TextMessage msg =
  8. (TextMessage)conn.newMessage(MessageConnection.TEXT_MESSAGE);
  9. msg.setPayloadText("SMS Demo to " + text );
  10. conn.send(msg);
  11. } catch (IllegalArgumentException iae) {
  12. //do something
  13. } catch (Exception e) {
  14. //do something
  15. }

As with other networking code, you need to execute this in a separate thread from the main MIDlet application (i.e commandAction), to avoid potential deadlocks.

Download complete working MIDlet application that demonstrates Wireless Messaging API code : SMSDemo.zip




Ternyata Profil Id Facebook Punya Misteri

Sebelum username facebook diberlakukan. Profil facebook kamu pasti menggunakan id kan ! Ternyata profil id facebook itu mempunyai misteri lho .. Seperti yang dikemukakan dalam situs kaskus.com, bahwa profil id facebook tersebut memiliki maksud tertentu. Khususnya dalam hal religius.

Bagi facebook’er yang belum tahu maksud id facebook itu apaan sich ??? id facebook itu merupakan nomor urut profil facebook kita. Contoh :

http://www.facebook.com/profile?id=123456789

Berapa nomer id facebook kamu ? pastinya lebih dari satu juta kan … :)

nah kali ini gue akan mencoba pengin tahu siapa aja sih yang id facebooknya 1 sampe 50.

Hasilnya :

- untuk id 1 sampai 3 itu kosong, alias ga ada user coz dikembalikan ke halaman home facebook. Kenapa yah ??? hihihi :D
- untuk id 4, muncul nama Mark Zuckerberg, si empunya facebook … hehehe, kok dia ga nomor satu aja yah ??? hufp, aneh … :-/
- untuk id 5, muncul nama Chris Hughes, salah satu pendiri facebook juga …
- untuk id 6 hasil kosong … alias ga ada yang make … ga tau kenapa …
- untuk id 7, muncul nama Arie Hasit … ?? /:)
- untuk id 8 sampai 10 , kosong … why ?? i dont know … hehehe
- untuk id 11, muncull nama Soleio, siapa dia ? aku juga tak tau … hehehe
- dari id 12 sampe 25, kosong … muncul lagi nama di id 26 sampe 32 , sedangkan untuk id 33 kosong …
- untuk id 34 sampe 38 ada nama lagi yang gue juga ga tau siapa …
- untuk id 39 kosong … ??
- untuk id 40 sampe 44 ada lagi …
- untuk id 45 ternyata kosong lagi …??
- untuk id 46 sampe 49 masih ada nama lagi …
- dan untuk id 50 ternyata kosong … ???

hah, cape’ … belum tau maksud dari id-id yang kosong dan mengapa mulai dari 4,5,7,11 …

hmmm, setelah googling dengan keyword 45711, 4 5711, 45 711, 457 11, 4571 1 … ga ada hasilnya … hehehe

akhirnya kepikiran untuk mecahin bagian 711 menjadi tanggal ,,, jadi 7 november … dan yang di temuin di google adalah

Alpha Epsilon Pi, yaitu organisasi persaudaraan yahudi di amerika selatan yang didirikan pada tanggal 7 november …

Pertanyaannya : :-/
- apakah bener Mark Zuckerberg itu yahudi ???
- apakah facebook dijadikan senjata oleh kaum yahudi ???
- apakah kita sebagai facebook’er indonesia harus percaya ???

untuk lebih jelas klik url berikut ini :

http://www.kaskus.us/showthread.php?t=1772261




Tips Hindari Facebook Diblokir

facebook diblokir

Facebook diblokir??

Diantara para facebook-er, pasti ada yang pernah ngalamin facebook -nya di blokir, trus kamu bingung n’ bertanya2 kenapa ko bisa di blokir gitu, apa salah dan dosamu ?? :-?

Ternyata faktor penyebab-nya ada dua macem, bisa dateng dari luar (external) atau dari dalam (internal). Apa aja sich penyebab facebook di blokir dan tips untuk hindari facebook kamu di blokir:

facebook-account-disabled

Facebook di blokir karna faktor external:

1. Kamu seorang pekerja atau mahasiswa
Mungkin ada peraturan di kantor/kampus kamu tentang larangan ga boleh membuka situs facebook. :-/

2. Facebook kamu di hack
Tanpa bermaksud “buruk sangka” pada pakar IT, bisa aja facebook kamu di hack orang yang jail, atau mungkin ada temen kamu yang ga suka sama kamu trus ngacak2 facebook kamu atau ngelaporin ke pihak pengelola facebook supaya facebook kamu di blokir.

Tips hindari facebook kamu diblokir :

1> Kamu harus seorang Manusia
Konon cuma manusia (Homo Sapiens) aja yang boleh buat akun di facebook, jadi kamu jangan coba2 buat akun facebook untuk binatang piaraan kamu, rumah, atau kendaraan kesayangan kamu, so’ pasti bakalan dihapus. “padahal gue pengin buat facebook Si Boy (motor kesayangan gue)”.

2> Jangan menggunakan nama palsu
Nah kalo ini mah hampir semua-nya, sekarang banyak banget yang pake nama palsu n’ ga jelas. (kaya gue sendiri..) tapi hati2, konon hal ini bisa mengakibatkan facebook kamu di blokir.

3> Jangan menggunakan Umur palsu
Umur kamu musti di atas 18 tahun, jangan coba2 memalsukan umur, konon bisa diusut intel facebook, kalo ketau-an facebook kamu bakalan di hapus dari peredaran. (buat umur ko coba-caba..)

4> Jangan memasang foto yang ga senonoh
Jangan sekali2 kamu memasang foto di facebook yang berbau pornografi, (misalnya gambar bugil.. woow..) atau suatu gambar yang menjijihkan. Facebook kamu ga hanya akan di blokir tapi kamu bisa berurusan sama polisi atau MUI. :-SS

5> Jangan menggunakan nama Sekolah / Oraganisasi palsu
Jangan memasukkan nama sekolah, kampus, perusahaan atau organisasi palsu di profil kamu, kalo kamu emang ga pernah terdaftar ataupun lulus disekolah atau organisasi tersebut jangan ngaku2 deh. [-X

6> Jangan terlalu banyak nge-add teman
Kalo kamu pengen punya banyak teman di facebook, kamu musti sabar lah, jangan asal add, karna untuk penambahan teman di facebook ada batas-nya tau..

7> Jangan terlalu banyak teman
Awal-nya mungkin kamu seneng punya banyak teman di facebook, tapi lama2 bikin ribet juga kan, so.. batesin teman di facebook kamu jangan lebih dari 9999 orang, bahaya.. !! (uups.. jangan lebih 5000 teman ding..)

8> Jangan terlalu banyak join di group

Peraturan di facebook untuk mengikuti atau join di grup max. 200, ga boleh lebih, lagian banyak juga kan grup2 yang ga bermanfaat, :) >- (pizzz..) jadi .. yang ga penting kamu hapusin aja deh.

9> Jangan terlalu banyak tulisan didinding atau di group
Biasa-nya banyak banget tuh yang nulis di dinding ampe berkali2, udah gitu ada yang curhat, kaya nulis surat pula panjang bener isi-nya. hal ini bisa mengganggu pengguna facebok yang lain, dan resiko-nya facebook kamu bisa di blokir pula.

10> Jangan terlalu banyak yang berkomentar dinding kamu
Karna kamu punya banyak teman atau grup, yang berkomentar di dinding kamu pun jadi terlalu banyak deh, bahkan komentar yang ga penting (spam) muncul didinding kamu. ribet juga kan??

11> Jangan meggandakan teks untuk banyak pesan yang dikirim
Biasanya untuk mempermudah, mempersingkat dan mempercepat, kamu membuat sebuah pesan teks atau link yang sama untuk dikirim kebanyak teman dengan cara copy paste. hal ini bisa dianggap spam oleh facebook.

12> Jangan terlalu banyak poke
colek sana.. colek sini.. ga penting banget deh, ngapain juga colak colek teman di facebook, mendingan colek2 doi kamu aja.. :-*

13> Jangan terlalu banyak nyebarin link
Nyebarin link secara berlebihan di dinding, pesan, group atau saat chating, karna sesuatu yang berlebihan itu ga baik dan di anggap spam. (gue sering banget tuh dapet kiriman link)

14> Jangan terlalu banyak mengundang bermain poker
Aplikasi facebook yang satu ini banyak juga pegikutnya, tapi kamu jangan terlalu banyak mengundang teman. Kalo ga salah poker kan sejenis permainan kartu dengan taruhan gitu (judi), jadi kalo bisa jangan ikutan lah, judi kan dilarang agama. hehhee..

15> Jangan membuat halaman facebook palsu
Facebook tidak memberi toleransi untuk penjiplakan halaman web mereka. Dilarang itu ..!! [-X

16> Tulisan jangan bersifat rasis, fitnah, penghinaan, pornografi, de el el
Link atau tulisan yang kamu kirim jangan bersifat rasis, fitnah, penghinaan, mengejek, memaki, pornografi, pedolfil de el el. Ga baik itu ?? facebook kamu akan di blokir atau di hack orang yang tersinggung sama tulisan kamu.

17> Jangan sering promosi diri di dinding
Ga boleh meng’iklankan aplikasi facebook atau promosi diri di dinding facebook orang lain. karna batas antara spam dan promosi diri memang sangat tipis, seperlunya aja yach.

-> Kalo Facebook kamu diblokir, coba kamu kirim email ke disabled@facebook.com atau appeals@facebook.com atau info@facebook.com dengan email yang kamu gunakan di akun facebook kamu, yang berisi pertanyaan mengapa akun facebook kamu di blokir atau disuspend. (biasa-nya musti memakai bahasa Inggris pas ngirim imel-nya)

-> Setelah kamu ngirim email maka akan ada balasan dari Facebook berisi link ke Term Of Use mereka. Klik alamat link tersebut. Setelah beberapa hari akun akan dibuka kembali.




Foto Facebook Kontroversi

Ada-2 aja ulah para Facebook-er bikin sensasi membuat status di dinding facebook dengan upload foto yang rada kontrversi. Ada yang sengaja majang foto facebook pribadi, ada juga yang upload di google.

Mungkin sepintas terlihat biasa aja, tapi anehnya bisa bikin heboh dan jadi pembicaraan yang rame, dan rata-2 semakin lama semakin ngantur alias melenceng dari topik foto facebook tersebut.

Contoh pertama gambar di bawah ini. foto facebook ini ga tau upload foto pribadi atau dari google, tpi kalo diperhatikan kayanya ini dari google. Tapi gak masalah mau dari mana asalnya yang penting foto tersebut bisa bikin sensasi dan kontroversi.
Foto Facebook Kontroversi

Sama halnya dengan foto facebook yang di bawahnya lagi. kamu2 bisa menilai sendiri lah setelah liat foto nya, Unik, lucu, rada berbau porno gitu, dan yang pasti bikin heboh saat upload di facebook.
Foto Facebook Kontroversi
Yang ini juga gak kalah seru, foto facebook ini kayanya upload foto pribadi, mungkin sengaja mau bikin sensasi dan hasilnya cukup meramaikan tuh, banyak banget yang comment foto ini. Walaupun rada gak yakin, kayanya pelaku di foto ini gue kenal gitu, salah satu temen gue. Ada2 aja cuy..
Foto Facebook Kontroversi
Sedangkan foto facebook yang ini bener2 real alias foto pribadi dan beneran terjadi, karna yang punya foto facebook tersebut salah satu temen gue juga. Dia nekad melakukan tindakan itu karna lagi stres gitu katanya. :-?

Foto Facebook Kontroversi
Berbagai macam hal yang terjadi di Facebook, mulai dari foto facebook yang kontroversi, status facebook bikin heboh dan masih banyak hal2 aneh, kontroversi, lucu, seru bahkan ada juga yang mengerikan dan menjijihkan. Tapi semua itu gak di pungkiri bikin facebook jadi lebih berfariatif dan semakin ramai yang mendaftar facebook dan para facebooker pun termotifasi untuk menunjukan kreatifitasnya.


Archive for the ‘Location API’ Category:

JavaME JSR-179 Example Code : Detect Location via TinyGeocoder

I've completed the JSR-179 Location API code for reverse geocoding in JavaME. This code essentially is an expansion of the previous JSR-179 example that i've posted in the blog before, plus the Reverse-Geocoding feature, thanks to TinyGeocoder service.

J2ME GPS Reverse Geocoding mypapit

What this sample MIDlet does?
It obtain coordinates via the mobile phone JSR-179 Location API and subsequently display the name of the location using TinyGeocoder reverse geocoding service.

JAVA:
  1. import javax.microedition.midlet.*;
  2. import javax.microedition.lcdui.*;
  3. import javax.microedition.location.*;
  4. import javax.microedition.io.*;
  5. import javax.microedition.location.*;
  6. import java.io.*;
  7. public class Geocoder extends MIDlet implements CommandListener
  8. {
  9. public Display display;
  10. public Form form;
  11. private Command cmdExit,cmdOK;
  12. public StringItem si, sili;
  13. public Geocoder()
  14. {
  15. display =Display.getDisplay(this);
  16. form = new Form("Location Api test");
  17. cmdExit = new Command("Exit",Command.EXIT,5);
  18. cmdOK = new Command("OK",Command.OK,1);
  19. si = new StringItem("Coordinates", "Press OK");
  20. sili = new StringItem("Location", "");
  21. form.append(si);
  22. form.append(sili);
  23. form.addCommand(cmdOK);
  24. form.addCommand(cmdExit);
  25. form.setCommandListener(this);
  26. }
  27. public void startApp()
  28. {
  29. display.setCurrent(form);
  30. }
  31. public void pauseApp()
  32. {}
  33. public void destroyApp(boolean flag) {
  34. notifyDestroyed();
  35. }
  36. public void commandAction(Command c, Displayable d)
  37. {
  38. if (c == cmdOK){
  39. Retriever ret = new Retriever(this);
  40. ret.start();
  41. } else if (c == cmdExit) {
  42. destroyApp(false);
  43. }
  44. }
  45. public void displayString(String string)
  46. {
  47. si.setText(string);
  48. }
  49. public void showAlert(String message) {
  50. Alert alert = new Alert("Alert",message,null,AlertType.WARNING);
  51. display.setCurrent(alert,form);
  52. }
  53. }
  54. class Retriever extends Thread {
  55. private Geocoder midlet;
  56. Form formRunning;
  57. Gauge gauge;
  58. public Retriever(Geocoder midlet)
  59. {
  60. /**
  61. * Constructor
  62. *
  63. * EFFECTS: Initialise the server and store midlet information
  64. *
  65. * @param midlet The main application midlet
  66. * @param server Forecast Server URL
  67. *
  68. */
  69. this.midlet = midlet;
  70. formRunning = new Form("Retrieving Info");
  71. formRunning.append(new Gauge("Processing",false,Gauge.INDEFINITE,Gauge.CONTINUOUS_RUNNING));
  72. midlet.display.setCurrent(formRunning);
  73. }
  74. public void run()
  75. {
  76. /**
  77. * Entry point of the thread
  78. *
  79. * EFFECTS: call to connect() method
  80. */
  81. try {
  82. checkLocation();
  83. } catch (Exception ex)
  84. {
  85. ex.printStackTrace();
  86. midlet.displayString(ex.toString());
  87. } finally {
  88. }
  89. }
  90. public void checkLocation() throws Exception
  91. {
  92. String string;
  93. Location l;
  94. LocationProvider lp;
  95. Coordinates c;
  96. // Set criteria for selecting a location provider:
  97. // accurate to 500 meters horizontally
  98. Criteria cr= new Criteria();
  99. cr.setHorizontalAccuracy(5000);
  100. cr.setVerticalAccuracy(5000);
  101. // Get an instance of the provider
  102. lp= LocationProvider.getInstance(cr);
  103. // Request the location, setting a one-minute timeout
  104. l = lp.getLocation(120);
  105. c = l.getQualifiedCoordinates();
  106. if(c != null ) {
  107. // Use coordinate information
  108. double lat = c.getLatitude();
  109. double lon = c.getLongitude();
  110. string = "\nLatitude : " + lat + "\nLongitude : " + lon;
  111. new GetData(midlet,lat,lon).start();
  112. } else {
  113. string ="Location API failed";
  114. }
  115. formRunning.append("Obtained coordinates...");
  116. midlet.displayString(string);
  117. }
  118. }
  119. class GetData implements Runnable,CommandListener {
  120. Geocoder midlet;
  121. double lat, lon;
  122. public GetData (Geocoder midlet, double lat, double lon) {
  123. this.lat = lat;
  124. this.lon = lon;
  125. this.midlet = midlet;
  126. }
  127. public void commandAction (Command cmd,Displayable disp)
  128. {
  129. }
  130. public void start() {
  131. Thread t = new Thread(this);
  132. t.start();
  133. }
  134. public void run() {
  135. HttpConnection conn=null;
  136. InputStream is=null;
  137. String sb;
  138. try {
  139. String sUrl = "http://tinygeocoder.com/create-api.php?g="+""+lat+","+""+lon;
  140. conn = (HttpConnection) Connector.open(sUrl,Connector.READ);
  141. if (conn.getResponseCode() == HttpConnection.HTTP_OK) {
  142. is = conn.openInputStream();
  143. byte buf[] = new byte[128];
  144. int total =0;
  145. while (total <128) {
  146. int count = is.read(buf,total,128-total);
  147. if (count<0) {
  148. break;
  149. }
  150. total += count;
  151. }
  152. sb = new String(buf,0,total);
  153. if (sb.length() <10) {
  154. midlet.showAlert("Connection error, please try again");
  155. is.close();
  156. conn.close();
  157. return;
  158. }
  159. midlet.sili.setText(sb);
  160. //midlet.form.append(sb);
  161. //vectorized();
  162. //midlet.saveCurrency(false,midlet.vector);
  163. //midlet.display.setCurrent(midlet.form);
  164. } else if (conn.getResponseCode() == HttpConnection.HTTP_NOT_FOUND) {
  165. midlet.showAlert("URL not found");
  166. } else {
  167. midlet.showAlert("Server busy or unavailable. Please try again later");
  168. }
  169. } catch (SecurityException sex) {
  170. midlet.showAlert("Connection failed. You need to authorize this application to access network");
  171. } catch (IOException ioex) {
  172. midlet.showAlert("Connection failed. Please try again later.");
  173. } catch (Exception e){
  174. midlet.showAlert(e.toString());
  175. e.printStackTrace();
  176. //midlet.display.setCurrent(midlet.form);
  177. } finally {
  178. try {
  179. if (is != null) {
  180. is.close();
  181. }
  182. if (conn != null) {
  183. conn.close();
  184. }
  185. } catch (IOException ioexception) {}
  186. is =null;
  187. conn =null;
  188. midlet.display.setCurrent(midlet.form);
  189. }
  190. }
  191. public String URLEncode(String s)
  192. {
  193. if (s!=null) {
  194. int i=0;
  195. try {
  196. while (true) {
  197. int b = (int)s.charAt(i++);
  198. if ((b>=0x30 && b<=0x39) || (b>=0x41 && b<=0x5A) || (b>=0x61 && b<=0x7A)) {
  199. tmp.append((char)b);
  200. }
  201. else {
  202. tmp.append("%");
  203. if (b <= 0xf) tmp.append("0");
  204. tmp.append(Integer.toHexString(b));
  205. }
  206. }
  207. }
  208. catch (Exception e) {}
  209. return tmp.toString();
  210. }
  211. return null;
  212. }
  213. }

The code requires mobile device which implements JSR-179 Location API and has been tested on Nokia E71 and 6210 Navigator.




Template by : kendhin x-template.blogspot.com by :