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?
WWW
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.
WWW
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?
WWW
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.
WWW
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.
WWW
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ı.
WWW
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 818 03-09-2018, Saat: 12:42
Son Yorum: adelphiforumz
  Android APİ sorunu - Google Play BY-HAYALET 23 1.119 23-08-2018, Saat: 18:54
Son Yorum: narkotik
  Tokyo Android Kurulumunda aldığım hata hakkında adelphiforumz 8 257 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 188 20-07-2018, Saat: 12:37
Son Yorum: ssahinoglu
  Rad Studio C++ Android iile Editte Barkod Okutma Hatası Ahmet YILMAZ 1 467 19-07-2018, Saat: 17:01
Son Yorum: Abdullah ILGAZ



Konuyu Okuyanlar: 1 Ziyaretçi