Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Android Yararlı Dökümanlar
#1
İyi akşamlar. Bazen kafama takılır android için bişeyler denerim olumlu sonuçlu olan kod ve projeleri saklarım. Boş arşivde kalacağına bu konu altından paylaşım dedim. Yararlı olması dileğiyle.

Projeler:

Video oynatıcı ( direk url ve hls(.m3u) destekliyor ) ZeroPlayerJava
SplashScreen ( siyah ekran çözümü için ) SplashScreenJava
Yüklü olan uygulamaların listesi. ( App Share uygulaması yapıla bilir ) PackageManager
Java olan bir kodu delphi çalıştırma. JavaClass
Gelen çağrı, kısa mesaj ve s. dinleme yapmak için kullanılır. BroadcastReceiverJava

Kod parçaları:

VideoView kullanımı java olmadan ( çok iyi olmasada idare eder )
unit VideoView;

interface

uses
 System.SysUtils,
 FMX.Types,
 FMX.Helpers.Android,
 Androidapi.Helpers,
 Androidapi.JNI.App,
 Androidapi.JNI.Net,
 Androidapi.JNI.VideoView,
 Androidapi.JNI.Widget;

type
 TVideoView = class(TObject)
 private
   FDialog: JDialog;
   FVideoView: JVideoView;
 public
   procedure Play(Source: string);
 end;

implementation

{ TVideoView }

procedure TVideoView.Play(Source: string);
begin
 CallInUIThread(
   procedure
   begin
     FDialog := TJDialog.JavaClass.init(TAndroidHelper.Activity, -1);
     FDialog.setCancelable(True);

     FVideoView := TJVideoView.JavaClass.init(TAndroidHelper.Activity);
     FVideoView.setVideoURI(StrToJURI(Source));
     FVideoView.start;

     FDialog.setContentView(FVideoView);
     FDialog.show;
   end);
end;

end.

SharedPreferences kullanımı
var
  SP: JSharedPreferences;
 SPE: JSharedPreferences_Editor;
begin
 // Create
 SP := SharedActivity.getSharedPreferences(StringToJString('delphi'), 0);
 SPE := SP.edit;
 // Write
 SPE.putString(StringToJString('Name'), StringToJString('Ali'));
 SPE.commit;
 // Read
 ShowMessage(JStringToString(SP.getString(
   StringToJString('Name'), StringToJString('Ali'))));
end;

Kütüphane şeklinde bazı kodlar
unit AppLibrary;

interface

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

type
 TRingerMode = record
   const
     VIBRATE = 1;
     NORMAL = 2;
     SILENT = 3;
 end;

type
 TApp = class(TObject)
 public
   procedure showToast(Msg: string);
   function checkNetwork: Boolean;
   procedure setRingerMode(RingerMode: Integer);
   function GetBatteryLevel: Integer;
   procedure PlayMX(Title, Url: string);
   procedure PlayAudio(Url: string);
   procedure ScreenON;
   procedure Vibrate(ms: Integer);
   function GetIMEI: string;
   function checkPermission(p: string): Boolean;
   function getVolume: Integer;
 end;

implementation

{ TApp }

procedure TApp.showToast(Msg: string);
begin
 CallInUiThread(
   procedure
   begin
     TJToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(Msg),
       TJToast.JavaClass.LENGTH_LONG).show
   end);
end;

function TApp.checkNetwork: Boolean;
 function GetConnectivityManager: JConnectivityManager;
 var
   ConnectivityServiceNative: JObject;
 begin
   ConnectivityServiceNative := SharedActivityContext.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE);
   if not Assigned(ConnectivityServiceNative) then
     raise Exception.Create('Could not locate Connectivity Service');
   Result := TJConnectivityManager.Wrap((ConnectivityServiceNative as ILocalObject).GetObjectID);
   if not Assigned(Result) then
     raise Exception.Create('Could not access Connectivity Manager');
 end;
var
 cm: JConnectivityManager;
 activeNetwork: JNetworkInfo;
begin
 cm := GetConnectivityManager;
 activeNetwork := cm.getActiveNetworkInfo;
 Result := Assigned(ActiveNetwork) and ActiveNetwork.isConnected;
end;

procedure TApp.setRingerMode(RingerMode: Integer);
var
 O: JObject;
 AudioManager: JAudioManager;
begin
 O := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.AUDIO_SERVICE);
 AudioManager := TJAudioManager.Wrap((O as ILocalObject).GetObjectID);
 AudioManager.setRingerMode(RingerMode);
end;

function TApp.GetBatteryLevel: Integer;
var
 IntentFilter: JIntentFilter;
 Intent: JIntent;
 L, S, I: Integer;
begin
 IntentFilter := TJIntentFilter.Create;
 IntentFilter.addAction(TJIntent.JavaClass.ACTION_BATTERY_CHANGED);
 Intent := TAndroidHelper.Context.registerReceiver(nil, IntentFilter);
 L := Intent.getIntExtra(StringToJString('level'), -1);
 S := Intent.getIntExtra(StringToJString('scale'), -1);
 Result := (100 * L) div S;
end;

procedure TApp.PlayMX(Title, Url: string);
var
 Intent: JIntent;
 Data: Jnet_Uri;
begin
 Intent := TJIntent.Create;
 Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
 Data := TJnet_Uri.JavaClass.parse(StringToJString(Url));
 intent.putExtra(StringToJString('title'), StringToJString(Title));
 Intent.setDataAndType(Data, StringToJString('application/x-mpegURL'));
 Intent.setPackage(StringToJString('com.mxtech.videoplayer.ad'));
 try
   TAndroidHelper.Activity.startActivity(Intent);
 except
   intent.putExtra(StringToJString('title'), StringToJString(Title));
   Intent.setDataAndType(Data, StringToJString('application/x-mpegURL'));
   Intent.setPackage(StringToJString('com.mxtech.videoplayer.pro'));
   try
     TAndroidHelper.Activity.startActivity(Intent);
   except
     showToast('MX Player not found!');
   end;
 end;
end;

procedure TApp.PlayAudio(Url: string);
var
 MediaPlayer: JMediaPlayer;
begin
 CallInUIThread(
   procedure
   begin
     MediaPlayer := TJMediaPlayer.JavaClass.init;
     MediaPlayer.setDataSource(StringToJString(Url));
     MediaPlayer.prepare;
     MediaPlayer.start();
   end);
end;

procedure TApp.ScreenON;
begin
 TAndroidHelper.Activity.getWindow.addFlags(
   TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON);
end;

procedure TApp.Vibrate(ms: Integer);
var
 O: JObject;
 V: JVibrator;
begin
 O := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.VIBRATOR_SERVICE);
 V := TJVibrator.Wrap((O as ILocalObject).GetObjectID);
 V.vibrate(ms);
end;

function TApp.GetIMEI: string;
var
 O: JObject;
 TM: JTelephonyManager;
begin
 O := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
 TM := TJTelephonyManager.Wrap((O as ILocalObject).GetObjectID);
 Result := JStringToString(TM.getDeviceId);
end;

function TApp.checkPermission(p: string): Boolean;
begin
 Result := TAndroidHelper.Activity.checkCallingOrSelfPermission(
   StringToJString(p)) =
     TJPackageManager.JavaClass.PERMISSION_GRANTED;
end;

function TApp.getVolume: Integer;
var
 O: JObject;
 AM: JAudioManager;
 I: Integer;
begin
 O := TAndroidHelper.Activity.getSystemService(TJContext.JavaClass.AUDIO_SERVICE);
 AM := TJAudioManager.Wrap((O as ILocalObject).GetObjectID);
 Result := AM.getStreamVolume(TJAudioManager.JavaClass.STREAM_MUSIC);
end;

end.
WWW
Cevapla
#2
Paylaşım için tşkler
Cevapla
#3
Selamün Aleyküm;
Bilgiler için teşekkürler. Benim ilgimi çeken Java kodlarının Delphi'de kullanılabilmesi olayı. Aslında Rad Studio dizininde Java2OP.exe adlı bir çevirici geliyor lakin çalıştığı yok, sorunları hakkında bilgi de yok. Java2Pas.exe adlı bir alternatifi ben de kullandım, aslında çalışıyor ama sadece verdiğiniz örnekte de olduğu gibi harici bir kütüphane / sınıf kullanılmadan, saf olarak yazılmış Java kodları çalışıyor. Yani misal olarak Android SDK sınıflarını kullanıp, bir JAR dosyası elde edip, Java2Pas.exe ile çevirme işlemi yaptığımda birçok .pas dosyası oluşuyor ve tümünü alıp projeye atıp derlediğimde çevrilemeyen sınıflar olduğunu görüyorum.
Cevapla
#4
Gerçekten yararlı bir paylaşım olmuş teşekkürler
WWW
Cevapla
#5
Paylaşım için teşekkürler.
There's no place like 127.0.0.1
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Android İzinleri - Bileşen Fesih ARSLAN 18 14.474 13-01-2022, Saat: 17:51
Son Yorum: RAD Coder
  STP [PC - ANDROID arasında metin paylaşımı uygulaması] Mr.Developer 15 10.000 10-12-2020, Saat: 20:23
Son Yorum: Mr.Developer
  QuickLib elphi/Firemonkey (Windows,Linux,OSX/IOS/Android) r3n4m3 2 3.568 29-09-2019, Saat: 17:34
Son Yorum: r3n4m3
  Delphi yararlı kaynaklar AliZairov 0 2.743 02-04-2017, Saat: 13:38
Son Yorum: AliZairov
  FMXUI Android bileşenleri AliZairov 0 2.882 11-02-2017, Saat: 23:26
Son Yorum: AliZairov



Konuyu Okuyanlar: 1 Ziyaretçi