Лидеры
Популярный контент
Показан контент с высокой репутацией 30.11.2016 во всех областях
-
Сходка в Питере
Steepe_Hare и 6 других отреагировал Error за тема
Равиль Зарипов предложил отличную мысль - устроить сходку дельфистов в Питере, посидеть где-нибудь, пообщаться Собственно, кому интересно, отпишитесь в комментариях, можно будет в декабре устроить встречу Думаю надо хотябы 5-6 человек.7 баллов -
ShowModal - почему нельзя использовать блокирующий режим?
Steepe_Hare и 4 других отреагировал Brovin Yaroslav за вопрос
Добрый день, На андроиде в принципе не поддерживаются синхронные диалоги. И причина прежде всего в архитектуре андроид приложения. Если говорить о нативном приложении, то оно состоит из двух потоков Java UI Thread (Он же главный поток приложения) и Delphi Thread. FireMonkey работает в делфи треде. В то время, как все нативные вещи (диалоги, пикеры, браузеры, карты, медиа проигрыватели и тд) все они работают в Java UI Thread. Помимо этого, когда активити (работает в так же в java UI thread) меняет своё состояние (запущена, приостановлена, остановлена, возобновлена и тд), она должна синхронизировать это состояние в делфи треде. Или другими словами передать эту информацию в делфи тред. Для передачи используются пайпы с событиями. Поэтому пока делфи тред не прочитает новое состояние активити, Java UI thread будет находится в режиме ожидания. Чтение в делфи потока нового состояния происходит в цикле ProcessMessage. Теперь возвращаясь к диалогам. Диалоги нативные, поэтому они должны быть синхронизированы (с ожиданием) с java UI thread. С другой стороны, в момент отображения диалога происходит событие из java ui thread Window Gained Focus, возникающее, когда в приложении меняется фокус между окнами (диалоговое окно в данном случае перехватывает фокус). Но как мы выяснили, это приводит к обратной синхронизации с делфи тредом. Отсюда возникает классический deadlock. P.S. Это верно до версии Берлин включительно.5 баллов -
[ТBeacon] Реальная задача
Pax Beach и 2 других отреагировал Brovin Yaroslav за вопрос
Я вижу пока только два решения: Засунуть сразу в апк Сделать скачивание через инет. Можно еще предложить в самом предложении скачать пакет с аудио. Поскольку экскурсий может быть очень много, то файлов может быть так же очень много. Плюс не каждому нужны файлы ко всем экскурсиям. Поэтому я бы предложил скачиваем пустое приложение. А в нем предлагаем пользователю скачать те пакеты экскурсий, которые его интересуют. При наличии хорошего интернета.3 балла -
Сходка в Питере
Равиль Зарипов (ZuBy) и 2 других отреагировал #WAMACO за тема
Дайте знать, когда, где...3 балла -
Уникальность смартфона (планшета)
Pax Beach и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
например вот так function getDeviceId: string; // uses // Androidapi.Jni.GraphicsContentViewText, Androidapi.JNIBridge, // Androidapi.Helpers, Androidapi.Jni.JavaTypes, // Androidapi.Jni.Provider, Androidapi.Jni.Telephony, // System.Hash; var androidID: string; deviceID: string; TelephoneServiceNative: JObject; TelMan: JTelephonyManager; begin androidID := JStringToString(TJSettings_Secure.JavaClass.getString(TAndroidHelper.Context.getContentResolver, TJSettings_Secure.JavaClass.ANDROID_ID)); TelephoneServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); if TelephoneServiceNative <> nil then begin TelMan := TJTelephonyManager.Wrap((TelephoneServiceNative as ILocalObject).GetObjectID); deviceID := JStringToString(TelMan.getDeviceId); end else deviceID := ''; Result := THashMD5.GetHashString(androidID + deviceID); end; UPDATE: не забываем про разрешение READ_PHONE_STATE2 балла -
Уникальность смартфона (планшета)
AngryOwl и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
//uses // AndroidApi.Helpers, AndroidApi.JNI.JavaTypes, AndroidApi.JNI.Provider; var deviceID: JString; begin deviceID := TJSettings_Secure.JavaClass.getString(TAndroidHelper.Context.getContentResolver, TJSettings_Secure.JavaClass.ANDROID_ID); ShowMessage(JStringToString(deviceID)); end;2 балла -
То есть - куда он пойдет гулять никто не знает? На любую из точек? В таком случае, имхо, есть смысл сделать как это делается в оффлайн-навигаторах: приложение скачивается отдельно, а карты (аудиофайлы в нашем случае) - отдельно, по желанию пользователя.2 балла
-
Нет, окончательное решение должно быть Ваше Зачем? ноутбук + Connectify, все мобилки подключаются к 192.168.0.1 (адрес бука), на буке - простейший http-сервер на том же Delphi крутится сервисом. На get-запрос от приложения отдает в теле ответа аудиофайл. До начала экскурсии, в месте сбора. Можно даже сделать как "мобилка спрашивает - а куда сегодня пойдем", а сервер отвечает "пойдем туда-то, вот тебе файлы на сегодня", чтобы не перегружать пользователя лишними действиями. Все довольны, все смеются.2 балла
-
[ТBeacon] Реальная задача
Pax Beach и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
можно сделать сервачок локальный. Переносной роутер к которому подключаются туристы и качают заранее аудио файлы. Разместить можно при желании даже в автобусе или в каком нить здании до начала экскурсии2 балла -
Приложение не отвечает. Закрыть?
Andrey Efimov и ещё один отреагировал Pax Beach за вопрос
«Самое худшее, что может случиться с отзывчивостью вашего приложения это диалог "Приложение не отвечает" (ANR).» Здесь описан механизм работы с зависанием UI, и как с этим бороться. На русском пока нет, но, если нужно, гугл переводчик подскажет.2 балла -
2 балла
-
[ТBeacon] Реальная задача
Kitty отреагировал Brovin Yaroslav за вопрос
Я бы пошел третьим способом. Если, какая-то экскурсия очень важна. Зашил бы ее в апк.1 балл -
Всем спасибо, проблему решил сам, только не понял, что именно помогло, напишу последние действия: - Скачал libeay32.dll и ssleay32.dll (точнее использовал одни из скачанных до этого, ресурс не подскажу уже) - Закинул их в C:\Windows\System32 (по инструкции для 32-битной системы) и их же закинул в C:\Windows\SysWOW64 (по инструкции для 64-битной системы) - После этого зарегистрировал их через командную строку: cmd -> regsvr32 libeay32.dll -> enter -> перезагрузка После последнего действия вылетела ошибка о несовместимости системы и используемых библиотек, НО...все теперь работает как надо Пора вводить программирование как новую религию..иногда происходят чудеса похлеще походов по воде. Тему можно закрывать1 балл
-
1 балл
-
https://github.com/EmbarcaderoPublic/DelphiArcadeGames Не уверен, но вроде бы как, здесь сделано одновременное воспроизведение для разных платформ1 балл
-
Всем спасибо. Глюк в берлине без апдейта. В сиетле все работает отлично.1 балл
-
Согласен, не пояснил все более открыто Библиотеки скачивал с различных ресурсов и закидывал в различные папки (системные папки и в папку проекта включительно) Даже добавлял в деплоймент (мало ли) К тому же ставил OpenSSL-Win32 и OpenSSL-Win64 (система 64-битная, приложение 32-битное) В общем перепробовал все советы всезнающего гугла Сообщение я прочитал и естественно загуглил на тот случай, если я что-то неправильно понял. После компиляции автоматически происходит исполнение (извините, если говорю что-то не так) Ко всему этому хочу добавить, столкнулся с данной проблемой только на Берлине. Да, можно вернуться на Сиетлл, но не хочу сдавать просто так (решение пригодится многим)1 балл
-
DropBox Rest
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
приходит кодировка которую не ждут1 балл -
Теоретически басс будет надежнее - т.к. опыта у него больше. Но это не значит что МедиаПлеер вам не подойдет.1 балл
-
[Android] Что использовать для сохранения настроек приложения?
Pax Beach отреагировал Равиль Зарипов (ZuBy) за вопрос
Если писать в папку приложения TPath.GetDocumentsPath, то файлы автоматически удаляются при деинсталяции приложения1 балл -
Люди, помогите понять. Вот топикстартер - создает трехзвенку, работает с датаснап, mySQL, делает приложение под Андроид... то есть - довольно-таки сложные вещи. И не может прочитать сообщение об ошибке, путает компиляцию с исполнением ? о_О...1 балл
-
Приложение не отвечает. Закрыть?
Steepe_Hare отреагировал Равиль Зарипов (ZuBy) за вопрос
ну так и вы не дали код, что у вас там происходит я незнаю. а там представлен шаблон с комментариями1 балл