Konuyu Oyla:
  • Derecelendirme: 3/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi 10.3 Android Servis Çalışma Sorunu
#1
(17-12-2018, Saat: 08:29)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
Delphi 10.3 sürümü için yayınlanan düzeltme paketlerini bir başlık altında toplayarak, bu kapsamda yaşanan sorunların çözümünü hızlandırmış olalım.
Not: Tüm eklenti ve yamalar lisanslı kullanıcılar içindir.

1-Eksik dosyalar
Eksik bazı Java dosyaları, DUnitX'in çalıştırılması sırasında eksik dosya hataları  ve bunlardan kaynaklı sorunların çözümünü sağlar.
Yayınlanma Tarihi: 05.12.2018
Yama LinkiLinkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. (Id:30869)

2- RADServer veri tabanı taşıma yaması
RADServer sunucu lisans sahipleri, mevcut veri tabanlarını yeni süreme otomatik geçirebiliyorlardı. Bu araç ile ilgili bir düzeltme paketidir.
Yayınlanma Tarihi: 14.12.2018
Yama LinkiLinkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. (Id: 30871)

3- RAD Studio IDE Yaması
Windows Apps üzerinde yayınlamak için oluşturulan UWP dosyası oluşturma sırasındaki konfigürasyon eksiklikleri,
C ++ proje ayarlarındaki tanımlama eksiklikleri
Data Explorer üzerinde,  DBExpress ile yapılan veri tabanı bağlantılarında, çalışma anında oluşan DBExpress Enterprise "sürücü bulunamadı" hatasının giderilmesi
Android NDK yanlış yapılandırma hatalarının düzeltilmesini kapsayan bir düzeltme paketidir.
Yayınlanma Tarihi: 14.12.2018
Yama LinkiLinkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. (Id: 30870)

Farkettiğim bir durum mevcut. Android üzerinden servis yazınca çalışmıyor ama 10.2 ile deneyince (aynı kodlar ve aynı proje dosyaları ile) servis çalışıyor durumda. Ayrıca emülatör desteği halen mevcut 10.3 ile emülatör yardımıyla uygulama testi yapıyorum.
Yazılım Topluluğumuz -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Kişisel Tanıtım Sitem -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
19 y/o, sadece öğrenmeye odaklanmış, insancık..
WWW
Cevapla
#2
(17-12-2018, Saat: 11:18)Halil Han Badem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(17-12-2018, Saat: 08:29)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
Delphi 10.3 sürümü için yayınlanan düzeltme paketlerini bir başlık altında toplayarak, bu kapsamda yaşanan sorunların çözümünü hızlandırmış olalım.
Not: Tüm eklenti ve yamalar lisanslı kullanıcılar içindir.

1-Eksik dosyalar
Eksik bazı Java dosyaları, DUnitX'in çalıştırılması sırasında eksik dosya hataları  ve bunlardan kaynaklı sorunların çözümünü sağlar.
Yayınlanma Tarihi: 05.12.2018
Yama LinkiLinkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. (Id:30869)

2- RADServer veri tabanı taşıma yaması
RADServer sunucu lisans sahipleri, mevcut veri tabanlarını yeni süreme otomatik geçirebiliyorlardı. Bu araç ile ilgili bir düzeltme paketidir.
Yayınlanma Tarihi: 14.12.2018
Yama LinkiLinkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. (Id: 30871)

3- RAD Studio IDE Yaması
Windows Apps üzerinde yayınlamak için oluşturulan UWP dosyası oluşturma sırasındaki konfigürasyon eksiklikleri,
C ++ proje ayarlarındaki tanımlama eksiklikleri
Data Explorer üzerinde,  DBExpress ile yapılan veri tabanı bağlantılarında, çalışma anında oluşan DBExpress Enterprise "sürücü bulunamadı" hatasının giderilmesi
Android NDK yanlış yapılandırma hatalarının düzeltilmesini kapsayan bir düzeltme paketidir.
Yayınlanma Tarihi: 14.12.2018
Yama LinkiLinkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. (Id: 30870)

Farkettiğim bir durum mevcut. Android üzerinden servis yazınca çalışmıyor ama 10.2 ile deneyince (aynı kodlar ve aynı proje dosyaları ile) servis çalışıyor durumda. Ayrıca emülatör desteği halen mevcut 10.3 ile emülatör yardımıyla uygulama testi yapıyorum.

Yeni sürümde Android Service için şu yolları takip etmek sorunu çözebilir (Servisin .jar dosyası bir önceki Java SDK ve Delphi konfigürasyonları ile hazırlandığı için).
1- Project Manager penceresinde, ana projenin Libraries klasörü üzerinde sağ tuş ile Revert System Files to Default menüsünü seçerek yeni SDK'ların tanınmasını sağlayın.
2- Aynı pencerede Android hedef platformu üzerinde sağ tuş ile Remove Android Services menüsünü seçin. 
3- Libraries'ten servise ait .jar dosyasını çıkardı ise sorun yok. Çıkarmamış ise manuel olarak seçip Remove From Project ile projeden çıkarın.
4- Servis oluşturma sırasında ana projeye eklenen unit otomatik kaldırılmadı ise manuel olarak bu unit'i ana projenizden çıkarın. 
5- Ana proje servisten bağımsız hale geldikten sonra Deployment penceresinden, Revert to Default butonuna tıklayın. Açılan pencerede Revert for all configurations and platforms seçeneğini işaretleyin, Keep added files seçeneğini kaldırın ve OK butonu ile temiz bir deployment oluşturun.
6- Projeyi Celan ile önceki derlenmiş artık dosyalardan temizleyin.
7- Önceki servis projenizi de Clean ile atık dosyalardan temizleyin.
8- Servis ve Ana proje klasörlerini gözle de kontrol edin, kalan eski derlenmiş dosya ve klasörleri silin.
9- Servis projesini Build ile derleyin.
10- Ana projede, Android platformu üzerinde sağ tuş ile Add Android Service menüsünü seçin ve servis projesini yeniden ana projeye ekleyin.
Uygulamayı çalıştırıp, test edin.

Daha önce Delphi 10.1 Berlin ile geliştirdiğim bir Android Service uygulamasını, yukarıdaki işlem adımlarını uygulayarak, Delphi 10.3 Rio ile çalıştırdım.

android.jpg

Not: Embarcadero, Delphi 10.3 Rio sürümü ile birlikte Emulatorler için destek vermeyeceğini/desteklemediğini açıkladı. Gerçek cihazlara yakın tüm Emulatorlerde çalışabilir. Ben de ücretsiz dağıtılan ve çok hızlı olan (fiziksel cihazdan daha hızlı) Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.'ı kullanıyorum.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
(17-12-2018, Saat: 15:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(17-12-2018, Saat: 11:18)Halil Han Badem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Farkettiğim bir durum mevcut. Android üzerinden servis yazınca çalışmıyor ama 10.2 ile deneyince (aynı kodlar ve aynı proje dosyaları ile) servis çalışıyor durumda. Ayrıca emülatör desteği halen mevcut 10.3 ile emülatör yardımıyla uygulama testi yapıyorum.

Yeni sürümde Android Service için şu yolları takip etmek sorunu çözebilir (Servisin .jar dosyası bir önceki Java SDK ve Delphi konfigürasyonları ile hazırlandığı için).
1- Project Manager penceresinde, ana projenin Libraries klasörü üzerinde sağ tuş ile Revert System Files to Default menüsünü seçerek yeni SDK'ların tanınmasını sağlayın.
2- Aynı pencerede Android hedef platformu üzerinde sağ tuş ile Remove Android Services menüsünü seçin. 
3- Libraries'ten servise ait .jar dosyasını çıkardı ise sorun yok. Çıkarmamış ise manuel olarak seçip Remove From Project ile projeden çıkarın.
4- Servis oluşturma sırasında ana projeye eklenen unit otomatik kaldırılmadı ise manuel olarak bu unit'i ana projenizden çıkarın. 
5- Ana proje servisten bağımsız hale geldikten sonra Deployment penceresinden, Revert to Default butonuna tıklayın. Açılan pencerede Revert for all configurations and platforms seçeneğini işaretleyin, Keep added files seçeneğini kaldırın ve OK butonu ile temiz bir deployment oluşturun.
6- Projeyi Celan ile önceki derlenmiş artık dosyalardan temizleyin.
7- Önceki servis projenizi de Clean ile atık dosyalardan temizleyin.
8- Servis ve Ana proje klasörlerini gözle de kontrol edin, kalan eski derlenmiş dosya ve klasörleri silin.
9- Servis projesini Build ile derleyin.
10- Ana projede, Android platformu üzerinde sağ tuş ile Add Android Service menüsünü seçin ve servis projesini yeniden ana projeye ekleyin.
Uygulamayı çalıştırıp, test edin.

Daha önce Delphi 10.1 Berlin ile geliştirdiğim bir Android Service uygulamasını, yukarıdaki işlem adımlarını uygulayarak, Delphi 10.3 Rio ile çalıştırdım.

android.jpg

Not: Embarcadero, Delphi 10.3 Rio sürümü ile birlikte Emulatorler için destek vermeyeceğini/desteklemediğini açıkladı. Gerçek cihazlara yakın tüm Emulatorlerde çalışabilir. Ben de ücretsiz dağıtılan ve çok hızlı olan (fiziksel cihazdan daha hızlı) Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.'ı kullanıyorum.

Anlatımınız için çok teşekkür ederim hocam. Bende Nox kullanıyorum ve 10.3'te gayet güzel çalışıyor.
Yazılım Topluluğumuz -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Kişisel Tanıtım Sitem -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
19 y/o, sadece öğrenmeye odaklanmış, insancık..
WWW
Cevapla
#4
Merhaba,

10.3 te bir local servis oluşturdum.

Ayrı bir iş parçacığında 10 saniye de bir bildirim gönderen bir thread ayarladım.
    
TThreadDeneme = class(TThread)
   private
   public
       procedure Execute; override;
   end;

procedure TThreadDeneme.Execute;
var
    MyNotification: TNotification;
begin
    while not Terminated do
    begin
        try
            MyNotification := DM.NotificationCenter1.CreateNotification;
            try
                MyNotification.Name := 'NAME';
                MyNotification.Title := DateTimeToStr(Now);
                MyNotification.AlertBody := 'BODY';
                MyNotification.FireDate := IncSecond(Now, 1);
                DM.NotificationCenter1.ScheduleNotification(MyNotification);

            finally
                MyNotification.free;
            end;
        except on E: Exception do
            begin
                MyNotification := DM.NotificationCenter1.CreateNotification;
                try
                    MyNotification.Name := 'NAME';
                    MyNotification.Title := DateTimeToStr(Now);
                    MyNotification.AlertBody := E.Message;
                    MyNotification.FireDate := IncSecond(Now, 1);
                    DM.NotificationCenter1.ScheduleNotification(MyNotification);

                finally
                    MyNotification.free;
                end;

            end;
        end;

        Sleep(10000);
    end;
end;

Daha sonra bunu AndroidServiceStartCommand olayında çalıştırdım
function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer;
var
   Deneme: TThreadDeneme;
begin
   Result := TJService.JavaClass.START_STICKY;

   Deneme := TThreadDeneme.Create;
   Deneme.FreeOnTerminate := True;
   Deneme.Start;
end;

Gerekli işlemleri yapıp telefona yükledim.
Uygulama açık iken bildirimler geliyor ancak kapatıldığında gelmeye devam etmiyor.
Ayarlardan bakınca 1 hizmet çalışıyor gözüküyor.
Yapılması gereken ek bir işlem var mı yada sorun nedir ?

Teşekkürler
Cevapla
#5
(19-10-2019, Saat: 10:33)malitutuncu Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,

10.3 te bir local servis oluşturdum.

Ayrı bir iş parçacığında 10 saniye de bir bildirim gönderen bir thread ayarladım.
    
TThreadDeneme = class(TThread)
   private
   public
       procedure Execute; override;
   end;

procedure TThreadDeneme.Execute;
var
    MyNotification: TNotification;
begin
    while not Terminated do
    begin
        try
            MyNotification := DM.NotificationCenter1.CreateNotification;
            try
                MyNotification.Name := 'NAME';
                MyNotification.Title := DateTimeToStr(Now);
                MyNotification.AlertBody := 'BODY';
                MyNotification.FireDate := IncSecond(Now, 1);
                DM.NotificationCenter1.ScheduleNotification(MyNotification);

            finally
                MyNotification.free;
            end;
        except on E: Exception do
            begin
                MyNotification := DM.NotificationCenter1.CreateNotification;
                try
                    MyNotification.Name := 'NAME';
                    MyNotification.Title := DateTimeToStr(Now);
                    MyNotification.AlertBody := E.Message;
                    MyNotification.FireDate := IncSecond(Now, 1);
                    DM.NotificationCenter1.ScheduleNotification(MyNotification);

                finally
                    MyNotification.free;
                end;

            end;
        end;

        Sleep(10000);
    end;
end;

Daha sonra bunu AndroidServiceStartCommand olayında çalıştırdım
function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer;
var
   Deneme: TThreadDeneme;
begin
   Result := TJService.JavaClass.START_STICKY;

   Deneme := TThreadDeneme.Create;
   Deneme.FreeOnTerminate := True;
   Deneme.Start;
end;

Gerekli işlemleri yapıp telefona yükledim.
Uygulama açık iken bildirimler geliyor ancak kapatıldığında gelmeye devam etmiyor.
Ayarlardan bakınca 1 hizmet çalışıyor gözüküyor.
Yapılması gereken ek bir işlem var mı yada sorun nedir ?

Teşekkürler

Merhaba,
Bu durum ile çok uğraştım sonradan "vay anasını böylemiymiş" demiştim. 
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. üzerinden bir kod parçacığı mevcut. Until ile sürekli kontrolünü elde ediyoruz. 


unit AndroidServiceMethod;

interface

uses
System.SysUtils,
System.Classes;

procedure ServiceLoop(const MilliSec: Cardinal; ProcedureName: TProc);

implementation

procedure ServiceLoop(const MilliSec: Cardinal; ProcedureName: TProc);
begin
 TThread.CreateAnonymousThread(
procedure()
var
  A: Boolean;
  begin
    A := False;
    Repeat
     begin
     Sleep(MilliSec);
           ProcedureName;
     end;
    Until A = True;
  end).Start;
end;
end.

unit Unit1;
interface
uses
System.SysUtils,
System.Classes,
System.Android.Service,
AndroidApi.JNI.GraphicsContentViewText,
Androidapi.JNI.Os, AndroidServiceMethod;
type
TDM = class(TAndroidService)
procedure AndroidServiceCreate(Sender: TObject);
function AndroidServiceStartCommand(const Sender: TObject;
const Intent: JIntent; Flags, StartId: Integer): Integer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DM: TDM;
implementation
{%CLASSGROUP 'FMX.Controls.TControl'}
{$R *.dfm}
procedure TDM.Notification_Push;
begin
///Siz sadece gerekli kodları buraya yazıp gerisini yukarıdaki kod ve Create kodunda bulunan tanımlamaya bırakınız.
end;
procedure TDM.AndroidServiceCreate(Sender: TObject);
begin
AndroidServiceMethod.ServiceLoop(Notification_Push)
end;
function TDM.AndroidServiceStartCommand(const Sender: TObject;
const Intent: JIntent; Flags, StartId: Integer): Integer;
begin
Result := TJService.JavaClass.START_STICKY;
end;
end.

İlgili konu: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

İyi çalışmalar.
Yazılım Topluluğumuz -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Kişisel Tanıtım Sitem -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
19 y/o, sadece öğrenmeye odaklanmış, insancık..
WWW
Cevapla
#6
Hocam aynı uygulamayı kapattigim da bildirim kesiliyor, ancak uygulama yöneticisinden bakınca servis çalışıyor gözüküyor
Cevapla
#7
(19-10-2019, Saat: 14:47)malitutuncu Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Hocam aynı uygulamayı kapattigim da bildirim kesiliyor,  ancak uygulama yöneticisinden bakınca servis çalışıyor gözüküyor

En iyisi örnek proje hazırlayayım hocam. Dediğim gibi çok kanser bir olay Smile
Örneği bu haftasonu hazırlar paylaşırım.
Yazılım Topluluğumuz -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Kişisel Tanıtım Sitem -> Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
19 y/o, sadece öğrenmeye odaklanmış, insancık..
WWW
Cevapla
#8
10.3.2 çalışan örnek 10 saniyede bir notification atar. Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#9
(19-10-2019, Saat: 19:09)Halil Han Badem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(19-10-2019, Saat: 14:47)malitutuncu Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Hocam aynı uygulamayı kapattigim da bildirim kesiliyor,  ancak uygulama yöneticisinden bakınca servis çalışıyor gözüküyor

En iyisi örnek proje hazırlayayım hocam. Dediğim gibi çok kanser bir olay Smile
Örneği bu haftasonu hazırlar paylaşırım.

Tamamdır hocam, teşekkürler =)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Android SDK Manager Güncellemeleri dnzmobile 11 1.990 29-09-2019, Saat: 20:58
Son Yorum: serdar
  Delphi fmx ile Play store uygulama içi satın alma işlemi crowlin 2 183 27-09-2019, Saat: 23:07
Son Yorum: crowlin
  Delphi FMX Server kullanımı mfb23 4 235 27-09-2019, Saat: 14:03
Son Yorum: Halil Han Badem
  Android 7 - android 9 cihankoca 10 391 26-09-2019, Saat: 11:49
Son Yorum: cihankoca
  Android read_contacts izini sorunu [COZULDU] codder71 3 189 25-09-2019, Saat: 22:32
Son Yorum: codder71



Konuyu Okuyanlar: 1 Ziyaretçi