从服务器保存Android视频和音频的内部存储

时间:2015-04-23 17:39:29

标签: android audio video save internal-storage

这是我用来存储图像的方法。

private String saveImage (Context context, String name, Bitmap image){
        ContextWrapper cw = new ContextWrapper(context);
        File dirImages = cw.getDir(Imagenes, Context.MODE_PRIVATE);
        File myPath = new File(dirImages, name + .png);

        FileOutputStream fos = null;
        try{
            fos = new FileOutputStream(myPath);
            image.compress(Bitmap.CompressFormat.JPEG, 10, fos);
            fos.flush();
        }catch (FileNotFoundException ex){
            ex.printStackTrace();
        }catch (IOException ex){
            ex.printStackTrace();
        }
        return myPath.getAbsolutePath();
    }

如何适应存储音频和视频?

2 个答案:

答案 0 :(得分:0)

尝试使用此代码段:

public static final int MEDIA_TYPE_IMAGE = 1;
public static final int MEDIA_TYPE_VIDEO = 2;
public static final int MEDIA_TYPE_AUDIO = 3;

/** Create a File for saving an image, video or audio */
public static File getOutputMediaFile(int type){
    // To be safe, you should check that the SDCard is mounted
    // using Environment.getExternalStorageState() before doing this.

    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), "App");
    // This locat ion works best if you want the created images to be shared
    // between applications and persist after your app has been uninstalled.

    // Create the storage directory if it does not exist
    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            android.util.Log.d("log", "failed to create directory");
            return null;
        }
    }

    // Create a media file name
    File mediaFile;
    if (type == MEDIA_TYPE_IMAGE) {
        mediaFile = new File(mediaStorageDir.getPath() + File.separator +
                "IMG_"+ "PhotoTemp" + ".png");
    } else if(type == MEDIA_TYPE_VIDEO) {
        mediaFile = new File(mediaStorageDir.getPath() + File.separator +
                "VID_"+ "VideoTemp" + ".mp4");
    }
    else if(type == MEDIA_TYPE_AUDIO) {
        mediaFile = new File(mediaStorageDir.getPath() + File.separator +
                "AUD_"+ "AudioTemp" + ".mp3");
    }  
    else {
        return null;
    }

    return mediaFile;
}

然后:

File mediaFile = getOutputMediaFile(MEDIA_TYPE_AUDIO);
if (mediaFile == null) {
    android.util.Log.d("log", "Error creating media file, check storage permissions");
    return null;
}

FileOutputStream fos = new FileOutputStream(mediaFile);
fos.write(data); //where data is byte[]
fos.close();

答案 1 :(得分:0)

虽然你可能在字节缓冲区中以块的形式从服务器下载,但是立即将每个块写入文件