mazayhin

Пользователи
  • Публикаций

    124
  • Зарегистрирован

  • Посещение

  • Победитель дней

    14

mazayhin стал победителем дня 16 марта

mazayhin имел наиболее популярный контент!

1 Подписчик

Информация о mazayhin

  • Звание
    Продвинутый пользователь

Информация

  • Пол
    Мужчина
  • Город
    Красноярск

Посетители профиля

680 просмотров профиля
  1. Использовать LocationSettingsReqest, транслировав его. Но или устаревшее SettingsApi. К сожалению нет возможности самому посмотреть и воспроизвести это все, временно нет подходящего аппарата
  2. Ну это вопросы к разработчикам системы, почему они решили что то, что пользователь закрыл, должно из памяти выгружаться системой (да, оно висит в recent, но на деле может быть выгружено - это вы видите, когда запускаете снова от туда, и все данные и состояние теряется.) JNI тут не причем. Почитайте первоисточник (доки по андроиду от гугла, про жц активити. Оно одно, обычно, для всего приложения на делфи) Ну и попробуйте "закрыть" тот же навигатор гугла. Что будет? - поделитесь результатом
  3. Первым делом, конечно, обновиться. Люди пишут что https://developer.android.com/reference/android/app/Activity.html#finishAndRemoveTask() Но сам не проверял (может завтра), ну и флаг для активити в манифесте android:autoRemoveFromRecents="true"/>
  4. Пример во вложении. Первым делом надо сделать Init. Пример написан как попало, все надергано кусками, к сожалению. Если кто-нибудь доведет до ума, и выложит на форум - будет замечательно! Обратите внимание - операция CreateRSAEntry - длительная, чем больше ключ, тем дольше. В тесте после нажатия на кнопку подвиснет на пару секунд. Шифрованные строки в примере надо смотреть в logcat. Так же для AES туда выведен вектор IV. Преобразование в/из base64 - нативное. KeyStore.zip
  5. Ок! А если кто нибудь листнер на java для сканера отпечатков напишет, что б колбэк в делфи прокинуть, то покажу и работу со сканером....
  6. Я могу отправить пример работы с кейстором, и шифрование/расшифровка на симметричном и асимметричном ключах из стора, но он для делфи. Вроде, к билдеру можно подключить. Разберетесь?
  7. По идее да. Разбирайтесь Все что было связано с изначальным вопросом я дал, работайте как в АС, от fmx по части работы с сенсором нет ничего, те же результаты получите и в АС
  8. через Api можно сделать, к примеру, так: var JObj: JObject; WindowManager: JWindowManager; Rotation: Integer; begin JObj := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.WINDOW_SERVICE); WindowManager := TJWindowManager.Wrap((JObj as ILocalObject).GetObjectID); Rotation := WindowManager.getDefaultDisplay.getRotation; if Rotation = TJSurface.JavaClass.ROTATION_180 then begin end else if Rotation = TJSurface.JavaClass.ROTATION_270 then begin end else if Rotation = TJSurface.JavaClass.ROTATION_90 then begin end; Подключать ничего не надо, Androidapi.JNI.GraphicsContentViewText (в нашем случае) уже подключен
  9. Вот этого не скажу. Можно попробовать и посмотреть. Если не даст то уже из api брать
  10. Посмотрите про RotationMatrix в https://developer.android.com/reference/android/hardware/SensorManager.html#getRotationMatrix(float[], float[], float[], float[]) Там описано, что это и откуда "берется"
  11. Немного не то имел ввиду. GetScreenOrientation не даст никаких углов, он укажет, грубо говоря, куда направлен верх телефона (где камера). Portrait = 0градусов, вверх. remapCoordinateSystem нужен как раз для того, что бы пересчитать матрицу в соответствии с изменившимся положением устройства на осях (верно ведь?). Если оси не изменились, смысла в лишней работе телефона нет, ровно как и в создании OutMatrix (его надо обязательно создать и задать размер). Как поступить - решать вам. Или считать дополнительно каждый раз, или только по необходимости.
  12. После получения матрицы, определяете поворот устройства через IFMXScreenService.GetScreenOrientation к примеру, или опять же, напрямую через api. Получаете углы (var x, y: integer; OutMatrix: TJavaArray<single>(16)): 0: ничего не делаем, в т.ч. ремап 90: X := TJSensorManager.JavaClass.AXIS_Y; Y := TJSensorManager.JavaClass.AXIS_MINUS_X; 180: X := TJSensorManager.JavaClass.AXIS_X; Y := TJSensorManager.JavaClass.AXIS_MINUS_Y; 270: X := TJSensorManager.JavaClass.AXIS_MINUS_Y; Y := TJSensorManager.JavaClass.AXIS_X; TJSensorManager.JavaClass.remapCoordinateSystem(FMatrix(изначальная матрица), x, y, OutMatrix) TJSensorManager.JavaClass.getOrientation(OutMatrix, FOrientation)
  13. Да, все верно, именно об этом и писал.
  14. Наверное можно, если смогу - подскажу. Ну и по итогам, хорошо, если б вы все привели это в нормальный вид, и выложили готовое решение на форум.
  15. Все на скорую руку. Никаких проверок не делал. Вообще, за основу брал статью с хабра https://habr.com/ru/post/137820/ Так же учтите, что необходимо проверить наличие магнитного датчика, т.к. без него getRotationMatrix всегда будет возвращать false, т.о. не получится определить положение устройства. Так же, еще, getOrientation вернет неправильные значения при повороте телефона, для этого надо определять текущую ориентацию экрана, и на основании этого делать remapCoordinateSystem, и только после этого уже определять положение. Смотрите, принцип понятен. Обертки взял от FMXExpress, немного подчистил, что бы не тянуть лишнего. Если будете брать сами, то обратите внимание: android.hardware.SensorManager: надо изменить JavaSignature на [JavaSignature('android/hardware/SensorManager')] для интерфейса JSensorManager (убрать $ и что после него, иначе, EJNIFatal) android.hardware.SensorEventListener: неправильно унаследованы интерфейсы (от JObject), а так как SensorEventListener это интерфейс, наследуемся от IJavaClass и IJavaInstance соответственно. SensorManager.zip