06-01-2017, Saat: 22:32
İ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 )
SharedPreferences kullanımı
Kütüphane şeklinde bazı kodlar
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.