Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi Android Java kullanmak
#1
Hayırlı akşamlar. Android tarafında 3cü parti baya fazla kütüphaneler kullanıma sunulmuş. Bu kütüphaneler uygulama geliştirirken işimize çok kolaylık sağlıyor. Misal video oynatımalrı için vitamio ve vlc alt yapıları bedava olarak sunuluyor. Bu ek kütüphaneleri delphi nasıl kullanırız?
Cevapla
#2
Alıntı:-Delphi android java sadece javada olan bir fonksiyonu tetikleme cevap alma test etmiştim-


Bu kısmı anlayamadım



Java'da az da olsa bilgim var bu konuda yardımcı olabilirim sanırım
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#3
Ayrıca; soru açık değil. Aslında soru yok. Ne soruyorsunuz?
There's no place like 127.0.0.1
WWW
Cevapla
#4
(14-01-2017, Saat: 09:06)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Alıntı:-Delphi android java sadece javada olan bir fonksiyonu tetikleme cevap alma test etmiştim-
Bu kısmı anlayamadım
Java'da az da olsa bilgim var bu konuda yardımcı olabilirim sanırım

(14-01-2017, Saat: 10:19)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAyrıca; soru açık değil. Aslında soru yok. Ne soruyorsunuz?

Merhaba. Gece baya uğraştığımdan ne yazdığımı ben bile anlayamadım şu an. Düzenledim.
Cevapla
#5
Merhaba. Konu günceldir. Araştırdım biraz bu video olayları için SurfaceView kullanılıyor. Bunu delphi android nasıl kullana biliriz?
Cevapla
#6
Merhaba. Media olayını şimdilik bir kenara bırakıyorum. Geçen yıl androidde BroadcastReceiver kullanmak için tüm yapılmış sonradan yeni sürümlerde çalışmamış örnekleri taplayıp inceliyerek kendim yeni sürümlere uyumlusunu hazırlamıştım. Bu konuyla ilgisi ve konuya irerleme katacağını düşünüyorum. Sistemi kısaca özetlesem delphi pas dosyasındakı kodu javadakı ilgili yerde javada kod yazmadan kullanmıştım. Bu tür kaynaklar yetersiz olduğundan olayı örnek projeye taşımağı düşündüm. Test için yapmak istediğim boş bir android projesi java ile delphiye enteqre ederek delphideki kodlarla projeyi kullanma. TurboCocoa bu alt yapıyı kullanıyor kodlarına bakınca kendisine özel kod yazdığını gördüm. Kodlar bunlar.

Orjinal java kodu. Native bağlantısı yapılmış. Java konusunda çok bilgim yok malesef.
package com.zairovsoft;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class Receiver extends BroadcastReceiver
{
 public native void NativeReceiver(Context paramContext, Intent paramIntent);
 
 public void onReceive(Context paramContext, Intent paramIntent)
 {
   NativeReceiver(paramContext, paramIntent);
 }
}

Kodu java2op çevirilmiş referans hali.
unit jnilibrary;

interface

uses
 Androidapi.JNIBridge,
 Androidapi.JNI.GraphicsContentViewText;

type
 JReceiver = interface;//com.zairovsoft.Receiver
 JReceiverClass = interface(JBroadcastReceiverClass)
   ['{01E6D5D7-662C-4CA5-8D6E-715250DE9012}']
 end;

 [JavaSignature('com/zairovsoft/Receiver')]
 JReceiver = interface(JBroadcastReceiver)
   ['{94C6F451-984F-4766-94B8-DE9087D4C4C2}']
 end;
 TJReceiver = class(TJavaGenericImport<JReceiverClass, JReceiver>) end;
 
implementation

procedure RegisterTypes;
begin
 TRegTypes.RegisterType('jnilibrary.JReceiver', TypeInfo(jnilibrary.JReceiver));
end;

initialization
 RegisterTypes;
 
end.

Ve son olarak ayrı bir pas dosyasında java bağlantı işlemleri ve çalışacak kod kısmı.
unit uReceiver;

interface

uses
 System.SysUtils,
 System.Classes,
 FMX.Helpers.Android,
 Androidapi.Helpers,
 Androidapi.JNI,
 Androidapi.JNIBridge,
 Androidapi.JNI.GraphicsContentViewText,
 Androidapi.JNI.JavaTypes,
 Androidapi.JNI.Telephony,
 Androidapi.JNI.Os,
 Androidapi.JNI.Widget,
 jnilibrary;

type
 TReceiver = class(TJavaGenericImport<JReceiverClass, JReceiver>)
 protected
   constructor _Create;
 public
   class function Create: JReceiver;
   procedure OnReceive(Context: JContext; Intent: JIntent);
 end;

var
 FReceiver: TReceiver;
 FContext: JContext;
 FIntent: JIntent;

implementation

{$REGION 'NativeReceiver'}

procedure ReceiverOnReceiveThreadSwitcher;
begin
 FReceiver.OnReceive(FContext, FIntent);
end;

procedure NativeReceiver(PEnv: PJNIEnv; This: JNIObject;
 JNIContext, JNIReceivedIntent: JNIObject); cdecl;
begin
 FContext := TJContext.Wrap(JNIContext);
 FIntent := TJIntent.Wrap(JNIReceivedIntent);
 TThread.Synchronize(nil, ReceiverOnReceiveThreadSwitcher);
end;

procedure RegisterDelphiNativeMethods;
var
 PEnv: PJNIEnv;
 ReceiverClass: JNIClass;
 NativeMethod: JNINativeMethod;
begin
 PEnv := TJNIResolver.GetJNIEnv;
 NativeMethod.Name := 'NativeReceiver';
 NativeMethod.Signature := '(Landroid/content/Context;Landroid/content/Intent; )V';
 NativeMethod.FnPtr := @NativeReceiver;
 ReceiverClass := TJNIResolver.GetJavaClassID('com.zairovsoft.Receiver');
 if ReceiverClass <> nil then
 begin
   PEnv^.RegisterNatives(PEnv, ReceiverClass, @NativeMethod, 1);
   PEnv^.DeleteLocalRef(PEnv, ReceiverClass);
 end;
end;

{$ENDREGION}

{ TReceiver }

constructor TReceiver._Create;
begin
 inherited;
end;

class function TReceiver.Create: JReceiver;
begin
 Result := inherited Create;
 FReceiver := TReceiver._Create;
end;

procedure TReceiver.OnReceive(Context: JContext; Intent: JIntent);
 procedure ShowToast(Msg: string);
 begin
   CallInUiThread(
     procedure
     begin
       TJToast.JavaClass.makeText(
         TAndroidHelper.Context,
           StrToJCharSequence(Msg),
             TJToast.JavaClass.LENGTH_LONG).show;
     end);
 end;
var
 S: string;
begin
 S := JStringToString(Intent.getStringExtra(StringToJString('incoming_number')));
 if Length(S) > 0 then
   ShowToast('In coming call number: ' + S)
 else
   ShowToast('No Number..');
end;

initialization
 RegisterDelphiNativeMethods;

end.
Cevapla
#7
Paylaşım için teşekkürler.
Bence bunu ayrı bir makale gibi yazarsanız ihtiacı olanlar için bulunması daha kolay olurdu.
There's no place like 127.0.0.1
WWW
Cevapla
#8
(26-01-2017, Saat: 12:14)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlPaylaşım için teşekkürler.
Bence bunu ayrı bir makale gibi yazarsanız ihtiacı olanlar için bulunması daha kolay olurdu.

Merhaba. Aslında bu yakında paylaştığım bu Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol örnek proje halinde sunmuştum. Ayrı bir konu olarakda paylaşırım daha detaylı olur.
Cevapla
#9
Merhaba,
Java kodlarını Delphi (.pas) koduna dönüştüren yeni bir component seti üretilmiş.

Örnek Java Kodu:
package test;

class Test {
        public Test() {
        }

        public String hello() {
               return "Hello, world!";
        }
}

Üretilen Delphi kodu:
type
 Itest_Test = interface(Ijava_lang_Object)
   function hello: string;
 end;

 Ttest_Test = class(Tjava_lang_Object, Itest_Test)
 public
   constructor Create(JavaObject: JObject); overload;
   constructor Create; overload;
 end;

 Ttest_TestClass = class(Tjava_lang_ObjectClass)
 public
   property _initID: JMethodID read F_initID;
   property helloID: JMethodID read FhelloID;
 end;

function Gettest_TestClass: Ttest_TestClass;

Kullanımı:
CreateJavaVM;
ShowMessage(Ttest_Test.Create.hello);


Kullanımı son derece basit görünüyor. 

Üretici: WinSoft 
Fiyatı: 340 $ 

Detaylı Bilgi: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Trial sürümü indirmek için: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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
Merhaba Fesih bey. Paylaşım için teşekkürler. Bu yöntem daha alt seviyyedir. Lazarusta böyle kullanılıyor. Ama delphi android için geliştirdiği jni köprü sistemi bundan daha iyi. Sadece android için geçerli o yöntem. Bu bileşen örneğini tamamında işler daha karışıktır. Tek iyi tarafı oda delphi java2op gibi otomatik köprü oluşturması.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Blocking dialogs not implemented on this platform on Android Platform Paranoyaq 4 169 11 saat önce
Son Yorum: Paranoyaq
  Delphi Android Sayı Karmaşası [Çözüldü] codder71 2 105 12-01-2018, Saat: 15:54
Son Yorum: codder71
  Android Uygulama Arka Planda Kilitleniyor beklentili 10 214 08-01-2018, Saat: 15:06
Son Yorum: beklentili
  Delphi Dahili Hafıza Boyutu Öğrenme codder71 4 123 08-01-2018, Saat: 01:33
Son Yorum: codder71
  Java kütüphanesinin wrapper sınıfını oluşturma Abdullah ILGAZ 4 157 22-12-2017, Saat: 10:35
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi