Как сохранить звук из ресурсов / сырья на внутреннюю SD-карту [Android]
Проблема в том, что при первом запуске моего приложения я загружаю некоторые изображения из папки drawable, а затем помещаю их в свое хранилище с помощью этой функции:
1- я сначала делаю их как растровые
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.autobus);
а затем я конвертирую их с помощью этой функции
private String saveToInternalSorage(Bitmap bitmapImage, String imagename) throws IOException{
ContextWrapper cw = new ContextWrapper(getApplicationContext());
// path to /data/data/yourapp/app_data/imageDir
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,imagename);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
fos.close();
}
return directory.getAbsolutePath();
}
Но теперь мне нужно сделать то же самое для звука, мне нужно сохранить звуковые поля в необработанном разделе во внутренней памяти, чтобы использовать их позже.
Так что, если кто-то может мне помочь, что будет с ним мягко, PS: я храню путь к этим файлам в своей базе данных SQLite.
1 ответ
Если вы используете InputStream для чтения, используйте OutputStream для записи, т. Е. BufferedOutputStream-обернутый FileOutputStream. Кроме того, ваш код довольно неэффективен, поскольку он копирует только один байт за раз. Я бы предложил создать буфер байтового массива и использовать эти соответствующие методы чтения / записи:
int BufferedInputStream.read(byte[] buffer, int offset, int length)void BufferedOutputStream.write(byte[] buffer, int offset, int length)
Для более подробной информации воспользуйтесь этой ссылкой, это поможет вам