25

AudioRecord'u AudioSource.VOICE_DOWNLINK ile Nexus 5X, Android 7.1 (AOSP'tan kendi yapım) üzerinde kullanmaya çalışıyorum.Arama kaydı - Nexus 5X üzerinde çalışmasını sağlayın (köklendirme veya özel ROM mümkün)

Zaten izinler aşamasını geçiyorum - APK'mı ayrıcalıklı uygulamalara taşıdım, bu kaynakla ilgili bir istisna atmayı durdurmak için Android kaynağında AudioRecord'a bir ayarlama yaptı.

Şimdi telefon görüşmesi sırasında boş kayıt arabellekleri alıyorum.

Çok sayıda çağrı kaydetme uygulamasının olduğunu ve diğer cihazlarda çalıştığını biliyorum. Ayrıca, kökleşmiş bir N5 üzerinde bazı kesmeleri gerçekleştirebilen ve çalışmasını sağlayan belirli uygulamalar gördüm.

Aynı şeyi Nexus 5X'te elde etmek istiyorum - ANY ayarlaması benim için tamam, Android sürümünü değiştirme, Qualcomm sürücülerini, cihaz yapılandırma dosyalarını vb. Değiştirmeyi de dahil - temelde özel bir ROM'da elde edilebilecek her şey.

Platform koduyla uğraşmayı denedim - hardware/qcom/audio/hal/voice.c, özellikle de işlev voice_check_and_set_incall_rec_usecase, ancak şu ana kadar bir anlam ifade edemedim.

Ayrıca cihaz/LGE/bullhead/mixer_paths.xml kontrol orada kayıt aramak için ilgili bölüm var bulundu:

<!-- Incall Recording --> 
<ctl name="MultiMedia1 Mixer VOC_REC_UL" value="0" /> 
<ctl name="MultiMedia1 Mixer VOC_REC_DL" value="0" /> 
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="0" /> 
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="0" /> 
<!-- Incall Recording End --> 

Ama aynı zamanda bunun dışında anlam veremiyordum veya nasıl yardımcı olunabilir.

+0

Herhangi bir beklentiniz var mı? –

+0

tryRevider.record() öğesini deneyin ve kontrol etmeyi deneyin. Ayrıca kayıt kodunuzu da biraz gönderin. –

+0

Kilitlenme yok, bu yüzden denemede bir nokta yok. – SirKnigget

cevap

0

Nexus 5'e özgü bir sorun olup olmadığından emin değil, ancak genellikle çağrıları kaydetmek için kullanılan sınıf MediaRecorder'dur. AudioRecorder'u MediaRecorder değiştirmeyi denediniz mi? Ben MediaRecorder.AudioSource.VOICE_CALL kullandım Bu örnekte

import android.media.MediaRecorder; 
import android.os.Environment; 

import java.io.File; 

import java.io.IOException; 


public class CallRecorder { 

    final MediaRecorder recorder = new MediaRecorder(); 
    final String path; 

    /** 
    * Creates a new audio recording at the given path (relative to root of SD card). 
    */ 
    public CallRecorder(String path) { 
     this.path = sanitizePath(path); 
    } 

    private String sanitizePath(String path) { 
     if (!path.startsWith("/")) { 
      path = "/" + path; 
     } 
     if (!path.contains(".")) { 
      path += ".3gp"; 
     } 
     return Environment.getExternalStorageDirectory().getAbsolutePath() + path; 
    } 

    /** 
    * Starts a new recording. 
    */ 
    public void start() throws IOException { 
     String state = android.os.Environment.getExternalStorageState(); 
     if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) { 
      throw new IOException("SD Card is not mounted. It is " + state + "."); 
     } 

     // make sure the directory we plan to store the recording in exists 
     File directory = new File(path).getParentFile(); 
     if (!directory.exists() && !directory.mkdirs()) { 
      throw new IOException("Path to file could not be created."); 
     } 

     recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     recorder.setOutputFile(path); 
     recorder.prepare(); 
     recorder.start(); 
    } 

    /** 
    * Stops a recording that has been previously started. 
    */ 
    public void stop() throws IOException { 
     recorder.stop(); 
     recorder.release(); 
    } 

} 

ama aynı zamanda MediaRecorder.AudioSource.VOICE_COMMUNICATION ve benzeri diğer seçenekleri test edebilirsiniz:

this yığın taşması soruya dayanarak, sana Ben blog post dayalı olarak aşağıdaki kodu deneyin düşünüyorum Sadece telefonunuzda herhangi bir donanım sorunu olup olmadığını görmek için mikrofon.

+0

Gerçek zamanlı kayıt yapmak için AudioRecord kullanmam gerekiyor. – SirKnigget

+0

** Şimdi bir telefon görüşmesi sırasında boş kayıt arabelleklerini alıyorum ** - hem AudioRecorder hem de aynı kanalı kullanarak çağrı yapıyor ???? Bazı hoparlörleri aramayı denedim, konuşmayı konuşmacıya koyup daha sonra – Debu

+0

'u aramayı deneyin. Konuşmayı hoparlörü kullanmaya ilgi duymuyorum, aramayı AudioSource.VOICE_CALL adresinden düzgün bir şekilde kaydetmem gerekiyor. – SirKnigget

İlgili konular