Delphi Xe8 ile Android Uygulaması Geliştirme-2

Önceki yazımızda Delphi Xe8 ile bir Android uygulamasının tasarımını yapmıştık. Bu yazıda uygulamamızı çalışır hale getiriyoruz.

Uygulamamızın bu aşamasında, kullanıcının TMemo’ya girdiği bilgileri bir metin(text) dosyasına kaydettireceğiz. Ancak burada Android ile bilinmesi gereken şeyler var. Android Linux tabanlı bir sistem olduğundan, sizin uygulamanızın sadece belli klasörlere erişme izni vardır. Dolayısıyla bizim dosyamızı buraya kaydetmemiz lazım. Bu özel klasörü kullanabilmek için F12’ye basıp kod kısmına giriyoruz ve 8. satıra System.IOUtils ifadesini ekliyoruz. Artık TPath.GetDocumentsPath+PathDelim ifadesi ile kaydetme işlemini yapabileceğimiz klasöre ulaşabileceğiz.(kaynak) Şimdi Kaydet düğmesini çift tıklayarak TMemo’daki bilgilerin notlar.txt dosyasına kaydedilmesini sağlayan aşağıdaki kodları yazalım.

procedure TForm1.Button2Click(Sender: TObject);
var
  yol: string;
begin
  yol:=TPath.GetDocumentsPath+PathDelim+'notal.txt';
  Memo1.Lines.SaveToFile(yol)
end;

Uygulamamız şu an Windows’ta çalıştığından notal.txt C:UsersKullaniciAdiDocuments klasörüne kaydedilecektir.

Bu kaydedilen notların, uygulama açıldığında tekrar TMemo bileşenine aktarılması gerek. Bu nedenle Formu seçtikten sonra(üstteki Panel1’i tıkladıktan sonra Esc tuşuna basarak formu seçebilirsiniz) Object Inspector’ın Events sekmesi seçilip OnCreate’in karşısı çift tıklanır.

 

Bu bölüme de aşağıdaki kodlar yazılır.

procedure TForm1.FormCreate(Sender: TObject);
var
  yol: string;
begin
  yol:=TPath.GetDocumentsPath+PathDelim+'notal.txt';
  if FileExists(yol) then
    memo1.Lines.LoadFromFile(yol);
end;

Aldığımız notları silmek istediğimizde kullanacağımız Sil düğmesine yazılacak kodlara geçmeden önce Android ile uygulama yazarken, kullanıcıdan onay olmak için kullandığımız mesaj yapısının farklı olduğunu hatırlatayım. Sil düğmesini çift tıkladıktan sonra aşağıdaki kodları yazıyoruz.

  MessageDlg('Kaydedilen notlar silinsin mi?', System.UITypes.TMsgDlgType.mtInformation,
  [
    System.UITypes.TMsgDlgBtn.mbYes,
    System.UITypes.TMsgDlgBtn.mbNo,
    System.UITypes.TMsgDlgBtn.mbCancel
  ], 0,
    procedure(const AResult: System.UITypes.TModalResult)
    begin
      case AResult of
        mrYES:
        begin
          if fileexists(TPath.GetDocumentsPath +PathDelim + 'notal.txt') then
            deletefile(TPath.GetDocumentsPath + PathDelim + 'notal.txt');
          memo1.Text:='';
        end;
        mrNo:
          ShowMessage('Dosya silinmedi.');
        mrCancel:
          //ShowMessage('İptal edildi');
      end;
    end);
end;

Son olarak, Çık(X) düğmesini çift tıklayarak, uygulamanın kapatılmasın sağlayan aşağıdaki kodu ekliyoruz.

procedure TForm1.Button3Click(Sender: TObject);
begin
  Close;
end;

Uygulamamız şu haliyle bir mobil uygulamadan çok, Windows programına benziyor. İstersek uygulamamızın görünümünü değiştirmemiz mümkün. Bunu yapabilmek için ilk paneli sağ tıklayıp Edit Custom Sytle komutunu veriyoruz.

Karşımıza gelen stil düzenleme penceresinden Load’ı tıklayıp C:Program Files (x86)EmbarcaderoStudio16.0RediststylesFmx klasöründeki AquaGraphite.style’ı seçiyoruz. Stil düzenleme penceresini Apply and Close’ı tıklayarak kapatıyoruz. Bu işlemi yaptığımızda forma bir tane TStyleBook bileşeninin otomatik olarak eklenecek ve formumuzun görüntüsü şu hale gelecek:

Eklediğiniz stillerin uygulamanızın çalışma performansını düşüreceğini unutmayın.

Uygulamamızı mobil bir cihaza kurduğumuzda bizden çeşitli izinler isteyecektir. Delphi Xe8 ile geliştirilen uygulamalar varsayılan olarak hemen hemen her türlü izini istemektedir. İstenen izinleri ayarlamak için Project Manager penceresinden NotAl sağ tıklanır, ekrana gelen menüden Options seçilir. Karşımıza gelen Project Options penceresinin sol tarafındaki User Permissions kısmını tıkladıktan sonra Read external strage’nin yanındaki haricindeki tüm check işaretlerini kaldırabilirsiniz.
 

Bazı durumlarda uygulamanız ile beraber çeşitli dosyaları da kullanıcının cihazına göndermek isteyebilirsiniz. Bu durumda Project menüsünden Deployment seçeneğini seçmeniz gerekir. Ekrana gelen penceredeki Add Files düğmesi ile istediğiniz dosyaları apk dosyasına ekleyebilirsiniz. Örneğin sifirikiyuzarasi.txt dosyasını uygulamanızla beraber cihaza göndermek istediğinizde Deploy penceresi şu şekilde görünecektir.

 

Burada TPath.GetDocumentsPath +PathDelim kodu ile dosyanın yoluna ulaşabilmek için Remote Path kısmına assetsinternal yazıldığına dikkat edin. Ayrıca unutmayın ki, ANSI’de kodlanmış da olsa, UTF-8 olarak da kodlanmış olsa, içinde Türkçe karakter içeren bir metin dosyasını Android cihaza gönderdiğinizde o dosyayı “no mapping for the Unicode character exists in the target multi-byte code page” hatası yüzünden açamayacaksınız. Metin dosyasındaki Türkçe karakterleri bu siteden kaldırabilirsiniz.

Uygulamamız artık apk olarak derlenmek için hazır. Delphi Xe8’de uygulamayı Android’de denemek için iki yöntem var. Birincisi bilgisayara kablo ile mobil cihaz bağlamak, ikinci de bir emülatör kullanmak. Biz bu yazıda ikinci yöntemi kullanacağız. Delphi Xe8’e nasıl bir emülatör kurulacağını şuradan görebilirsiniz.
 

Android emülatörünü oluşturduktan sonra, Android Avd Manager’i çalıştırıp, istenilen device’i seçip Start sonra da Launch seçilerek emülatörün açılmasını sağlıyoruz.


Benim bilgisayarımda(ssd diskli) device’ın kullanılabilir hale gelmesi 1 dakika 20 saniye sürüyor.
Hatırlıyorsanız uygulamayı daha hızlı derlendiği için Windows’ta denemiştik. Android derlemesi yapabilmek için Project Manager’da Android kısmını sağ tıklayıp Activate komutunu veriyoruz. Project Manager şu şekilde görülmeli:
 

 

Burada emülatörümüzü ifade eden SIM_4_4_2 (5554) ifadesinin yanında kırmızı bir çarpı görürseniz, Target kısmını sağ tıklayıp Refresh’i seçip emülatörünün çalıştığının algılanmasını sağlayabilirsiniz.


Programımızı apk haline getirmek için Run(F9) tuşuna basmamız yeterli. Oluşturulan apk otomatik olarak emülatöre gönderilip kurularak çalıştırılacaktır. Benim bilgisayarımda uygulamanın derlenmesi 56 saniye, emülatörde çalışır hale gelmesi 16 saniye sürdü.
 

Maalesef mobil uygulamanın en problemli kısmı bu emülatör kısmı. Emülatörler ikide birde bozuluyor, bazen uygulamayı çalıştıramıyor vs. vs.


Uygulamamız mobil cihaza yüklenmek için artık hazır. Peki apk dosyası nerede? Apk dosyası proje klasörünün altında yer alan AndroidDebugNotAlbin klasöründe NotAl.apk adıyla yer almakta. Bu dosyayı(6.74 MB) telefona kurarak uygulamayı deneyebilirsiniz.


Delphi Xe8 ile mobil uygulama geliştirirken, sadece Delphi’ye özgü kod özelliklerini mümkün olduğu kadar kullanmayın. Örneğin Delphi’de bir Ali değerini içeren tut isimli bir string değişken olsun. tut[2] ifadesi ile l harfine ulaşmak Delphi’de mümkün. Ancak uygulamayı Android için derlediğinizde bu ifadenin çalışmadığını göreceksiniz. Bu nedenle string içinden karakterlere ulaşma işlemlerini Copy fonksiyonu ile yapmanız gerekiyor.


Son olarak sadece mobil uygulama geliştirmek istiyorsanız, Embarcadero’ya ait Appmethod programı yardımıyla C++ ve Pascal ile daha uygun bir bedelle(yazının yazıldığı tarihte aylık 25$) uygulamalar oluşturabilirsiniz.

01.09.2015 10:02:51


Etiketler: Android, pascal

Yorumlar

Delphi XE8 de yapılmış olan NotAl.apk(verilen linkden indirdiğim) dosyasını BlueStack programıyla çalıştırmak istediğimde "Application does not support this device" mesajı vermekde ve program çalışmamaktadır. Konu hakkında bilgi lütfen. Ayrıca Delphi XE10.1 Berlin sürümüyle android programı yazmak istiyorum (Delphi diliyle ilgili epeyce bilgi sahibiyim-(uzman değilim)). XE10.1 i kurdukdan sonra hangi alt yapıyı oluşturmam gerekiyor. Bu konuda android programlamayı bilmeyen birisi için ne önerirsiniz.Bu konuda da değerli yardımarınız bekliyorum.

kemal can, 21.06.2016 21:05:21

Kemal Bey, Delphi ile yazılan apk'lar emülatörlerde sıkıntı yaratabiliyor. Bir cihaza yükleyerek uygulamayı deneyebilirsiniz. Android geliştirme yapabilmek için Delphi'yi kurduktan sonra cep telefonunuzun driver'larını bulmanızı tavsiye ederim. Uygulamaları emülatörle test etmek saç baş yolduracak kadar yavaş. Telefon driver'larını kurduktan sonra Delphi içinden uygulamayı cihazda deneyebilirsiniz. Zaten yazdığınız Android uygulamasının Win32 sürümü olduğundan hata ayıklama kısmını burada halledebilirsiniz, sadece uyumluluk sorunları için telefonunuzu kullanmanız gerekecek.

Admin, 18.07.2016 07:34:43

Paylaşmış olduğunuz dersten istifade ettim ve NotAl.apk dosyasını indirerek telefonuma kurdum fakat uygulama açılmadı. Telefon: S3 mini Android sürümü: 4.2.2; sürümle alakalı bir sorun olabilir mi siz hangi telefonlarda ve hangi sürümlerde denediniz. Yapacağımız uygulamalarda bu sürüm ayarlamalarını nasıl yapabiliriz tüm telefonlarda çalışmasını nasıl sağlayabiliriz. İlginizden ve yardımlarınızdan dolayı teşekkürler.

Abdullah, 04.03.2017 23:26:58

Abdullah Bey, ben uygulamayı Samsung Galaxy S3 Neo ve Lg G2'de denemiştim. S3 mini'nin ekranı Hd çözünürlükte değil, uygulama Hd çözünürlüğe göre hazırlandığından sıkıntı olmuş olabilir.

İsimsiz, 07.03.2017 06:11:00

bloglara yorum yapmak pek adetim değildir ama siz bu yorumu hak ettiniz. delphi 7 ve xe7 ye kısmen aşinayım, androide yeni başladım. uygulamamın daha birinci adımındayım;bir haftadır uygulama klasörüne resim ekleyip daha sonra image nesnesinde göstermeye çalışıyorum ama başaramadım. bugün pes etmek üzereydim veee sizi buldum. ilk adımı geçtim. daha 100 adım var belki ama en azından başladım. teşekkürler, iyi çalışmalar NOT: adım adım her ayrıntıyı yazmanız çözüme ulaşmamda yardımcı oldu. uses a eklenecek kod,remote path kısmındaki ayrıntı vs

hakan kvk, 10.08.2022 14:14:13


Yazı hakkında yorum yapmak için, buraya tıklayın.

Kategoriler :

Arşiv :

Etiketler :

Bağlantılar :