Yangi mobil messenger "So'z"

«Gap»lar rivojlanayotgan bir davrda men ham messenjer yozishga bir nazar tashlab ko`ray dedim va biroz izlanishlar olib bordim. Bu postda aynan shu haqida sizlar bilan ulashmoqchiman.

e`tiborni tortishi uchun rasm:)


Xo`sh messenjer o`zi nima u, qanday va nimalar bilan ishlaydi: hozirda tezkor xabar almashuvchi messenjer asosan bir nechta protokollarga asoslanib ishlaydi(shulardan men biladigan ko`p tarqalgani IM, Jabber). Tizim ikki qismdan server va klientdan iborat bo`ladi.

Men XMPP(yoki jabber)dan foydalanib android uchun sodda messenjer yozib ko`rdim va uni «So`z» deb nomladim(buyog`i endi davom etib ketaveradi gap, so`z, harf, g`iybat… :)). Yozilgan dastur yanada universalroq bo`lishi uchun uni istalgan XMPP serverga ulanish imkoni bo`lishiga harakat qildim va dasturni testlash davomida men muloqot.uz saytidan foydalandim. Ha muloqot.uz sayti ham foydalanuvchilar o`rtasida xabar almashish uchun XMPPdan foydalanishadi.

XMPPni androidda ishlatish uchun men asmack kutubxonasidan foydalandim. asmack smack kutubxonasining android uchun moslab yozilgani . Messenjerimizni yozish uchun asmack kutubxinasi JAR faylini projectimizdagi libs katalogiga tashlab qoyamiz va projectimizning Preference oynasini ochib Build path bo`limiga o`tib libraries qismiga ham qo`shib qoyamiz. E`tibor bering har qanday JAR faylli kutubxonani import qilganimizda har xil ko`ngilsizliklardan qochish uchun uni projectdagi libs katalogiga tashlab qoyganingiz ma`qul.

Avvalo XMPPconnectionni amalga oshirib olamiz
ConnectionConfiguration cc = new ConnectionConfiguration(host,Integer.parseInt(port), service);
XMPPConnection connection = new XMPPConnection(host);
connection.connect();
// foydalanuvchi ma`lumotlarini kiritib LOGINni amalga oshirish
connection.login(username, password);


Ana endi biz aloqadamiz. asmack kutubxonasi yaratib bergan imkoniyatlar tufayli biz yaratgan connectionimizga ChatListener o`rnatib qo`ysak undagi funksiyalar xabar server bilan o`rtada ko`prik vazifasini bajarib beradi.

Xabar qabul qilish


connection.getChatManager().addChatListener(
	new ChatManagerListener() {
	@Override
	public void chatCreated(Chat chat,boolean createdLocally) {
		if (!createdLocally) {
		// yangi chatListener yaratamiz
		chat.addMessageListener(new MessageListener() {

		@Override
		public void processMessage(Chat chat,Message message) {
		// agar xabar bo`sh bo`lmasa xabar bo`sh bo`lishi ham mumkin, masalan suhbatdosh matnni 
                // yozayotgan paytta NULL xabar kelib turadi shunda suhbatdosh yozayotganmligini ham bilish         
                // mumkin
		if (message.getBody() != null) {
                    // kelgan xabarni kerakli ma`lumotlarini olib messageList ga qo`shamiz
           	    messages.add(StringUtils.parseBareAddress(message.getFrom())+ ":\n"	+ message.getBody());
		    // ListViewni qayta sozlaymiz
		    mHandler.post(new Runnable() {
			public void run() {
                            setListAdapter();
                       }
        	    });
		}
	    }
        });
    }
}
});


Yuqoridagi kod xabar kelishini eshitib turish uchun yozilgan, xabar kelishi bilan uni xabarlar listiga qo`shib qo`yadi.

Xabar yuborish.


Xabarlarni yuborishda, yuborish tugmasi bosilganda xabar maydoniga yozilgan matnni ko`rsatilgan suhbatdoshga Message obyekti orqali yuborish kifoya
// Xabarni yuborish uchun Message qutisiga kerakli ma`lumotlarni yozib
Message msg = new Message(recipient, Message.Type.chat);
msg.setBody(text);
// uni yuboramiz
connection.sendPacket(msg);

// yuborilgan xabarni Arraylisttga qo`yib qoyamiz
messages.add(connection.getUser() + ":\n" + text);
Log.d("So`z", msg.getBody() + " " + msg.getTo());
mHandler.post(new Runnable() {
    public void run() {
	// arraylistni Adapter bilan ListViewga biriktiramiz
	setListAdapter();
	}
});


Dasturning asosiy kodlari shulardan iborat. Ko`rib turganingizdek bu unchalik qiyin emas. Fqat endi bu dasturni sal kengaytirish qoldi xolos. Quyida dastur kodi biriktirilgan bo`lib siz unda bu yerda yozilmagan bir mechta kichik dunksiyalarni ko`rishingiz mumkin: masalan yuborilayotgan xabarni va suhbatdoshni ko`rsatilganligini tekshirish va shunga o`xshagan.

Dastur ishlashi uchun Manifest faylga internetdan foydalanish uchun ruxsat so`rash kifoya
<uses-permission android:name="android.permission.INTERNET" />


Keltirilgan maqola va kod to`grisida fikr va mulohazalaringiz men uchun juda ham muhim.

Dastur va dastur kodi buyerda.

5 комментариев

ruslanmedia
Zo‘r bo‘libdiku. Normalniroq jabber app qidirib yurgandim. Muloqotga kirish uchun. Ana bo‘lmasam :) Rahmat
0
ruslanmedia
Kontaktlar yo‘q ekanda a :)
0
geniuz
bu eksperiment urganuvchi appku :)
san luchshe xabber ishlat
0