如何将 ressources/raw 中的声音存储到内部 SD 卡 [Android]
How to store sound from ressources/raw to the internal sd card [Android]
问题是,在我的应用程序第一次启动时,我从可绘制文件夹中加载了一些图像,然后使用此功能将它们放入我的存储中:
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 数据库中。
如果您使用 InputStream 读取,请使用 OutputStream 写入,即 BufferedOutputStream-wrapped FileOutputStream。此外,您的代码效率很低,因为它一次只复制一个字节。我建议创建一个字节数组缓冲区并使用这些相关的 read/write 方法:
int BufferedInputStream.read(byte[] buffer, int offset, int length)void BufferedOutputStream.write(byte[] buffer, int offset, int length)
有关更多详细信息,请使用此 link 它对您有帮助
问题是,在我的应用程序第一次启动时,我从可绘制文件夹中加载了一些图像,然后使用此功能将它们放入我的存储中:
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 数据库中。
如果您使用 InputStream 读取,请使用 OutputStream 写入,即 BufferedOutputStream-wrapped FileOutputStream。此外,您的代码效率很低,因为它一次只复制一个字节。我建议创建一个字节数组缓冲区并使用这些相关的 read/write 方法:
int BufferedInputStream.read(byte[] buffer, int offset, int length)void BufferedOutputStream.write(byte[] buffer, int offset, int length)
有关更多详细信息,请使用此 link 它对您有帮助