2013-06-07 2 views
0

Call Recorder записывает большинство устройств, но не работает на samsung grand. Запись звука начинается с входящего или исходящего и записывает звук из выбранного источника (микрофон и т. Д.), Но дальнейшее устройство перестанет записывать звук (может быть, причина, по которой рекордер не получает данные из этого источника во время вызова (пользователь Android проблема конфиденциальности)).Устройство записи вызовов не работает на android 4.1.2

Я пробовал AudioRecord и MediaRecorder для этого, но проблема остается нерешенной.

private MediaRecorder recorder = null; 
    recorder.setAudioSource(1); 
    recorder.setOutputFormat(1); 
    recorder.setAudioEncoder(1); 
    recorder.setOutputFile(path); 
    recorder.prepare(); 
    recorder.start(); 

также я попробовал аудиозапись, но он не работает для этой проблемы.

+0

решена ли проблема? Я также столкнулся с этой проблемой – Parveen

ответ

0

Я отправлю код для question.This код прекрасно работает в моем приложении

общественного недействительными OnStart (Intent намерения, Int startId) {

mSampleFile = null; 
    if (mSampleFile == null) { 

     String newFolder = "/Recording"; 

     String extStorageDirectory = Environment 
       .getExternalStorageDirectory().toString(); 

     File myNewFolder = new File(extStorageDirectory + newFolder); 

     if (!myNewFolder.exists()) { 

      myNewFolder.mkdir(); 

     } 

     try { 

      if (myNewFolder != null) { 

       mSampleFile = File.createTempFile(SAMPLE_PREFIX, 
         SAMPLE_EXTENSION, myNewFolder); 
      } 
     } catch (IOException e) { 

     } 
    } 

    if (mSampleFile != null) { 
     SharedPreferences mysharedprefs8 = getSharedPreferences(mypref32, 
       MODE_MULTI_PROCESS); 
     String status = mysharedprefs8.getString("pass", "AMR_NB"); 

     mRecorder = new MediaRecorder(); 
     mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); 
     if (status.equalsIgnoreCase("AMR")) { 
      mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); 
     } else if (status.equalsIgnoreCase("MPEG")) { 
      mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     } else if (status.equalsIgnoreCase("3GPP")) { 
      mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     } else { 
      mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 
     } 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 

     try { 

      mRecorder.setOutputFile(mSampleFile.getAbsolutePath()); 

     } catch (IllegalStateException e2) { 
      // TODO Auto-generated catch block 
      e2.printStackTrace(); 
     } 
     mRecorder.setMaxDuration(600000); 
     try { 

      mRecorder.prepare(); 

     } catch (IllegalStateException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     mRecorder.start(); 
     mRecorder.setOnInfoListener(new OnInfoListener() { 

      @Override 
      public void onInfo(MediaRecorder mr, int what, int extra) { 
       // TODO Auto-generated method stub 

       try { 
        mRecorder.stop(); 
        mRecorder.reset(); 
        mRecorder.release(); 

       } catch (Exception e) { 

       } 

      } 
     }); 

    } 
+0

Но источник MediaRecorder.AudioSource.VOICE_CALL не работает на большинстве устройств, я думаю, что андроиду не разрешено записывать голосовые вызовы пользователя. – ConceptSpecs

+0

В вашем файле манифеста добавлены исправления уровня системы. Затем вы сможете записывать голосовые вызовы. –

+0

Но он всегда показывает, что «Разрешение предоставляется только системным приложениям». Смотрите, что мы можем записывать восходящую и нисходящую линии связи в качестве источника, поэтому нам нужно попробовать то, что разрешено на всех устройствах, но проблема в том, что 4.1.2 запустил запись, но не получал никаких данных из источника, а продолжительность записи увеличивается, а затем останавливает запись на вызов. – ConceptSpecs