как сохранить аудио файл на внутреннюю память в Android - PullRequest
0 голосов
/ 24 октября 2018

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

Мой проект позволяет пользователю присоединить аудиофайл из внешнего хранилища и получить его Uri

от кнопки setOnclick

acs.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(
                    lol, "Open Audio (mp3) file"), RQS_OPEN_AUDIO_MP3);

(это из функции onActivityResult)

if (resultCode == RESULT_OK) {
        if (requestCode == RQS_OPEN_AUDIO_FX) {
            audioFxUri = data.getData();
        }
}

После того, как я хочу сохранить звук во внутреннем хранилище,

Можете ли вы помочь с кодом для хранения аудиофайлов во внутренней памяти?Также он проходит через процесс File to bytearray, затем byte массив в файл (с расположением внутреннего хранилища)?

Я просто опираюсь на то, что я видел до сих пор.Надеюсь, ваш код поможет мне.

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете скопировать его в файлы приложения dir: getApplicationContext().getFilesDir().getAbsolutePath()

public Uri copyFile(Uri uri){

    if (uri == null) {
        return null;
    }

    String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(getApplicationContext().getContentResolver().getType(uri));

    String fileName = "some_name" + "." + extension;

    File tempFile = new File(getApplicationContext().getFilesDir().getAbsolutePath(), fileName);

    try {

        boolean fileCreated = tempFile.createNewFile();

        if(!fileCreated){
            Log.e(LOG_TAG,"error creating file");
        }

        InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(uri);

        if(inputStream != null){
            IOUtils.copy(inputStream, new FileOutputStream(tempFile));
        }
    } catch (IOException | NullPointerException ex) {
        Log.d(LOG_TAG, "Exception caught: " + ex.getMessage());
    }

    return Uri.fromFile(tempFile);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...