Kişisel Sayfaları
İlgi Alanları
İş Tecrubesi
Eğitim Geçmişi
Sertifikalar & Başarılar
Kullanıcıya ait test sonucu bulunmamaktadır.
Dil Becerileri
Son Forum Aktiviteleri
17smack geçmiş mesajları getirme
Chat uygulamasında arkadaş listesinden herhangi bir kişiye tıkladığımda tıkladığım kişi ile yaptığım daha önceki mesajlarıda sunucudan çekmek istiyorum. bunu nasıl yapabilirim?
xmpp gelen mesajı servis ile Activity'deki listboxa kaydet
Merhaba,
bir servis yazarak openfire server'den gelen mesajları alabiliyor, aldığım mesajları LogChat'te gösterip veritabanına kaydedebiliyorum. Fakat gelen mesajı MainActivity içinde yer alan listbox'a ekleyemiyorum. Bu ekleme işlemini nasıl yapabilirim.
hangi activity çalışıyor
uygulamamamızda iki adet activity, bir adet servis olduğunu varsayalım.
sürekli çalışan servis üzerinden hangi activty'nin çalıştığını algılayabilir miyiz (benim iki activitm'den birisi, ya da onların dışında başka bir activity), algılayabiliyorsak basit bir örnek verebilir misiniz?
bir activity'de hashtable'ye yaz başka bir activity'de oku
yaz.java'da aşakıdaki kodları çalıştırdığımızı varsayalım
[code]Hashtable<String, String> hashTable = new Hashtable<String, String>();
hashTable.put("key1", "value1");
hashTable.put("key2", "value2");[/code]
hashTable isimli değişkenini aşağıdaki kodların yer alacağı oku.java'da nasıl okuyabiliriz
[code]for (String key : hashTable.keySet()) {
Log.i("CALISMA_NOTU", key + "=" + hashTable.get(key));
}[/code]
iki aşamalı listview uygulamasında veriyi nerede tutmalıyım
İki ekranlı bir uygulamamız olduğunu,
ilk ekranda arkadaşların listelendiğini,
ikinci ekranda ilk ekranda üzerine tıklanan kişi ile yapılan yazışmaların listelendiğini,
herhangi bir web servis, yada openfire gibi bir sistemden mesajların anlık olarak geldiğini varsayalım.
Bu durumda anlık olarak gelen mesajları
her arkadaş için ayrı bir txt dosyasında tutmak mı,
her bir kaydı SQLite kaydetmek mi,
yoksa global bir hashtable tipinde bir değişkene mi yazdırmam doğru olur.
burada çalıştıracağımız platform android olacağı için en az rami, işlemciyi, enerjiyi kullanacak olan yöntem hangisi olur.
smack geçmiş mesajları getirme
Cevaplarınız için teşekkürler.
openfire bu işleri kendi başına halledemiyor mu?
xmpp gelen mesajı servis ile Activity'deki listboxa kaydet
Ne yazık ki işin içinden çıkamadım.... Eğer mümkünse kod üzerinde gösterirseniz çok sevinirim...
xmpp gelen mesajı servis ile Activity'deki listboxa kaydet
Cevabın için teşekkürler Ahmet,
ben android'de servis ve observe örneklerini ayrı ayrı projeler olarak çalıştırmama rağmen servis ile observe olayını birbirine bağlayamadım.
Aşağıda ZamanServisi.java içinde yer alan
[code]yardimci.post(new Runnable() {
@Override
public void run() {
Toast.makeText(ZamanServisi.this, sonuc, Toast.LENGTH_SHORT).show();
}
});[/code]
satırlarında olduğu gibi Toast kullanarak ekrana basmak yerine, AnaEtkinlik.java'da ki ListView'e nasıl satır ekletebiliriz.
Eğer projeyide indirmek isterseniz, projeyi internete yükleyebilirim.
AnaEtkinlik.java
----------------------------------------------------------
[code]package com.androidce.servisogreniyorum;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class AnaEtkinlik extends Activity
{
String deneme;
private String[] OrnekSatirlar = {"ornek satir 1", "ornek satir 2"};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.ana_etkinlik);
ListView listemiz=(ListView) findViewById(R.id.listView1);
ArrayAdapter<String> veriAdaptoru = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, android.R.id.text1, OrnekSatirlar);
listemiz.setAdapter(veriAdaptoru);
Button dugme = (Button) findViewById(R.id.dugmeServis);
if(servisCalisiyorMu())
{
dugme.setText(getString(R.string.durdur));
}
else
{
dugme.setText(getString(R.string.baslat));
}
}
private boolean servisCalisiyorMu()
{
ActivityManager servisYoneticisi = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for(RunningServiceInfo servis : servisYoneticisi.getRunningServices(Integer.MAX_VALUE))
{
if (getApplication().getPackageName().equals(servis.service.getPackageName()))
{
return true;
}
}
return false;
}
public void dugmeServisTikla(View v)
{
Button dugme = (Button) v;
if(servisCalisiyorMu())
{
stopService(new Intent(this, ZamanServisi.class));
dugme.setText(getString(R.string.baslat));
}
else
{
startService(new Intent(this, ZamanServisi.class));
dugme.setText(getString(R.string.durdur));
}
}
}[/code]
ZamanServisi.java
-----------------------------------------------------------
[code]package com.androidce.servisogreniyorum;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.widget.Toast;
public class ZamanServisi extends Service
{
Timer zamanlayici;
Handler yardimci;
final static long ZAMAN = 5000;
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public void onCreate()
{
super.onCreate();
zamanlayici = new Timer();
yardimci = new Handler(Looper.getMainLooper());
zamanlayici.scheduleAtFixedRate(new TimerTask()
{
@Override
public void run()
{
bilgiVer();
}
}, 0, ZAMAN);
}
private void bilgiVer()
{
long zaman = System.currentTimeMillis();
SimpleDateFormat bilgi = new SimpleDateFormat("dd MMMM yyyy, EEEE / HH:mm");
final String sonuc = bilgi.format(new Date(zaman));
yardimci.post(new Runnable()
{
@Override
public void run()
{
Toast.makeText(ZamanServisi.this, sonuc, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onDestroy()
{
zamanlayici.cancel();
super.onDestroy();
}
}[/code]
hangi activity çalışıyor
Teşekkürler,
önerdiğin kodu aşağıdaki biçimde düzenleyerek amacıma ulaştım.
[code]ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
return taskInfo.get(0).topActivity.getClassName().toString();[/code]
Bu kodları kullanırken AndroidManifest dosyasından
<uses-permission android:name="android.permission.GET_TASKS"/>
iznini vermek gerekmekte.
bir activity'de hashtable'ye yaz başka bir activity'de oku
Teşekkürler Ahmet,
önerilerin sonucunda aşağıdaki kodlar ile küçük bir örnek uygulama yazdım. İleride bu konuyu araştıranlara referans olması açısından aşağıdaki kodları paylaşıyorum...
ikinci_activity isminde yeni bir activity ve MainActivity'ye bir tane buton ekledim, MainActivity'nin create olayında hashMap'leri dolduruyorum, Butona tıklama olayında ise hashMap değerini ikinci_activity'ye gönderip ikinci_activity'yi açıyorum.
MainActivity kodları
[code]Log.i("CALISMA_NOTU", "MainActivity yüklendi");
final Intent intent = new Intent(MainActivity.this, ikinci_activity.class);
final HashMap<String, String> hmHashMap = new HashMap<String, String>();
hmHashMap.put("key1", "val1");
hmHashMap.put("key2", "val2");
Button btnActivityAc = (Button) findViewById(R.id.btnActivityAc);
btnActivityAc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<HashMap<String, String>> alGonderilecekVeri = new ArrayList<HashMap<String, String>>();
alGonderilecekVeri.add(hmHashMap);
intent.putExtra("arraylist", alGonderilecekVeri);
//startActivityForResult(intent, 500); //bu satır da çalışıyor.
startActivity(intent);
}
});[/code]
ikinci_activity kodları
[code]ArrayList<HashMap<String, String>> alGelenVeri = (ArrayList<HashMap<String, String>>) getIntent().getSerializableExtra("arraylist");
Log.i("CALISMA_NOTU", alGelenVeri.get(0).get("key1").toString());
for (String key : alGelenVeri.get(0).keySet()) {
Log.i("CALISMA_NOTU", key + "=" + alGelenVeri.get(0).get(key));
}[/code]