Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FireMonkey Android'in Resim Galerisi Nasıl Açılır?
#1
Selamün Aleyküm;

FireMonkey ile Android'in resim galerisi açılıp içinden nasıl resim çekilebilir? Ben internette şu örneği buldum:


var
Intent: JIntent;

begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setType(StringToJString('image/*'));
  Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  SharedActivity.startActivity(Intent);
end;

Bu Delphi kodunda hata SharedActivity'de. Yani SharedActivity dediğimde çıkmıyor, halbuki uses Androidapi.Helpers; eklemiştim.

C++ Kodu da Şöyle:

JIntent* intent;
intent->setAction(TJIntent::JavaClass->ACTION_VIEW);
intent->setType(StringToJString("image/*"));
intent->setFlags(TJIntent::JavaClass->FLAG_ACTIVITY_NEW_TASK);
SharedActivity()->startActivity(intent);

Bu koddaki sıkıntı ise bu kod tetiklendiğinde uygulama şu şekilde bir hata veriyor:
Screenshot_2016_09_21_18_21_20.png
İşin ilginci bunun Java kodu düzgün bir biçimde resim galerisini açıyor:
Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
intent.setType("image/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Bu hatayı nasıl düzeltebilirim? Daha doğrusu bu hata neyden kaynaklanıyor? FireMonkey'de resim galerinden resim açmayı nasıl yapabilirim?
Teşekkürler.
Cevapla
#2
Merhaba,
Çok basit Tek satır kod ile yapabilirsiniz.

  1. Galeriden seçim yapmanızı sağlayacak bir buton ve bir Image nesnesini form üzerine yerleştirin.
  2. Form'a ayrıca bir adet ActionList yerleştirin.
  3. ActionList'i çift tıklayıp, editörün açılmasını sağlayın.
  4. New Action butonu ile New Standart Action menüsünü seçin.
  5. Media Library kısımdan TakePhotoFromLibraryAction'u seçin ve Ok butonuna tıklayın. Son olarak editörü kapatın.
  6. Button'u seçin ve Object Inspector'dan butonun Action özelliğinde TakePhotoFromLibraryAction1'i seçin.
  7. Yine butonun Object Inspector'dan Event sekmesine geçin ve Action event'i içerisindeki OnDidFinishTaking olayını çift tıklayın.
  8. Kod editörüne aşağıdaki tek satırlık kodu yazarak test edin.

Image1.MultiResBitmap.Items[0].Bitmap.Assign(Image);

Ekran görüntüsü

P91i5Tl.gif

İyi çalışmalar...
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
Teşekkürler. Bu Delphi'de istediğim gibi çalışıyor lakin aynısını C++ Builder'da denedim orada çalışmıyor:
2016_09_21_19_42_15.gif

Sebebi ne olabilir?
Cevapla
#4
(21-09-2016, Saat: 18:26)İbrahim Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSelamün Aleyküm;

FireMonkey ile Android'in resim galerisi açılıp içinden nasıl resim çekilebilir? Ben internette şu örneği buldum:


var
Intent: JIntent;

begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setType(StringToJString('image/*'));
  Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  SharedActivity.startActivity(Intent);
end;

Bu Delphi kodunda hata SharedActivity'de. Yani SharedActivity dediğimde çıkmıyor, halbuki uses Androidapi.Helpers; eklemiştim.

C++ Kodu da Şöyle:

JIntent* intent;
intent->setAction(TJIntent::JavaClass->ACTION_VIEW);
intent->setType(StringToJString("image/*"));
intent->setFlags(TJIntent::JavaClass->FLAG_ACTIVITY_NEW_TASK);
SharedActivity()->startActivity(intent);

Bu koddaki sıkıntı ise bu kod tetiklendiğinde uygulama şu şekilde bir hata veriyor:
Screenshot_2016_09_21_18_21_20.png
İşin ilginci bunun Java kodu düzgün bir biçimde resim galerisini açıyor:
Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
intent.setType("image/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Bu hatayı nasıl düzeltebilirim? Daha doğrusu bu hata neyden kaynaklanıyor? FireMonkey'de resim galerinden resim açmayı nasıl yapabilirim?
Teşekkürler.

Kodunuzda dikkatimi aşağıdaki tanımınız çekti.
Kod:
JIntent* intent;


Bir JIntent pointer'ı tanımlamışsınız ama onu create etmemişsiniz !
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#5
(21-09-2016, Saat: 19:45)İbrahim Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTeşekkürler. Bu Delphi'de istediğim gibi çalışıyor lakin aynısını C++ Builder'da denedim orada çalışmıyor:
2016_09_21_19_42_15.gif

Sebebi ne olabilir?

Merhaba,
 Structure penceresinde Image nesnesi görünmüyor. Set etmeye çalıştığınız nesne TImage nesnesi değil galiba. MultiResBitmap methodu Image nesnesin bir özelliğidir.
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
#6
Merhaba;
Kullandığım bileşen TImage. Şu şekilde yapıyorum (RESİM):
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Cevapla
#7
Merhaba,
C++ Builder Image nesnesi ile Delphi Image nesnesinin method'ları farklı. 
IMage Nesnesinin Bitmap'ine Assign edebilirsiniz.

Image1->Bitmap->Assign(Image);
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
#8
(22-09-2016, Saat: 09:52)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
C++ Builder Image nesnesi ile Delphi Image nesnesinin method'ları farklı. 
IMage Nesnesinin Bitmap'ine Assign edebilirsiniz.

Image1->Bitmap->Assign(Image);

Merhaba;
Bu kodu denediğimde "Invalid class typecast" hatasını alıyorum.
Cevapla
#9
(22-09-2016, Saat: 12:29)İbrahim Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(22-09-2016, Saat: 09:52)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
C++ Builder Image nesnesi ile Delphi Image nesnesinin method'ları farklı. 
IMage Nesnesinin Bitmap'ine Assign edebilirsiniz.

Image1->Bitmap->Assign(Image);

Merhaba;
Bu kodu denediğimde "Invalid class typecast" hatasını alıyorum.

Merhaba,
C++ Builder kurulu olmadığı için test edemiyorum. Aşağıdaki gibi deneyin. 

Image1->Picture->Bitmap->Assign(Image);
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
#10
IDE TImage bileşeninin Picture adlı bir üyesinin bulunmadığını söylüyor.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Firemonkey Android ile OCR ve Mifare - NFC - RFID Kütüphaneleri Abdullah ILGAZ 14 841 03-09-2018, Saat: 12:42
Son Yorum: adelphiforumz
  Android APİ sorunu - Google Play BY-HAYALET 23 1.159 23-08-2018, Saat: 18:54
Son Yorum: narkotik
  Tokyo Android Kurulumunda aldığım hata hakkında adelphiforumz 8 263 01-08-2018, Saat: 10:56
Son Yorum: Fesih ARSLAN
  [Ödüllü Soru] FMX Android projede input alan ve sanal klavye konumu Abdullah ILGAZ 1 198 20-07-2018, Saat: 12:37
Son Yorum: ssahinoglu
  Rad Studio C++ Android iile Editte Barkod Okutma Hatası Ahmet YILMAZ 1 482 19-07-2018, Saat: 17:01
Son Yorum: Abdullah ILGAZ



Konuyu Okuyanlar: 1 Ziyaretçi