0

私はAndroidの初心者で、MediaRecorderを使用して音声を録音しようとしており、オーディオファイルも正常に作成しています。その後、ボタンをクリックして次のアクティビティに移動しましたが、そこにも問題はなく、サウンドも正常に再生されましたが、来た場所から前のアクティビティに移動すると、すべてのクラス参照と変数が null になり、アクティビティの開始時に録音を行う必要があったため、オーディオファイルをnullとして.iはシングルトンクラスの戦略を実装していましたが、そのクラス変数も戻ってくるとnullになります。

oncreate() メソッドのレコードのコード。///

Bundle extras = this.getIntent().getExtras();
        if (extras != null) {
            setrecordtime = extras.getLong("RECORDTIME");

ここで記録時間を見つけてから、記録を開始します。///

if (setrecordtime!=0&&setrecordtime < INFINITE) {

            startrecordbutton.setVisibility(View.INVISIBLE);
            stoprecordbutton.setVisibility(View.INVISIBLE);
            startrecording();

//記録開始メソッド

private void startrecording() {

        myrecordaudiofile = getAudiofilemedia();
        if (myrecordaudiofile != null){
        myaudiorecoreder = new MediaRecorder();
        myaudiorecoreder.setAudioSource(MediaRecorder.AudioSource.MIC);
        myaudiorecoreder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        myaudiorecoreder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        myaudiorecoreder.setOutputFile(myrecordaudiofile.getAbsolutePath());

        try {
            myaudiorecoreder.prepare();
            myaudiorecoreder.start();


        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        myrecordtextview.setText("RECORDING STARTED......");
        setRecordstatus(true);
        }
        else
        {
            Toast.makeText(getApplicationContext(), "NO FILE TO RECORD", 0).show();
        }

        new Timer().schedule(new TimerTask() {

            @Override
            public void run() {
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        stoprecording();
                        //myrecordtextview.setText("RECORDING...STATUS");
                    }
                });

            }
        }, setrecordtime);
    }

次の画面に移動してサウンドを再生 //

case R.id.preview_button1:
            Intent intent1 = new Intent(context, DisplayandPlay.class);
            intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent1);
            break;

DisplayandPlay.class から戻った後、ファイルを保存しますが、オーディオ ファイルは null になります。audiorecord クラスを使用するか、mediarecord のみを使用するという提案に感謝します。

4

0 に答える 0