Mazzay

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

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

  • Посещение

О Mazzay

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

Информация

  • Пол
    Мужчина
  • Город
    Саратов
  1. Вот реальный пример, если кто не видел:
  2. Сделал выбор числа месяца скроллингом (как это реализовано на устройствах Apple). Для наглядности вот рабочий пример: https://youtu.be/F73fCMSlL7I. Но для красоты картины не хватает вывода заворачивающихся чисел в перспективе: Как сие реализовать?
  3. Многократное щёлканье получилось вот так. В объявлении класса: #ifdef __ANDROID__ _di_JAudioTrack audioTrack; TJavaArray__1<short>* samples; #endif В конструкторе: #ifdef __ANDROID__ samples = new TJavaArray__1<short>(1); samples->Items[0] = 0x0FFF; audioTrack = TJAudioTrack::JavaClass->init(TJAudioManager::JavaClass->STREAM_MUSIC, 11025, TJAudioFormat::JavaClass->CHANNEL_OUT_MONO, TJAudioFormat::JavaClass->ENCODING_PCM_16BIT, TJAudioTrack::JavaClass->getMinBufferSize(11025, TJAudioFormat::JavaClass->CHANNEL_OUT_MONO, TJAudioFormat::JavaClass->ENCODING_PCM_16BIT), TJAudioTrack::JavaClass->MODE_STREAM); #endif На событие: #ifdef __ANDROID__ audioTrack->write(samples, 0, 1); audioTrack->play(); audioTrack->stop(); #endif В деструкторе: #ifdef __ANDROID__ delete samples; #endif
  4. Спасибо большое! На Билдере получилось так: #include <AndroidApi.JNI.Media.hpp> void AndroidSound(double freqHz, int durationMs) { double Pi = 3.14159265358979323846; int count = (int)(44100.0 * 2.0 * (durationMs / 1000.0)) & ~1; TJavaArray__1<short>* samples = new TJavaArray__1<short>(count); for(int i = 0; i < count; i += 2) { short sample = (short)(Sin(2 * Pi * i / (44100.0 / freqHz)) * 0x7FFF); samples->Items[i + 0] = sample; samples->Items[i + 1] = sample; } _di_JAudioTrack audioTrack; audioTrack = TJAudioTrack::JavaClass->init(TJAudioManager::JavaClass->STREAM_MUSIC, 44100, TJAudioFormat::JavaClass->CHANNEL_CONFIGURATION_MONO, TJAudioFormat::JavaClass->ENCODING_PCM_16BIT, count * (sizeof(TJavaArray__1<short>) / 8), TJAudioTrack::JavaClass->MODE_STATIC); if(audioTrack->write((TJavaArray__1<short>*)samples, 0, count)) audioTrack->play(); delete samples; } Только при многократном вызове (у меня при прокрутке щёлкает звуком ScrollBox) получаю ошибку: Не пойму, почему. Сдаётся мне, переменную audioTrack надо как-то уничтожать. Хотя, это интерфейс…
  5. Приведённый здесь пример почему-то не обрезает выбираемые варианты звуков по длительности ADuration. uses AndroidApi.JNI.Media; procedure MakeSound(ADuration: Integer); var Volume: Integer; StreamType: Integer; ToneType: Integer; ToneGenerator: JToneGenerator; begin Volume := TJToneGenerator.JavaClass.MAX_VOLUME; // задаем громкость StreamType := TJAudioManager.JavaClass.STREAM_ALARM; ToneType := TJToneGenerator.JavaClass.TONE_DTMF_0; // тип звука ToneGenerator := TJToneGenerator.JavaClass.init(StreamType, Volume); ToneGenerator.startTone(ToneType, ADuration); end; Задаваемая длительность может только увеличить время воспроизведения, но не может уменьшить. Может есть какие-нибудь способы обрезать воспроизводимое?
  6. Не хочу добавлять компоненты и аудио-файлы в проект ради обычного воспроизведения коротенького щелчка. Никак не могу найти. Android API позволяет воспроизвести просто звук нужной длительности и частоты?
  7. Спасибо. Пригодилось.
  8. Сделал в результате два грида: левый — с одним столбцом, правый — с остальными. Прокрутку синхронизировал: void __fastcall TMainForm::Grid2ViewportPositionChange(TObject *Sender, const TPointF &OldViewportPosition, const TPointF &NewViewportPosition, const bool ContentSizeChanged) { Grid1->ViewportPosition = TPointF(Grid1->ViewportPosition.X, Grid2->ViewportPosition.Y); } void __fastcall TMainForm::Grid1ViewportPositionChange(TObject *Sender, const TPointF &OldViewportPosition, const TPointF &NewViewportPosition, const bool ContentSizeChanged) { Grid2->ViewportPosition = TPointF(Grid2->ViewportPosition.X, Grid1->ViewportPosition.Y); }
  9. Есть хоть какая-нибудь возможность зафиксировать первый столбец, чтобы он не прокручивался? То есть нужен аналог свойства FixedCols из VCL,
  10. Даже на одно единственное и своё? Просто «Developer» достаточно?
  11. С помощью RAD Studio вообще можно хоть как-то собрать приложение, которое будет использоваться исключительно на двух-трёх устройствах в конторе? «iOS Developer Program», как я понимаю, для такой ситуации никак не подходит? «iOS Enterprise Developer Program» — это в моём случае получается «из пушки по воробьям».
  12. У меня прекрасно работает. Что я делаю не так?
  13. У меня, кстати, почему-то Synchronize тормозит интерфейс. Без него всё синхронно работает и отрисовывается.
  14. Всем добрый день! Приоритет нитки для Windows имеет тип TThreadPriority: enum DECLSPEC_DENUM TThreadPriority : unsigned char { tpIdle, tpLowest, tpLower, tpNormal, tpHigher, tpHighest, tpTimeCritical }; __property TThreadPriority Priority = {read=GetPriority, write=SetPriority, nodefault}; Тут по названиям элементов множества всё предельно понятно. Для Android тип уже int: __property int Priority = {read=GetPriority, write=SetPriority, nodefault}; Нигде не могу найти возможные варианты значений для приоритета. Кто-нибудь знает?
  15. Прежде чем его покупать, хоть как-то протестировать можно?