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

azm_ezm_ivan

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

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

  • Посещение

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

  1. 18 минут назад, ZuBy сказал:
    
    MediaRecorder recorder = new MediaRecorder();

    там в документации первой строкой идет инициализация/создание объекта

    вам нужно аналогично сделать

    
     recorder := TJmediarecorder.JavaClass.init;

    как-то так, писал на форуме, но должны понять суть

    а где писал ? ссылку можно ?

     

  2. В 17.09.2016 в 19:02, Pax Beach сказал:

    Просьба код оформлять в специально предназначенном для этого

    
    блоке код

     

    1. Для чего здесь объявлены AudioMem и  AudioStream, если они не используются?

    2. для чего приведение типа в конструкциях

    
    (AudioRecorder as JAudioRecord)

    Без этого не вызываются методы?

    3. Когда перестает работать таймер и что выполняется по его событию, как часто?

    4. Вообще логику работы примера нельзя ли описать в комментариях над строчками кода? Пока не очень понятно, как это должно работать?

     

    задача....снять голос с микрофона и определить dB(примерно)

    Этот выриант закопипостил...пытался под себя отредактировать. Уже три дня сражаюсь ...решил посмотреть Android API. в итоге вышло вот:

    unit Unit2;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
      Androidapi.JNI.Media, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes,
      FMX.Platform.Android, FMX.StdCtrls, FMX.Controls.Presentation, java.ioFile;
    
    type
      TForm2 = class(TForm)
        Button1: TButton;
        Timer1: TTimer;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
       recorder:Jmediarecorder;
       path:Jstring;
      end;
    
    var
      Form2: TForm2;
    
    implementation
    
    {$R *.fmx}
    
    
    
    procedure TForm2.Button1Click(Sender: TObject);
    begin
    recorder.setAudioSource(TJMediaRecorder_AudioSource.JavaClass.MIC);// назначение микрофона
    recorder.setAudioSamplingRate(44100);
     recorder.setAudioEncodingBitRate(96000);
     recorder.setOutputFormat(TJMediaRecorder_OutputFormat.JavaClass.MPEG_4);
     recorder.setAudioEncoder(tjMediaRecorder_AudioEncoder.JavaClass.AAC);
     path:=TJFile.JavaClass.getAbsolutePath; // узнаем путь сохранения
     recorder.setOutputFile(path);
      recorder.prepare;
      recorder.start;
      Timer1.Enabled:=true; //интервал 500
    end;
    
    procedure TForm2.Timer1Timer(Sender: TObject);
    var
    amplit:integer;
    begin
     amplit:=recorder.getMaxAmplitude; //узнаем амплитуду
     Label1.Text:=inttostr(amplit);//выводим на лейбл
    end;
    
    end.

    Android API

     

    Но вот то и них...ра. Извините НЕ ФУНКЦИКЛИРУЕТ !!!! - acces violation at sdress 5490e0d6, accessing adress 00000000

     

    Что за...?

  3. помогите разобраться.... по идее должно проигрывать, но тишина.....?

    unit Unit5;
    interface
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,FMX.Platform.Android,
      Androidapi.JNI.Net,
      Androidapi.JNIBridge,
      Androidapi.JNI.JavaTypes,
    Androidapi.JNI.Media, FMX.Controls.Presentation, FMX.StdCtrls;
    type
      TForm5 = class(TForm)
        Label1: TLabel;
        Timer1: TTimer;
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        AudioRecorder: JAudioRecord;
        sampleRate: Integer;
        channelConfig: Integer;
        audioFormat: Integer;
        minBufSize: Integer;
        AudioMem: TMemoryStream;
        AudioStr: TJavaArray<SmallInt>;
        enable_audio:Boolean;
        AudioPlay: JAudioTrack;
        AudioStream: TJavaArray<SmallInt>;
        trackmin: Integer;
    
      public
        { Public declarations }
      end;
    var
      Form5: TForm5;
    implementation
    {$R *.fmx}
    procedure TForm5.Button1Click(Sender: TObject);
    begin
    (AudioRecorder as JAudioRecord).stop;
    (AudioRecorder as JAudioRecord).release;
    trackmin:= TJAudioTrack.JavaClass.getMinBufferSize(11025,
                                                         TJAudioFormat.JavaClass.CHANNEL_OUT_MONO,
                                                         TJAudioFormat.JavaClass.ENCODING_PCM_16BIT);
      AudioStream:= TJavaArray<SmallInt>.Create(trackmin);
      AudioPlay:= TJAudioTrack.JavaClass.init(TJAudioManager.JavaClass.STREAM_MUSIC,
                                                  11025,
                                                  TJAudioFormat.JavaClass.CHANNEL_OUT_MONO,
                                                  TJAudioFormat.JavaClass.ENCODING_PCM_16BIT,
                                                  trackmin,
                                                  TJAudioTrack.JavaClass.MODE_STREAM);
    (AudioPlay as JAudiotrack).play;
    end;
    procedure TForm5.FormCreate(Sender: TObject);
    begin
    enable_audio:=false;
    sampleRate:= 11025;
      channelConfig:= TJAudioFormat.JavaClass.CHANNEL_IN_MONO;
      audioFormat:= TJAudioFormat.JavaClass.ENCODING_PCM_16BIT;
      // minBufSize = 1024 Bytes
      minBufSize:= TJAudioRecord.JavaClass.getMinBufferSize(sampleRate, channelConfig, audioFormat);
      // AudioRecover = 1024*4 = 4096
      AudioStr:= TJavaArray<SmallInt>.Create(minBufSize*4);
      AudioMem:= TMemoryStream.Create;
      AudioRecorder:= TJAudioRecord.JavaClass.init(TJMediaRecorder_AudioSource.JavaClass.MIC,
                                                        sampleRate,
                                                        channelConfig,
                                                        audioFormat,
                                                        minBufSize*4);
    (AudioRecorder as JAudioRecord).startRecording;
    Timer1.Enabled:= True;
    
    end;
    end.

     

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