Перейти к содержанию
  • Регистрация

mazayhin

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

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

  • Посещение

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

    15

Весь контент mazayhin

  1. Вот статья, что куда деплоить надо, и как получить доступ к этому http://delphifmandroid.blogspot.com/2014/02/deployment-manager.html
  2. Что именно то не работает? Вроде, там нет ничего такого, с vcl связанного
  3. Хм, по умолчанию не разрешено ничего такого особого, кроме как запуститься. Все выставляется в манифесте и разрешения даются при установке (напр. доступ в интернет). Не разу не видел такого, что бы что-то запрашивало разрешение на то, что можно, указанное в манифесте (да то же интернет). Но увы, возможности проверить нет. И да, все что вы хотите, в манифесте все равно должно быть. мне кажется, что вы сам себе противоречите? Хотите использовать WifiManager, разрешения все равно надо запросить, но только при установке - возвращаемся к манифесту. Ну а что бы уследить за изменениями, что надо, а что не надо, это уже на https://developer.android.com все ведь меняется. Указали поддержку более позднего API, извольте соответствовать этому, но и не забывать про старое...
  4. Странно, что смогли разобраться с тем, что надо заменять в папках студии, ну и подключать уже кастомное активити в манифесте. Из DW надо подключить только пару файлов и все. Вы в манифесте добавили эти разрешения? И да, запрашивать у пользователя их не надо (потому, думаю, запрос и не выдает система). Для всех ваших разрешений указано Protection level: normal. Запрос нужен для тех, что dangerous. https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_WIFI_STATE и далее по тексту https://developer.android.com/guide/topics/permissions/overview (If your app lists normal permissions in its manifest (that is, permissions that don't pose much risk to the user's privacy or the device's operation), the system automatically grants those permissions to your app. )
  5. Ставьте целевой уровень 26 и используйте KastriFree https://github.com/DelphiWorlds/KastriFree
  6. Опять же, повторюсь, нет возможности проверить, и особо времени нет вникнуть. Только, кажется, все немного усложнили вы себе с этой посылкой. У PendingIntent есть метод readPendingIntentOrNullFromParcel(Parcel in) который как раз вычитывает его из посылки. Напрямую да, не получится привести их.
  7. Проверить возможности нет, но скорее всего PIntent := JPendingIntent(Parcelable);
  8. Использовать LocationSettingsReqest, транслировав его. Но или устаревшее SettingsApi. К сожалению нет возможности самому посмотреть и воспроизвести это все, временно нет подходящего аппарата
  9. Ну это вопросы к разработчикам системы, почему они решили что то, что пользователь закрыл, должно из памяти выгружаться системой (да, оно висит в recent, но на деле может быть выгружено - это вы видите, когда запускаете снова от туда, и все данные и состояние теряется.) JNI тут не причем. Почитайте первоисточник (доки по андроиду от гугла, про жц активити. Оно одно, обычно, для всего приложения на делфи) Ну и попробуйте "закрыть" тот же навигатор гугла. Что будет? - поделитесь результатом
  10. Первым делом, конечно, обновиться. Люди пишут что https://developer.android.com/reference/android/app/Activity.html#finishAndRemoveTask() Но сам не проверял (может завтра), ну и флаг для активити в манифесте android:autoRemoveFromRecents="true"/>
  11. Пример во вложении. Первым делом надо сделать Init. Пример написан как попало, все надергано кусками, к сожалению. Если кто-нибудь доведет до ума, и выложит на форум - будет замечательно! Обратите внимание - операция CreateRSAEntry - длительная, чем больше ключ, тем дольше. В тесте после нажатия на кнопку подвиснет на пару секунд. Шифрованные строки в примере надо смотреть в logcat. Так же для AES туда выведен вектор IV. Преобразование в/из base64 - нативное. KeyStore.zip
  12. Ок! А если кто нибудь листнер на java для сканера отпечатков напишет, что б колбэк в делфи прокинуть, то покажу и работу со сканером....
  13. Я могу отправить пример работы с кейстором, и шифрование/расшифровка на симметричном и асимметричном ключах из стора, но он для делфи. Вроде, к билдеру можно подключить. Разберетесь?
  14. По идее да. Разбирайтесь Все что было связано с изначальным вопросом я дал, работайте как в АС, от fmx по части работы с сенсором нет ничего, те же результаты получите и в АС
  15. через 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 (в нашем случае) уже подключен
  16. Вот этого не скажу. Можно попробовать и посмотреть. Если не даст то уже из api брать
  17. Посмотрите про RotationMatrix в https://developer.android.com/reference/android/hardware/SensorManager.html#getRotationMatrix(float[], float[], float[], float[]) Там описано, что это и откуда "берется"
  18. Немного не то имел ввиду. GetScreenOrientation не даст никаких углов, он укажет, грубо говоря, куда направлен верх телефона (где камера). Portrait = 0градусов, вверх. remapCoordinateSystem нужен как раз для того, что бы пересчитать матрицу в соответствии с изменившимся положением устройства на осях (верно ведь?). Если оси не изменились, смысла в лишней работе телефона нет, ровно как и в создании OutMatrix (его надо обязательно создать и задать размер). Как поступить - решать вам. Или считать дополнительно каждый раз, или только по необходимости.
  19. После получения матрицы, определяете поворот устройства через 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)
  20. Наверное можно, если смогу - подскажу. Ну и по итогам, хорошо, если б вы все привели это в нормальный вид, и выложили готовое решение на форум.
  21. Все на скорую руку. Никаких проверок не делал. Вообще, за основу брал статью с хабра 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
  22. Не успел сегодня. В общем, необходимо создать обертку для андроидовского system.hardware.SensorManager. и через нее уже работать. Получить интерфейс JSensorManager, вызвать registerListner для обоих сенсоров (листнер надо описать как клас ... = class (IJavaLocsl, JSensorEventListner), вроде так, пишу с телефона), его процедура по событию системы и будет вызываться. Ну а там, собственно уже, TJavaSensorManager.JavaClass.getRotationMatrix(R, nil, A, G) .getOrientation(R, O) Все переменные это TJavaArray<single>, размер у R: 16, остальные 3 В общем, работы совсем ничего. Хотите-попробуйте посмотреть и разобраться, ну или завтра будет пример с простейшей оберткой, на нем и посмотрите.
  23. А в чем проблема использовать getOrientationMatrix SensorManager'a? Обертки есть от FMXExpress к примеру, или самому можно перевести. Может если время сегодня хватит - набросаю проект и скину
  24. Описать BroadcastReceiver в приложении, а из сервиса слать сообщение (интент) с необходимыми данными. На форуме есть пример даже с сервисом
×
×
  • Создать...