Перейти к содержанию
Fire Monkey от А до Я

Martifan

Пользователи
  • Постов

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

  • Посещение

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

    16

Сообщения, опубликованные Martifan

  1. компонент который позволяет или метод который позволяет работать приложению фоновом режиме

    и компонент который позволяет потоками получить звук который записываешь с помощью микрофона, и их воспроизвести

    заранее спасибо

  2. TMultiView пока не умеет такого если хочется все таки сделать выпадающий меню то стоит его делать своими руками  у Ярослава Бровина есть на своем сайте это сделана 

    http://delphifmandroid.blogspot.com/2013/10/android_29.html

    http://delphifmandroid.blogspot.com/2013/10/blog-post_28.html

    работает хорошо :)

    удачи :)

  3. Доброго времени сутки
    Возможна ли сделать так? проигрывать музыку не через общий динамик а из динамика телефона где обычно слушаешь разговор когда говоришь ну как у Viber 
    если можно то скажите пожалуйста как это сделать
    заранее спасибо
  4. Доброго времени сутки 
    я открываю пример (Web Browser) все работает хорошо но после того как я хочу жити из этого программы телефон и эмулятор не может завершить работу программы (как будто зависает) это в том случе если я тыкаю компонент (TWebBrowser) если не тыкать компонент и просто загружать страницы то все нармально работает в чем проблема и что не так делаю?
    заранее спасибо 
  5. WaveAudio Package

    пользуюсь этим компонентом 

    http://www.delphiarea.com/products/delphi-packages/waveaudio/ вот ее ссылка 

     

    код получение потока:

    unit Main;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Spin, StdCtrls, Buttons, mmSystem, WaveUtils, WaveStorage, WaveIO, WaveOut,
      WavePlayers, ComCtrls, ScktComp;
    
    const
      WM_RECEIVERREADY = WM_USER;
    
    type
      TMainForm = class(TForm)
        btnDisconnect: TButton;
        btnConnect: TButton;
        gbBroadcaster: TGroupBox;
        lblRemoteAddress: TLabel;
        lblRemotePort: TLabel;
        edRemoteAddress: TEdit;
        seRemotePort: TSpinEdit;
        edFormat: TEdit;
        lblFormat: TLabel;
        SaveDialog: TSaveDialog;
        lblFileSize: TLabel;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure tcpClientConnect(Sender: TObject; Socket: TCustomWinSocket);
        procedure tcpClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
        procedure btnConnectClick(Sender: TObject);
        procedure btnDisconnectClick(Sender: TObject);
        procedure tcpClientRead(Sender: TObject; Socket: TCustomWinSocket);
      private
        tcpClient: TClientSocket;
        WaveFile: TWaveFile;
      end;
    
    var
      MainForm: TMainForm;
    
    implementation
    
    {$R *.dfm}
    
    uses
      WinSock;
    
    { Helper Functions }
    
    function FormatSize(Size: Int64): String;
    const
      KB = 1024;
      MB = 1024 * KB;
      GB = 1024 * MB;
    begin
      if Size < KB then
        Result := FormatFloat('#,##0 Bytes', Size)
      else if Size < MB then
        Result := FormatFloat('#,##0.0 KB', Size / KB)
      else if Size < GB then
        Result := FormatFloat('#,##0.0 MB', Size / MB)
      else
        Result := FormatFloat('#,##0.0 GB', Size / GB);
    end;
    
    { TMainForm }
    
    procedure TMainForm.FormCreate(Sender: TObject);
    begin
      tcpClient := TClientSocket.Create(Self);
      with tcpClient do
      begin
        ClientType := ctNonBlocking;
        OnConnect := tcpClientConnect;
        OnDisconnect := tcpClientDisconnect;
        OnRead := tcpClientRead;
      end;
    end;
    
    procedure TMainForm.FormDestroy(Sender: TObject);
    begin
      tcpClient.Active := False;
    end;
    
    procedure TMainForm.tcpClientConnect(Sender: TObject; Socket: TCustomWinSocket);
    begin
      btnDisconnect.Visible := True;
      btnConnect.Visible := False;
      edRemoteAddress.Enabled := False;
      seRemotePort.Enabled := False;
    end;
    
    procedure TMainForm.tcpClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
    begin
      btnConnect.Visible := True;
      btnDisconnect.Visible := False;
      edRemoteAddress.Enabled := True;
      seRemotePort.Enabled := True;
      edFormat.Text := '';
      if Assigned(WaveFile) then
      begin
        WaveFile.EndRewrite;
        WaveFile.Free;
        WaveFile := nil;
        lblFileSize.Caption := '';
      end;
    end;
    
    procedure TMainForm.btnConnectClick(Sender: TObject);
    begin
      if SaveDialog.Execute then
      begin
        WaveFile := TWaveFile.Create(SaveDialog.FileName, fmCreate or fmShareDenyWrite);
        tcpClient.Host := edRemoteAddress.Text;
        tcpClient.Port := seRemotePort.Value;
        tcpClient.Active := True;
      end;
    end;
    
    procedure TMainForm.btnDisconnectClick(Sender: TObject);
    begin
      tcpClient.Active := False;
    end;
    
    procedure TMainForm.tcpClientRead(Sender: TObject; Socket: TCustomWinSocket);
    var
      WaveFormat: PWaveFormatEx;
      WaveFormatSize: Integer;
      Data: Pointer;
      DataSize: Integer;
    begin
      try
        if WaveFile.State = wssReady then // Getting Wave Format
        begin
          Socket.ReceiveBuf(WaveFormatSize, SizeOf(WaveFormatSize));
          GetMem(WaveFormat, WaveFormatSize);
          try
            Socket.ReceiveBuf(WaveFormat^, WaveFormatSize);
            edFormat.Text := GetWaveAudioFormat(WaveFormat);
            WaveFile.BeginRewrite(WaveFormat);
            Socket.SendText('READY');
            lblFileSize.Caption := 'Waiting for audio data...';
          finally
            FreeMem(WaveFormat);
          end;
        end
        else
        begin
          Sleep(0);
          DataSize := Socket.ReceiveLength;
          if DataSize > 0 then
          begin
            GetMem(Data, DataSize);
            try
              Socket.ReceiveBuf(Data^, DataSize);
              WaveFile.Write(Data^, DataSize);
              lblFileSize.Caption := 'Receiving: ' + FormatSize(WaveFile.Stream.Size);
            finally
              FreeMem(Data);
            end;
          end;
        end;
      except
        tcpClient.Active := False;
        Application.HandleException(Self);
      end;
    end;
    
    end.
    
  6. Доброго времени сутки 
    у меня при вызове запроса сервер возвращает wav файл потоками, как мне собрать обратно из потоков wav файл? у меня аппликаце сделана на ОС Android 
    на десктоп аппликаце все легко там пользуюсь Winapi.Mmsystem и все работает хорошо но Android не знает модуль Winapi.Mmsystem как можно решать эту проблему?
    заранее спасибо 
     
     
  7. ну на данный момент я делаю 2 вариант но есть маленькие проблемки так как Android не знает модуля Winapi.MMSystem а без этого модуля wav файл не могу получить из потока, 

    подскажите как еще можно wav файл получить из потока для Android и если не сложно как сделать 1 вариант можно маленький кусочек кода? заранее спасибо и интересует еще на будущем планируется научить TMediaPlayer проигрывать Поток? 

×
×
  • Создать...