2

ブロードキャストでオーディオファイルを録音していますが、エラーは発生していませんが、recorder.stop()が呼び出されることはありません。コードは次のとおりです。

String file_name= "recording";
        audiofile = File.createTempFile(file_name, ".3gp", sampleDir);
        String path=Environment.getExternalStorageDirectory().getAbsolutePath();
        //recorder = null;

         int audioSource = MediaRecorder.AudioSource.VOICE_CALL;

         recorder.setAudioSource(audioSource);
         recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
         recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
         recorder.setOutputFile(audiofile.getAbsolutePath()); 


             recorder.prepare();

             recorder.start(); 

そして私の停止機能には以下が含まれています:

public void stopRecord()throws IOException{
             if(recorder!=null)
             {

             recorder.stop();

             recorder.release();
             recorder.reset();

             Log.d(TAG, "recording stopped");
             }
             else
             {
                 Log.d(TAG, "recording stopped error");
             }

オフフックステージでスタートレコーダーを呼び出し、アイドル時にストップレコーダーを呼び出していますが、アイドル状態になり、停止はまったく呼び出されません。

case TelephonyManager.CALL_STATE_IDLE:  
                     prev_state=state;
                     Log.d(TAG, "CALL_STATE_IDLE==>"+incoming_nr);

                     Log.d(TAG, "recording stopped");  // Executes till here and skips the below part
                     try {
                        stopRecord();
                         Log.d(TAG, "recording stopped");  
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                     Log.d(TAG, "recording stopped");  

私は必要なすべての許可を与えましたplsはこのおかげで私を助けてくれます

4

1 に答える 1

0

TelephonyManager.EXTRA_STATE_IDLEアクティビティがないときに呼び出され、これは前に呼び出されTelephonyManager.EXTRA_STATE_OFFHOOKます。

stopRecord()ここでは、状態で関数を呼び出しているため、TelephonyManager.EXTRA_STATE_IDLEにアクセスしていますmRecorder.stop();が、その時点でRecorderオブジェクトはnullであり、初期化されていません。mediaRecorderを使用して記録する場合のNull例外をより明確にするために、この投稿をチェックしてください。コメントもチェックしてください。

エラーがない限り、try/catchブロックで呼び出しています。したがって、スタックトレースのみが生成されます。

于 2013-01-19T06:35:13.443 に答える