Android Diğer Uygulamanın Kullanım Süresini Çekmek
-
Kardeşlerim merhaba,
Benim bir sorunum var. Ben Android app de diğer uygulamaların bir telefondaki kullanım sürelerini çekmeye çalışıyorum. Bunun iki yolu normalde data sharing sekilde gözüküyor internette tam istediğim bu mu onu da bilmiyorum. Bu yollar ise şu şekilde; intent ve content provider ile oluyor. Ancak intent ile gerçekleştirilen karşı uygulamanın seninle shared ettiği image ya da textler çekebiliyorsun. Provider ise URI paylaşıyor ve onu belli süre kullandiriyor diye anladım.(content provider dan tam emin değilim)
Ancak benim istediğim mesela Twitter ne kadar kullanıldıysa kaç saat kullanıldıysa o datayı çekmek eğer bu data get işlemini bilenler varsa paylaşırsa sevinirim.
-
Up gelsin
-
selam,
api seviyen 21 in altındaysa o zaman getRunningTasks metodunu kullanabilirsin, ancak sonraki api seviyelerinde metod yürürlükten kaldırıldı güvenlik açığı oluşturacağı için.
Bunun yerine RunningAppProcessInfo metodunu kullanabilirsin
http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html
ancak sana zaman bilgsini vermiyor..
Ancak kendin bir listener yapabilirsin, böylece hangi uygulamanın ne kadar çalışıp çalışmadığını kontrol ettirebilirsin. Sonuçta elinde PID, package ismi gibi bilgiler olacak
buradaki video fikir verecektir..
http://www.itcuties.com/android/how-to-get-running-process-list-and-traffic-statistics/
bunun haricinde üsttekine ek olarak/harici olarak yapabileceğin bir yol daha var. API seviyesi 22 (5.1) ve sonrası için android.app.usage kullanabilirsin..
Bu sana geçmiş ile ilgili bilgi verecektir. Sqlite ile her app için bilgileri kaydedersin, buradan dönen bilgiler ile en son çalışma zamanı arasındaki farkı hesaplayıp toplam zamanı bulabilirsin.
şöyle ki; uygulama en son şu gün şu saatte çalışmış diyelim, bunu db ye kaydet, daha sonra uygulama kapandığında haberin olsun (en üstte verdiğim runningappprocessinfo), böylece uygulamanın kapandığını anlayabilirsin ve dbdeki son çalışma zamanı ile kapandığı zaman arasındaki farkı alıp çalışma zamanını bulup kaydedebilirsin.. Aynı şeyi altta verdiğim android.app.usage ile de son çalışma zamanını alabilirsin, ve bu class ın da bir eventi var..
burada bir örnek var https://github.com/googlesamples/android-AppUsageStatistics
bunun üzerinden gidebilirsin.
hem android.app.usage hem de RunningAppProcessInfo kullanarak iyi bir şekilde çözebilirsin. Biraz uğraştırıcı bir iş ama madem bir şey yapmak istiyorsun uğraşacaksın :)
kolay gelsin
-
Listener şeklinde yaparsa aktif wakelock oluşturmayacak mı?
better battery saver'daki watchdog yada monitoring kısmında vardı. pil kullanımını arttırabilir diye uyarı veriyor.
runningappprocessinfo il sürekli dinlemek gereksiz wakelock oluştururmu? uygulama fikrim var benimde :)
dip not: senin aradığın intent değil bence.
-
listener olmadan nasıl double way iletişim kurulur ki? her şeyin arkasında bu var hocam.. android in arkaplanda çalışan yığınla uygulaması var ve hepsin bu olay var, mesela mail geldiğinde nasıl haberin oluyor? ya da whatsapp dan biri yazdığında nasıl haberin oluyor? callback olması lazım.. uygulama arkaplanda çalışır ve dinler..
java için açık kaynak bir servis kütüphanesi var cometD.. http://cometd.org/documentation/cometd-java/client/subscription
bunu incelersen olayın mantığını daha iyi anlarsın, gayet başarılı çalışıyor, bunun .net wrapperini çalıştığım firmada kullanmıştık ve gayet performanslı çalışıyordu.. burdaki mantık da kanallar üzerinden hareket etmesi, böylece birden fazla kanal için farklı listenelerlar oluşturabilirsin
mesela bir kanal mesaj iletsin, diğer kanal resim, diğer kanal hataları..
mantık bu şekilde çalışır arkaplanda, kullanıcı hatta yazılımcı bilmez ama böyledir.
-
@unbalanced baba çok teşekkür ediyorum, saolasın. Burdan yürümeye çalışacağım :) bir sıkıntı olursa seni yine darlıyabilirim :)
@noktalıvirgül sana tekrar teşekkür ediyorum ayrıca.
-
java android user android data kullanım süresi datasını çekmek kullanıcı verilerini çekmek operating time data