Android 设置要上载到Google Drive的缩略图

Android 设置要上载到Google Drive的缩略图,android,google-drive-api,Android,Google Drive Api,我使用以下代码设置要在Google Drive上上载的文件的缩略图: // Set thumb nail path String thumbnail_path = mediaContent.getFile().getAbsolutePath(); // thumbnail_path : "/sdcard/Picture/ds01.jpg" // File's meta data. File body = new

我使用以下代码设置要在Google Drive上上载的文件的缩略图:

// Set thumb nail path                  
String thumbnail_path = mediaContent.getFile().getAbsolutePath();   
// thumbnail_path : "/sdcard/Picture/ds01.jpg" 

// File's meta data.                    
File body = new File();                 
body.setTitle(fileContent.getName());                   
body.setMimeType("image/jpeg");

// Thumb nail                   
final Thumbnail thumbnail = new Thumbnail();                    
thumbnail.setMimeType("image/jpeg");            

// UPDATE HERE : define byte array
byte[] data = Base64.decodeBase64(getData(thumbnail_path));  
thumbnail.encodeImage(Base64.encodeBase64String(data));

// set thumb nail for file
body.setThumbnail(thumbnail);
代码运行成功,但我认为有问题,我不知道在哪里。 因为我使用了下面的代码来获取与文件相关的信息,并且file.getThumbnail()为null。(getTitle()和getMimeType()成功)

以下代码用于上传,它成功了:

String folderId = ManageFile.getIdLink();
Log.d(TAG, "folderId " + folderId);
body.setParents(Arrays.asList(new ParentReference().setId(folderId)));

File file = service.files().insert(body, mediaContent).execute();
更新: -我添加了这些代码来描述如何获取字节数组

protected byte[] getData(String thumbnail_path) {
        byte[] imageData = null;
        final int THUMBNAIL_SIZE = 96;

        FileInputStream fis;
        try {
            fis = new FileInputStream(thumbnail_path);

            Bitmap imageBitmap = BitmapFactory.decodeStream(fis);
            imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE, false);

            ByteArrayOutputStream baos = new ByteArrayOutputStream();  
            imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);

            // byte data array
            imageData = baos.toByteArray();

            return imageData;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
p/s: - -

请告诉我如何成功获得拇指指甲图像。
谢谢

您需要提供Base64编码的图像内容,而不是路径

final Thumbnail thumbnail = new Thumbnail();                    
thumbnail.setMimeType("image/jpeg");            
thumbnail.setImage(base64encodedContent);

您可以对未编码的
getData
方法中的数据进行解码

您还应该使用
Base64.encodebase64urlsafesting
而不是
Base64.encodeBase64String
。您可以使用该方法作为一种方便。这将为您进行编码

替换此项:

byte[] data = Base64.decodeBase64(getData(thumbnail_path));  
thumbnail.setImage(Base64.encodeBase64String(data));
为此:

byte[] data = getData(thumbnail_path);  
thumbnail.encodeImage(data);

很抱歉,但您的代码将显示警告:“无效值:不是有效的base64字节字符串”。如果使用了我的代码,警告不会显示。@AlexTran对不起,我误读了代码。我编辑了我的答案。非常感谢你们的努力,你们的代码很好,好的,但我得到了“base64encodedContent”评论的感谢。我更新了我的问题,请检查是否有新错误(file.getThumbnail()为空),请帮助我。
byte[] data = getData(thumbnail_path);  
thumbnail.encodeImage(data);