:: MVP ::
|
|
:: RSS ::
|
|
|
[Android, iOS] Как определить локаль, установленную на устройстве?
// Способ первый
// С помощью кроссплатформенного сервиса FM
uses
{...,} FMX.Platform;
function GetLocale: string;
var
LocaleService: IFMXLocaleService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService, IInterface(LocaleService)) then
Result := LocaleService.GetCurrentLangID;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetLocale);
end;
// Способ второй
// С помощью iOS API
uses
{...,} iOSapi.Foundation, Macapi.ObjectiveC;
function GetLocale: string;
var
CurrentLocale: NSLocale;
LanguageISO: NSString;
begin
CurrentLocale := TNSLocale.Wrap(TNSLocale.OCClass.currentLocale);
LanguageISO := TNSString.Wrap(CurrentLocale.objectForKey((NSLocaleLanguageCode as ILocalObject).GetObjectID));
Result := UTF8ToString(LanguageISO.UTF8String);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetLocale);
end;
// Способ третий
// Для Android
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(SysLocale.DefaultLCID);
end;
|
[Android, iOS] Как скрыть/показать клавиатуру?
uses
{...,} FMX.VirtualKeyboard, FMX.Platform;
procedure TForm1.ShowKeyboard(Obj: TFmxObject; const Show: Boolean);
var
KeyboardService: IFMXVirtualKeyboardService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(KeyboardService)) then
case Show of
True: KeyboardService.ShowVirtualKeyboard(Obj);
False: if TVirtualKeyboardState.Visible in KeyboardService.VirtualKeyboardState then
KeyboardService.HideVirtualKeyboard;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Show
ShowKeyboard(nil {Edit1}, True);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// Hide
ShowKeyboard(nil, False);
end;
|
[Android] Как включать/отключать звук и вибрацию?
uses
Androidapi.JNIBridge,
Androidapi.Helpers,
AndroidApi.JNI.Media,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes;
type
TRingerMode = (rmSilent{=0}, rmVibrate{=1}, rmNormal{=2});
function GetRingerMode: TRingerMode;
var
AudioObj: JObject;
Audio: JAudioManager;
begin
AudioObj := SharedActivity.getSystemService(TJContext.JavaClass.AUDIO_SERVICE);
Audio := TJAudioManager.Wrap((AudioObj as ILocalObject).GetObjectID);
Result := TRingerMode(Audio.getRingerMode);
end;
procedure SetRingerMode(Mode: TRingerMode);
var
AudioObj: JObject;
AudioMng: JAudioManager;
begin
AudioObj := SharedActivity.getSystemService(TJContext.JavaClass.AUDIO_SERVICE);
AudioMng := TJAudioManager.Wrap((AudioObj as ILocalObject).GetObjectID);
case Mode of
rmSilent: AudioMng.setRingerMode(TJAudioManager.JavaClass.RINGER_MODE_SILENT);
rmVibrate: AudioMng.setRingerMode(TJAudioManager.JavaClass.RINGER_MODE_VIBRATE);
rmNormal: AudioMng.setRingerMode(TJAudioManager.JavaClass.RINGER_MODE_NORMAL);
else
AudioMng.setRingerMode(TJAudioManager.JavaClass.RINGER_MODE_NORMAL);
end;
end;
// Переключение режимов
procedure TForm1.Button1Click(Sender: TObject);
begin
SetRingerMode(rmSilent);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SetRingerMode(rmVibrate);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
SetRingerMode(rmNormal);
end;
// Получение режима
procedure TForm1.Button4Click(Sender: TObject);
begin
case GetRingerMode of
rmSilent: ShowMessage('MODE SILENT');
rmVibrate: ShowMessage('MODE VIBRATE');
rmNormal: ShowMessage('MODE NORMAL');
end;
end;
|
[Android] Как вызвать диалог настроек системы?
uses
Androidapi.Helpers, Androidapi.JNI.Provider,
Androidapi.JNI.GraphicsContentViewText;
procedure OpenGPSSettings;
{$IFDEF ANDROID}
var
Intent: JIntent;
{$ENDIF}
begin
{$IFDEF ANDROID}
Intent := TJIntent.Create;
// Аналогично можно вызвать диалог любых системных настроек,
// нужно только выбрать соответствующее значение из TJSettings.JavaClass
Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_SETTINGS);
SharedActivity.startActivity(Intent);
{$ENDIF}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenGPSSettings;
end;
|
При использовании материала - ссылка на сайт обязательна
|
|