Btgunluk.com
Kişisel bir bilişim blogu
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
kemal can, 21.06.2016 21:05:21
Admin, 18.07.2016 07:34:43
Abdullah, 04.03.2017 23:26:58
İsimsiz, 07.03.2017 06:11:00
hakan kvk, 10.08.2022 14:14:13
Yazı hakkında yorum yapmak için, buraya tıklayın.
Kategoriler :
- Bilişim (52)
- C Sharp (1)
- Delphi (44)
- Duyuru (8)
- Excel (8)
- Fıkralar (9)
- Flash (2)
- Javascript (3)
- Kategorisiz (2)
- Kıssa'dan Hisse (5)
- Php (20)
- Program Tanıtımı (1)
- Python (2)
Arşiv :
- Kasım 2008 (11)
- Ekim 2010 (6)
- Kasım 2010 (11)
- Aralık 2010 (3)
- Ocak 2011 (2)
- Mayıs 2011 (1)
- Temmuz 2011 (4)
- Ağustos 2011 (10)
- Ekim 2011 (2)
- Ocak 2012 (2)
- Şubat 2012 (1)
- Mart 2012 (1)
- Nisan 2012 (3)
- Haziran 2012 (2)
- Temmuz 2012 (1)
- Ağustos 2012 (1)
- Kasım 2012 (1)
- Mart 2013 (1)
- Mayıs 2013 (1)
- Temmuz 2013 (1)
- Ekim 2013 (2)
- Kasım 2013 (2)
- Şubat 2014 (1)
- Ekim 2014 (1)
- Kasım 2014 (3)
- Şubat 2015 (1)
- Ağustos 2015 (3)
- Eylül 2015 (1)
- Ekim 2015 (1)
- Ocak 2016 (3)
- Nisan 2016 (1)
- Ekim 2016 (1)
- Aralık 2016 (8)
- Ocak 2017 (27)
- Şubat 2017 (1)
- Haziran 2017 (1)
- Eylül 2017 (1)
- Kasım 2017 (1)
- Ocak 2018 (2)
- Temmuz 2018 (2)
- Kasım 2018 (1)
- Aralık 2018 (1)
- Şubat 2019 (1)
- Ağustos 2019 (2)
- Aralık 2019 (1)
- Ocak 2020 (1)
- Nisan 2020 (10)
- Kasım 2020 (1)
- Aralık 2020 (1)
- Ocak 2021 (1)
- Mayıs 2022 (1)
- Kasım 2022 (1)
- Mart 2023 (1)
- Mayıs 2023 (2)
- Haziran 2023 (1)
- Ocak 2024 (2)
- Temmuz 2024 (1)
Etiketler :
- 3d acar baltas Android asp.net banana pi c sharp delphi fonksiyonları excel Firefox flash flowplayer ipucu opencv pascal pdf php fonksiyonları python super pi ttnet veritabanı video visual studio Windows word