Доска почета


Popular Content

Showing most liked content on 20.04.2017 Во всех областях

  1. 5 likes
    Я поступил проще - на Токио пока даже и не пробовал переходить... Берлин работает, как работает - устраивает. Пока Токио не допилят, пока об этом все не напишут, и пока не появится как минимум первый апдейт - даже и пробовать не буду. Политика Embarcadero мне понятна. Искренне надеюсь, что им хватит ума и бюджета на то, чтобы развивать продукт. Оставался и остаюсь приверженцем Delphi, и во многих случаях ему просто нет объективной замены/альтернативы. Но кидаться "в омут" (на каждую новую версию) - желания нет.
  2. 4 likes
    http://stackoverflow.com/questions/2413426/playing-an-arbitrary-tone-with-android тут формируют буфер синусом и audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, (int)numSamples*2, AudioTrack.MODE_STATIC); audioTrack.write(generatedSnd, 0, generatedSnd.length); // Load the track audioTrack.play(); ну или тут https://gist.github.com/slightfoot/6330866
  3. 3 likes
    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; Типы звука можно посмотреть здесь
  4. 2 likes
    о чем и речь, в стартере есть только win32 нужен trial. Он идет в версии Architect
  5. 2 likes
    По 1-му вопросу для MacOS: function CheckRunning: Boolean; var sl: TStringList; iCount: Integer; s: String; begin sl := TStringList.Create; try GetRunningAplications(sl); iCount := 0; for s in sl do if SameText(s, APP_BundleID) then // APP_BundleID - константа с BundleID приложения Inc(iCount); Exit(iCount < 2) finally sl.Free; end; end; procedure GetRunningAplications(AList: TStrings); var WorkSpace: NSWorkSpace; App: NSRunningApplicationEx; i: Integer; list: NSArray; begin WorkSpace := TNsWorkspace.Wrap(TNsWorkSpace.OCClass.SharedWorkspace); list := Workspace.runningApplications; if (list <> nil) and (list.count > 0) then begin for i := 0 to list.count-1 do begin App := TNSRunningApplicationEx.Wrap(list.objectAtIndex(i)); if App.bundleIdentifier <> nil then AList.Add(string(App.bundleIdentifier.UTF8String)) else AList.Add(String(App.executableURL.path.UTF8String)); end; end; end; Ответ на 3-ий вопрос сам уже долго ищу
  6. 2 likes
    Рахмад, Равиль! Сбилдил, все заработало! Привет с Караганды)
  7. 2 likes
    чтобы прям кросс, думаю такой код подойдёт function StartGranted: boolean; // uses System.IOUtils begin Result := not TFile.Exists(TPath.Combine(TPath.GetDocumentsPath, 'IamStarted')); TFile.WriteAllText(TPath.Combine(TPath.GetDocumentsPath, 'IamStarted'), ''); end; в dpr пишем begin if StartGranted then begin Application.Initialize; Application.CreateForm(TForm2, Form2); Application.Run; end; end. ну и в дестрое главной формы procedure TForm2.FormDestroy(Sender: TObject); //uses System.IOUtils; begin TFile.Delete(TPath.Combine(TPath.GetDocumentsPath, 'IamStarted')); end; Но это не точно, может есть и аналог mutex'a в MacOS
  8. 2 likes
    Для Windows как и в VCL можно использовать Mutex-ы: // в dpr-е uses FMX.Forms, Winapi.Windows, ... {$R *.res} var MUT: THandle; begin MUT := OpenMutex(MUTEX_ALL_ACCESS, false, 'MySuperProgram'); if MUT <> 0 then Application.Terminate; if MUT = 0 then MUT := CreateMutex(nil, false, 'MySuperProgram'); Application.Initialize; ...
  9. 2 likes
    нет такой проблемы, ваш код у меня отработал так uses System.Net.HTTPClient; procedure TForm2.Button1Click(Sender: TObject); var aHttp: THTTPClient; aStr: TStringStream; begin aHttp := THTTPClient.Create; aStr := TStringStream.Create('', TEncoding.UTF8); try aHttp.Get('http://www.cbr.ru/', aStr); Memo1.text := aStr.DataString; finally aHttp.Free; aStr.Free; end; end;
  10. 2 likes
    procedure TForm1.FormCreate(Sender: TObject); begin ScrollBox.AniCalculations.Animation := True; ScrollBox.AniCalculations.BoundsAnimation := True; ScrollBox.AniCalculations.TouchTracking := [ttVertical, ttHorizontal]; end;
  11. 1 like
    что за версия и как определили что нет? мобильная разработка только для Enterprise и Architect может это VCL проект?
  12. 1 like
    Спасибо большое! На Билдере получилось так: #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 надо как-то уничтожать. Хотя, это интерфейс…
  13. 1 like
    задать функцию от времени например если v(t)= const, то v постоянна на любом участке. если v(t) = const + sin(t * coeff ) * amplitude то скорость меняется как вам нужно. остается подобрать coeff и amplitude для нахождения x и y будет менее тривиальная формула, но можно вычислить а еще эта функциональность задается свойствами AnimationType и Interpolation можно посмотреть в исходниках, как там вычисляется Position
  14. 1 like
    Я про это говорю ещё с первого Berlina. См При этом такой проблемы я не увидел на Win10
  15. 1 like
    Для Android лучше Berlin использовать с последним Update 2. На Tokyo Android глючный и тормозит, фактически программы получаются не юзабельные, для Tokyo лучше подождать обновления. Все детали на форуме эбмаркадеры.
  16. 1 like
    В общем вот работающий костыль, который полностью убирает полосы. 2 Timage лежат на TLayout. Если после каждого поворота менять высоту Tlayout на 0,001 туда-обратно, то полос нет. На глаз никакого движения не заметно. Жмем по FloatAnimation и выбираем событие OnProcess. Далее procedure TfrmSplash.FloatAnimation1Process(Sender: TObject); begin {$IFDEF MSWINDOWS} if Layout1.Height > fNormHeight then Layout1.Height := Layout1.Height - 0.001 else Layout1.Height := Layout1.Height + 0.001; {$ENDIF} end; procedure TfrmSplash.FormCreate(Sender: TObject); begin fNormHeight := Layout1.Height; end;
This leaderboard is set to Москва/GMT+03:00