0

2 つの通話ソースから別々に同時に録音しようとしています。これが私が使用しているコードです

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