如何将多张图像从SD卡上传到谷歌硬盘?

时间:2014-05-09 15:21:37

标签: android out-of-memory android-sdcard bitmapimage google-drive-android-api

我正在设计Android应用程序,它将图像文件从SD卡中的特定文件夹上传到Google驱动器。但我得到了

E/AndroidRuntime( 6808): FATAL EXCEPTION: main
E/AndroidRuntime( 6808): java.lang.OutOfMemoryError error while trying to upload the files.

代码段:

    File sdDir = Environment
              .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    File yourDir = new File(sdDir, "CameraAPIDemo");
    for (File f : yourDir.listFiles()) {
        if (f.isFile()){
            String name = f.getName();
            Log.i(TAG, "name =" + name);
            String CompletePath=yourDir + "/" + name;
            //Decode the file from the folder to bitmap
            Bitmap bmp = BitmapFactory.decodeFile(CompletePath);
            saveFileToDrive(sFolderId,bmp,name);

    }

saveFileToDrive包含将一个文件上传到Google云端硬盘的逻辑。如何进行?请帮帮我......

1 个答案:

答案 0 :(得分:0)

你正在逐步加载所有图像到for循环中的内存,因为我假设saveFileToDrive在UI上的一个单独的线程上运行。发生的事情是你正在尝试将SD目录中的所有文件加载到内存中并将它们全部上传到Drive并行(由于线程)。

一个简单的解决方案是使saveFileToDrive成为一个AsyncTask,它将在@Override onPostExecute()方法中通知循环(在UI线程上)。您将在单独的线程上上传图片,以便UI不会滞后,但一次只上传一张,这样就不会内存耗尽。

您是否浏览过此处的文档:https://developers.google.com/drive/android/create-file