Android Service ile program kapalıyken işlem yapmak

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
Kullanıcı avatarı
RADCoder
Üye
Mesajlar: 129
Kayıt: 21 Ara 2013 04:03

Android Service ile program kapalıyken işlem yapmak

Mesaj gönderen RADCoder »

Merhabalar,
Merak etdiyim bir konuyu ele almak ve bilgilerinizden faydalanmak istiyorum.
Şimdi programımız için oluşturduğumuz service arka planda program kapalı olsa bile,
belirli zamanlarda yada kullanıcı tarafından belirlenen zaman içindeki işlemlerin gerçekleştirilmesi nasıl yapılır?
Service içinde bulunan birden fazla Service yöntemi vardır (Local, İntent vs.) bunlardan hangisi ele alınmalı ve nasıl bir yol izlenmelidir acaba?
Bu konu ile bilginiz var ise örnek yahut bilgilerinizi paylaşmanızı rica ediyorum.
Herkese önceden teşükkür ediyor, işlerinizde kolaylık diliyorum..
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: Android Service ile program kapalıyken işlem yapmak

Mesaj gönderen fesiharslan »

Merhaba;
Zaten servisin amacı, uygulama kapalı bile olsa arka planda işlem yaptırmaktır.

Lokal, Intent Lokal, Remote ve Intent Remote olmak üzere 4 farklı Android Servis türü vardır.
İhtiyacınıza göre bu 4 servis türünden birini seçebilirsiniz.

Kısaca anlatacak olursak;
Lokal, yalnızca uygulama ile ilgili olan ve harici bir kaynak kullanmayacak servis türüdür.
Intent Lokal, Cihaz kaynaklarını (kamera, telefon rehberi, takvim vb) kullanabilir,
Remote ve Intent Remote ise Servisin çalıştığı sistemdeki diğer yüklü uygulamalar ile iletişime geçilebilir veri alış veriși yapabilir.
Kullanıcı avatarı
RADCoder
Üye
Mesajlar: 129
Kayıt: 21 Ara 2013 04:03

Re: Android Service ile program kapalıyken işlem yapmak

Mesaj gönderen RADCoder »

Cevabınız ve açıklamanız için teşekkür ederim.
Lcal Service ile ilgili bir kaç video bulunmakta. Ama ben istediyim gibi bir örnek bulamadım malesef.
En merak etdiyim işlem Androidin alarm işlemidir, benim kurduğum saatde formun gösterilmesi..
Böyle bir işlem için hangi yol izlenmelidir acaba?
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: Android Service ile program kapalıyken işlem yapmak

Mesaj gönderen fesiharslan »

Alarm örnek uygulaması için en doğru teknik Timer kullanmaktır. Timer nesnesinin OnTimer olayında tarih ve saat eşleştirmesi yaparsınız. Belirlediğiniz tarih ve saat (SQLite veri tabanına yazdırarak kontrol edebilirsiniz) şimdiki tarih ve saat ise formu göster veya diğer uygulamayı çalışır.
Bunun için Intent Remote Service servis türünü kullanmanız daha iyi olacaktır.
Kullanıcı avatarı
RADCoder
Üye
Mesajlar: 129
Kayıt: 21 Ara 2013 04:03

Re: Android Service ile program kapalıyken işlem yapmak

Mesaj gönderen RADCoder »

İlgileriniz ve dikkatinizden dolayı çok teşekkür ederim, bir örnek yapmaya çalıştım fakat Intent Remote Service'nin nasıl Başlatılacağını ve arka planda işlem göreceğini bulamadım. Local Service de olduğu gibi Start gibi bir eventi bulunmamakta. Onun yerine sanırım OnBind eventi ile çalıştırılması gerekmekte. Programı build yaptıktan sonra Ad Service dediyimiz zaman klasörü seçtiyimizde ek olarak birde .jar dosyası istiyor onuda çözemedim..
Tekrar bilgilendirdiyiniz için teşekkür ederim..
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: Android Service ile program kapalıyken işlem yapmak

Mesaj gönderen fesiharslan »

Öncelikle projenize servisi ekleyin (projet grup dosyasına sağ tuş ile add new project > other > android service).
Servis modülüne, gerekli servis kodlarını yazdıktan sonra Build etmeniz gerekiyor. Build ettikten sonra Add service kısmında ilgili .jar dosyaları görünecektir.
Kullanıcı avatarı
RADCoder
Üye
Mesajlar: 129
Kayıt: 21 Ara 2013 04:03

Re: Android Service ile program kapalıyken işlem yapmak

Mesaj gönderen RADCoder »

Merhabalar, Cevabınız için minnetdarım.
Bir kaç gündür bilgisayarımla başım dertde olduğu için cevap yazamadım.
Sorunun ilk adımlardan sıkıntı yaşamaktayım, Söz konusu Intent Remote Service oluşturduğumda servisin nasıl start edeceğimle ilgili bir döküman ve ya demo bulamadım. Her yerde Local Service ile ilgili örnekler bulunmakta. Bu sebeple yerimde saymaktayım.
Bu konu ile ilgili arkadaşların böyle bir örnekle karşılaşması durumunda burdan link paylaşırsalar çok iyi olur, konu ile ilgilenmekte olan kişilerinde yardım almasına versile olur.
Tekrar teşekkürler..
bilrax
Üye
Mesajlar: 31
Kayıt: 17 Nis 2016 01:29

Re: Android Service ile program kapalıyken işlem yapmak

Mesaj gönderen bilrax »

bende 3 5 gündür uğraşıyorum ama remote service de StartService parametresi yok OnConnected ile denedim ama bende pek başarılı olamadım.. ben tekrar local service yötemine dönüp ordan ilerlemeyi deneyeceğim.. remote servis ile bu şekilde ilerlemek zor gibi gözüküyor..

Kod: Tümünü seç

procedure TMyAndroid.SpeedButton1Click(Sender: TObject);
begin
 FRemoteService := TRemoteServiceConnection.Create;
 FRemoteService.OnConnected :=  OnServiceConnected;


 // FLocalService := TLocalServiceConnection;
 // FLocalService.StartService('RemoteService');
end;

procedure TMyAndroid.OnServiceConnected(const ServiceMessenger: JMessenger);
begin
  SpeedButton1.Enabled := True;
end;
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Android Service ile program kapalıyken işlem yapmak

Mesaj gönderen Lord_Ares »

Konuyu hortlatmış olabilirim ama görünce bu konulardaki en büyük derdimizi dile getirmek istedim. Hevesle birşey öğrenmek istediğinizde malesefki kaynak epey dert. Android geliştirme ile ilgili kitap dahi aldım, malesef ki bu konular içinde yok. Forumlarda sorsak kötü niyetli uygulama yazılacak sanıp paylaşım yapılmıyor. Bazı forumlar ise malesef ki seviye tespitine göre konuya erişim hakkı veriyor. Eğer puanınız yetmiyorsa o konuyu okuyamıyorsunuz bile ( Belki iyi bir programcısınız ama yeni uye oldun puanın yok gelde oku ). Dolayısı ile forumlardaki soruları takip edip birşeyler öğrenmeye çalışmak tamamen hayal.. Peki biz nereden öğrenicez :))) Emeğinize teşekkürler yanlış anlaşıldı veya kırdıysam özür dilerim.
Cevapla