1

音声録音機能を備えたアプリを開発していて、外部ストレージに保存したいだけですが、フォルダーなしで保存する方法はわかりましたが、録音したファイル用にアプリで一意のフォルダーを作成したい

私のコード:

public class MainActivity extends Activity {

MediaRecorder recorder = null;
MediaPlayer player = null;
public static String OUTPUT_FILE;


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    OUTPUT_FILE = Environment.getExternalStorageDirectory()+"audiorecorder.acc";

}


public void record(View v) {
    try {

        beginRecording();

    } catch (IllegalStateException | IOException e) {
        e.printStackTrace();
    }
}


public void stop(View v) {
        stopRecording();
}


public void play(View v) {
    try {
        beginPlay();
    } catch (IllegalArgumentException | SecurityException
            | IllegalStateException | IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}


public void stopPlayback(View v) {
    StopPlay();
}





private void beginRecording() throws IllegalStateException, IOException {
    dictchMediaRecorder();      


    File file = new File(OUTPUT_FILE);


    if(file.exists()){
        file.delete();
    }


    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
    recorder.setAudioEncodingBitRate(9600);
    recorder.setAudioSamplingRate(44100);
    recorder.setOutputFile(OUTPUT_FILE);
    recorder.prepare();
    recorder.start();


}



private void beginPlay() throws IllegalArgumentException, SecurityException, IllegalStateException, IOException  {
    ditchMediaPlayer();
    player = new MediaPlayer();
    player.setDataSource(OUTPUT_FILE);
    player.prepare();
    player.start();

}

私はこの行を追加しただけで、完璧に機能します:

File dir_image;

public static String OUTPUT_FILE;

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


       dir_image = new  File(Environment.getExternalStorageDirectory()+File.separator+"folderName");
       dir_image.mkdirs();

      OUTPUT_FILE = dir_image.getPath()+"/acapella.wav";
4

1 に答える 1

0

これを追加 :

 private File dir_image;

 String myfile="the name of the song.acc";

 dir_image = new  File(Environment.getExternalStorageDirectory()+
                            File.separator+"The name of your folder");
 dir_image.mkdirs();

 File tmpFile = new File(dir_image,myfile);

マニフェストに次を追加する必要があることを追加したいと思います

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />

または、これをコードに追加してみてください:これの代わりに:

OUTPUT_FILE = Environment.getExternalStorageDirectory()+"audiorecorder.acc";

試す :

OUTPUT_FILE = Environment.getExternalStorageDirectory()+
                            File.separator+"The name of your folder"+
                            File.separator+"audiorecorder.acc";
于 2014-05-28T21:21:19.660 に答える