Android Record Audio to TIdBytes and play it
#1
السلام عليكم 

محاولة
 تسجيل audio  فى TIdBytes و تشغيله ...
PHP كود :
uses
  Androidapi
.JNI.Media,
  Androidapi.Helpers,
  Androidapi.JNIBridge,
  IdGlobal//indy 

PHP كود :
procedure PlayTIdBytesAudio(TIdBytesAudioTIdBytes);
var
  Mintrack  Integer;
  AudioPlay JAudioTrack;
begin
  Mintrack 
:= TJAudioTrack.JavaClass.getMinBufferSize
                                                      
(
                                                        48000,
                                                        TJAudioFormat.JavaClass.CHANNEL_OUT_MONO,
                                                        TJAudioFormat.JavaClass.ENCODING_PCM_16BIT
                                                      
);

  if Length(TIdBytesAudio) < Mintrack then Exit;

  AudioPlay:= TJAudioTrack.JavaClass.init
                                         
(
                                            TJAudioManager.JavaClass.STREAM_MUSIC,
                                            48000,
                                            TJAudioFormat.JavaClass.CHANNEL_OUT_MONO,
                                            TJAudioFormat.JavaClass.ENCODING_PCM_16BIT,
                                            Length(TIdBytesAudio),
                                            TJAudioTrack.JavaClass.MODE_STREAM
                                         
);

  if ((AudioPlay as JAudioTrack).getPlayState <> (* PLAYSTATE_PLAYING *))then
  
(AudioPlay as JAudioTrack).play;


  (AudioPlay as JAudioTrack).write(TBytesToTJavaArray(TBytes(TIdBytesAudio)), 0Length(TIdBytesAudio));
end;


function 
RecordAudioToTIdBytes(BufferSizeInteger): TIdBytes;
var
   AudioRecorder    JAudioRecord;
   MinBufferSize    Integer;
   AudioArray       TJavaArray<Byte>;
   BytesReaded      Integer;
   BytesReadedCount Integer;
   ArrayBytesReaded TIdBytes;
begin
    MinBufferSize 
:= TJAudioRecord.JavaClass.getMinBufferSize
                                                             
(
                                                               48000,
                                                               TJAudioFormat.JavaClass.CHANNEL_IN_MONO,
                                                               TJAudioFormat.JavaClass.ENCODING_PCM_16BIT
                                                             
);

    if BufferSize MinBufferSize then BufferSize := MinBufferSize;

    AudioArray:= TJavaArray<Byte>.Create(BufferSize) ;

    AudioRecorder:= TJAudioRecord.JavaClass.init
                                                
(
                                                  TJMediaRecorder_AudioSource.JavaClass.MIC,
                                                  48000,
                                                  TJAudioFormat.JavaClass.CHANNEL_IN_MONO,
                                                  TJAudioFormat.JavaClass.ENCODING_PCM_16BIT,
                                                  BufferSize
                                                
);



    (AudioRecorder as JAudioRecord).startRecording;

    BytesReadedCount := 0;

    while (BytesReadedCount BufferSize) do
    begin
      SetLength
(ArrayBytesReaded0);
      BytesReaded := (AudioRecorder as JAudioRecord).read(AudioArray0BufferSize);

      Inc(BytesReadedCountBytesReaded);

      ArrayBytesReaded := TIdBytes(TJavaArrayToTBytes(AudioArray));
      IdGlobal.AppendBytes(ResultArrayBytesReaded);
    end;

    (AudioRecorder as JAudioRecord).stop;
end


PHP كود :
   PlayTIdBytesAudio(RecordAudioToTIdBytes(400000 (* ≈ 4 soconde *))); 
[-] كل من 1 user says قال شكرا ل haniid على المشاركة المفيدة
  • DAMOCLES
الرد
#2
السلام عليكم 

محاولة ثانية باستعمال مكتبة bass 

كود :
https://github.com/TDDung/DelphiFMX-BASS

record to buffer 
read 
play

فى المرفق اسسيات فقط كمدخل للتعامل مع المكتبة فى الاندرويد 
مثلا يمكن ارسال الصوت عبر udp ...
 (live chat audio ...)


الملفات المرفقة
.rar   New folder.rar (الحجم : 468.85 ك ب / التحميلات : 4)
[-] كل من 2 users say قال شكرا ل haniid على المشاركة المفيدة
  • DAMOCLES, wadoud
الرد
#3
نفس المثال السابق بدون استعمال المكتبة bass


الملفات المرفقة
.rar   Record Audio PCM.rar (الحجم : 14.83 ك ب / التحميلات : 3)
[-] كل من 2 users say قال شكرا ل haniid على المشاركة المفيدة
  • DAMOCLES, wadoud
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم