2017-06-23 4 views
0

私のコードには、エミュレートされたストレージに3gpファイルを出力するメディアコードが含まれています。 mediarecorderにwavファイルを出力させる方法はありますか?または私は3gpファイルを取って、それをメソッドのwavに変換する必要がありますか?mediaplayerはwavファイルを出力できますか?

package com.example.wesle.noisemachine; 

import android.content.Intent; 
import android.media.AudioTrack; 
import android.media.MediaCodec; 
import android.media.MediaFormat; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.AppCompatDrawableManager; 
import android.view.View; 
import android.widget.Button; 
import android.media.MediaPlayer; 
import android.media.MediaRecorder; 
import android.os.Environment; 
import android.widget.Toast; 
import java.io.DataOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 

public class ReceiveScreen extends AppCompatActivity { 

    private Button buttonStart, buttonStop, buttonPlay, buttonDecode; 
    private MediaRecorder mediaRecorder = new MediaRecorder(); 
    private String outputFile; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_receive_screen); 

     buttonStart = (Button) findViewById(R.id.buttonStart); 
     buttonStop = (Button) findViewById(R.id.buttonStop); 
     buttonPlay = (Button) findViewById(R.id.buttonPlay); 
     buttonDecode = (Button) findViewById(R.id.buttonDecode); 
     buttonStop.setEnabled(false); 
     buttonPlay.setEnabled(false); 
     outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp"; 
     System.out.println(outputFile); 
     mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     mediaRecorder.setOutputFile(outputFile); 

     buttonStart.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       try { 
        mediaRecorder.prepare(); 
        mediaRecorder.start(); 
       } catch (IllegalStateException ise) { 
        System.out.println("ISE Catch"); 
       } catch (IOException ioe) { 
        System.out.println("IO Catch"); 

       } 
       buttonStart.setEnabled(false); 
       buttonStop.setEnabled(true); 


       Toast.makeText(getApplicationContext(), "Recording started", Toast.LENGTH_LONG).show(); 


      } 
     }); 

     buttonStop.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       mediaRecorder.stop(); 
       mediaRecorder.release(); 

       buttonStop.setEnabled(false); 
       buttonPlay.setEnabled(true); 
       buttonStart.setEnabled(true); 

       Toast.makeText(getApplicationContext(), "Recording Completed", Toast.LENGTH_LONG).show(); 
      } 
     }); 

     buttonPlay.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       MediaPlayer mediaPlayer = new MediaPlayer(); 

       try { 
        mediaPlayer.setDataSource(outputFile); 
        mediaPlayer.prepare(); 
        mediaPlayer.start(); 
       } catch (Exception e) { 
        System.out.println("E Catch"); 
       } 
       Toast.makeText(getApplicationContext(), "Recording Playing", Toast.LENGTH_LONG).show(); 
      } 
     }); 

     buttonDecode.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 



      } 
     }); 

     //Code for the back button 
     Button backbuttonR = (Button) findViewById(R.id.backbuttonR); 
     backbuttonR.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       startActivity(new Intent(ReceiveScreen.this, MainActivity.class)); 
      } 
     }); 
    } 
} 

答えて

1

WAVはPCMエンコーディングを使用する生のオーディオフォーマットです。 MediaRecorderは生の音声録音を提供しません。

WAVを録音する場合は、代わりにAudioRecordを使用してください。

関連する問題