Son Forum Aktiviteleri

17
Tümünü Gör

smack 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?

9 yıl 10 ay önce yanıtladın

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.

9 yıl 10 ay önce yanıtladın

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?

10 yıl önce yanıtladın

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]

10 yıl 1 ay önce yanıtladın

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.

10 yıl 1 ay önce yanıtladın

smack geçmiş mesajları getirme

28 Aralık 2014 tarihinde cevaplandı

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

09 Aralık 2014 tarihinde cevaplandı

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

08 Aralık 2014 tarihinde cevaplandı

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

09 Ekim 2014 tarihinde cevaplandı

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

02 Ekim 2014 tarihinde cevaplandı

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]