0

我正在尝试从两个电话源分别同时录制。这是我正在使用的代码

telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

    listener = new PhoneStateListener() {
          @Override
          public void onCallStateChanged(int state, String incomingNumber) {
        switch (state) {
            case TelephonyManager.CALL_STATE_IDLE:
                    StopRecording(recorder1);
                    StopRecording(recorder2);                   
              break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                    StartRecording_DownLink();
                    StartRecording_UpLink();
              break;
            case TelephonyManager.CALL_STATE_RINGING:
              break;
            }
          }
        };
        telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);



public void StartRecording_UpLink(){
         recorder1 = new MediaRecorder();

         recorder1.setAudioSource(MediaRecorder.AudioSource.VOICE_UPLINK);
         recorder1.setOutputFormat(output_formats[currentFormat]);
         recorder1.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
         recorder1.setOutputFile(getFilename(AUDIO_RECORDER_FOLDER_UPLINK));


         recorder1.setOnErrorListener(errorListener);
         recorder1.setOnInfoListener(infoListener);

         try{
             recorder1.prepare();
             recorder1.start();
         }catch (IllegalStateException e){
             e.printStackTrace();
         }catch (IOException e) {
             e.printStackTrace();
        }
         }

    public void StartRecording_DownLink(){
         recorder2 = new MediaRecorder();

         recorder2.setAudioSource(MediaRecorder.AudioSource.VOICE_DOWNLINK);
         recorder2.setOutputFormat(output_formats[currentFormat]);
         recorder2.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
         recorder2.setOutputFile(getFilename(AUDIO_RECORDER_FOLDER_DOWNLINK));


         recorder2.setOnErrorListener(errorListener);
         recorder2.setOnInfoListener(infoListener);

         try{
             recorder2.prepare();
             recorder2.start();
         }catch (IllegalStateException e){
             e.printStackTrace();
         }catch (IOException e) {
             e.printStackTrace();
        }
         }

再次明确,我想在呼叫/被呼叫时同时从上行链路和下行链路记录。本程序只记录上行链路。调用下行记录方法时会弹出错误。请帮忙 。

4

0 回答 0