Здесь будут фрагменты кода, написанные с использованием JNI(Android API). Вы можете добавить свой код, решающий какой-то вопрос в комментарии и я перенесу ваше решение на страницу.
Определяем текущее значение громкости
Вызов домашнего экрана
Как программно изменять вид окна приложения (скрыть статус бар) в XE6?
Получаем список датчиков(Sensors) и информацию о них
Получаем список SMS-сообщений
Используем Wi-Fi
Как получить список вызовов?
Как определить тип контакта/аккаунта и тип номера?
Как получить список контактов (Имена и номера)?
Как получить версию приложения(versionName) в run-time, указанную в окне "Project->Options->Version Info"?
Как получить IMEI \ MEID \ ESN код устройства?
Как закрыть приложение?
Как использовать вибрацию?
Как определить Mime-type по расширению?
Как отправить запрос на открытие файла (Intent)?
Как получить полное имя ".apk" файла в директории "/data/app/"?
Как отключить автоблокировку экрана?
Определяем текущее значение громкости
uses Androidapi.JNI.JavaTypes, Androidapi.JNI.Media, Androidapi.Helpers, Androidapi.JNI.App, Androidapi.JNIBridge; procedure TForm1.Button1Click(Sender: TObject); var AudioObj: JObject; Audio: JAudioManager; CurrentVolume: Integer; begin AudioObj = SharedActivity.getSystemService(TJActivity.JavaClass.AUDIO_SERVICE); Audio := TJAudioManager.Wrap((AudioObj as ILocalObject).GetObjectID); CurrentVolume = Audio.getStreamVolume(TJAudioManager.JavaClass.STREAM_MUSIC); end;
Вызов домашнего экрана
uses Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers; procedure TForm2.Button1Click(Sender: TObject); var Intent: JIntent; begin Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_MAIN); Intent.addCategory(TJIntent.JavaClass.CATEGORY_HOME); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); SharedActivity.startActivity(Intent); end;
Как программно изменять вид окна приложения (скрыть статус бар) в XE6?
Получаем список датчиков(Sensors) и информацию о них
Получаем список SMS-сообщений
Используем Wi-Fi
Как получить список вызовов?
Как определить тип контакта/аккаунта и тип номера?
Как получить список контактов (Имена и номера)?
Как получить версию приложения(versionName) в run-time, указанную в окне "Project->Options->Version Info"?
{for Delphi XE6: Add to "uses" module "Androidapi.Helpers"} uses Androidapi.JNI.JavaTypes, FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText; var PackageManager: JPackageManager; VersionPackage,PackageName: JString; begin PackageManager := SharedActivity.getPackageManager; PackageName := SharedActivityContext.getPackageName; VersionPackage := PackageManager.getPackageInfo(PackageName, 0).versionName; Label1.Text := JStringToString(VersionPackage);
Как получить IMEI \ MEID \ ESN код устройства?
// Uses Permission: Read phone state = true {for Delphi XE6: Add to "uses" module "Androidapi.Helpers"} uses FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Telephony, Androidapi.JNIBridge; var TelephonyObj: JObject; TelephonyManager: JTelephonyManager; begin TelephonyObj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); TelephonyManager := TJTelephonyManager.Wrap((TelephonyObj as ILocalObject).GetObjectID); Label1.Text := JStringToString(TelephonyManager.getDeviceId);
Как закрыть приложение?
uses FMX.Platform.Android; procedure TForm1.Button4Click(Sender: TObject); begin MainActivity.finish; end;
Как использовать вибрацию?
uses FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText; function IntArrayToJArray(const OrigArray: array of integer): TJavaArray; var i: integer; begin Result := TJavaArray .Create(Length(OrigArray)); for i := Low(OrigArray) to High(OrigArray) do Result.Items[i] := OrigArray[i]; end; procedure TForm1.Button1Click(Sender: TObject); var VibratorObj: JObject; Vibrator: JVibrator; begin VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE); Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID); Vibrator.vibrate(StrToInt(ClearingEdit1.Text)); //or //Vibrator.vibrate(IntArrayToJArray([1000, 5000, 3000, 1000]), -1); //or //Vibrator.cancel(); //or //if Vibrator.hasVibrator() then //... //else //... end;
Как определить Mime-type по расширению?
{for Delphi XE6: Add to "uses" module "Androidapi.Helpers"} uses Androidapi.JNI.JavaTypes, Androidapi.JNI.Webkit; var ExtFile: string; mime: JMimeTypeMap; ExtToMime: JString; begin //Определяем расширение файла и его mime тип ExtFile := AnsiLowerCase(StringReplace(TPath.GetExtension(path), '.', '',[])); mime := TJMimeTypeMap.JavaClass.getSingleton(); ExtToMime := mime.getMimeTypeFromExtension(StringToJString(ExtFile));
Как отправить запрос на открытие файла (Intent)?
{for Delphi XE6: Replace "Androidapi.JNI.JavaTypes" on "Androidapi.Helpers"} uses Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android, Androidapi.JNI.JavaTypes; var Intent: JIntent; begin Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setDataAndType(StrToJURI('file:' + 'Путь'), 'Здесь указываем Mime-type в JString'); SharedActivity.startActivity(Intent);
Как получить полное имя ".apk" файла в директории "/data/app/"?
uses Androidapi.JNI.JavaTypes, FMX.Helpers.Android; var PackageName: JString; begin PackageName := SharedActivityContext.getPackageResourcePath; //Чтобы перевести в обычную строку, пишем JStringToString(PackageName)
Как отключить автоблокировку экрана?
1) Открываем проект в Delphi XE5, далее в меню «Project->View Source», в IDE откроется файл «Project1.dpr». 2) Теперь в «uses», после «FMX.Forms,» или до «Unit1 in 'Unit1.pas' {Form1};» добавляем «FMX.Helpers.Android, Androidapi.JNI.App, Androidapi.JNI.GraphicsContentViewText,» 3) Далее сразу после/до «Application.Initialize;» вставляем такую строчку: «SharedActivity.getWindow.addFlags(TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON);»