Как сделать папку для файлов с моими аудиозаписями?

Я разрабатываю какое-то приложение с функцией записи голоса, и я просто хочу сохранить его на внешнем хранилище, теперь я знаю, как сохранить его без папки, но я хочу, чтобы мое приложение создавало уникальную папку для файлов, которые я записал

мой код:

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";

person Matt    schedule 28.05.2014    source источник
comment
отличная работа. удачи с вашим приложением   -  person mremremre1    schedule 29.05.2014
comment
Благодарю человека. Вы мне очень помогли   -  person Matt    schedule 29.05.2014


Ответы (1)


Добавь это :

 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";
person mremremre1    schedule 28.05.2014
comment
Tnx, но как насчет: recorder.setOutputFile(OUTPUT_FILE); и player.setDataSource(OUTPUT_FILE);?? - person Matt; 29.05.2014
comment
я думаю, вам следует попробовать setOutputfile(tmpFile) или (Environment.getExternalStorageDirectory()+ File.separator+имя вашей папки+ File.separator+название песни.acc); - person mremremre1; 29.05.2014
comment
не могу понять: метод setOutputFile(FileDescriptor) в типе MediaRecorder неприменим для аргументов (файл) - person Matt; 29.05.2014
comment
@Matt, вы можете проверить один из моих других ответов, в котором я отвечаю о том, как захватывать и сохранять изображения. Посмотрите на код, в основном на методы takescreenshot и onpicturetaken, и вы увидите больше информации о файлах и выходных потоках. Просто найдите ответ с наибольшим количеством кода, чтобы найти мой. - person mremremre1; 29.05.2014
comment
@Matt stackoverflow.com/questions/23921128/ надеюсь, это поможет :) - person mremremre1; 29.05.2014
comment
Я благодарю вас за то, что вы пытались мне помочь, но это не сработало для меня.. /// извините - person Matt; 29.05.2014
comment
dir_image = новый файл (Environment.getExternalStorageDirectory()+File.separator+имя_папки); dir_image.mkdirs(); OUTPUT_FILE = dir_image.getPath()+/audiorecorder.acc; - person Matt; 29.05.2014
comment
беру обратно .. немного нестандартно подумал и вот что у меня получилось с вашей помощью большое спасибо .. ( это мой первый раз :) ) - person Matt; 29.05.2014
comment
@Matt, хорошо :) Я добавил в свой ответ еще кое-что, что может дать вам более простое решение, не меняя большую часть вашего кода. попытайся - person mremremre1; 29.05.2014
comment
Круто .. взгляните на мое решение, я добавил его на свой вопрос. - person Matt; 29.05.2014
comment
Хороший программист измеряется количеством букв в его коде :) - person Matt; 29.05.2014