:: 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;
|
При использовании материала - ссылка на сайт обязательна
|
|