代码之家  ›  专栏  ›  技术社区  ›  Tom

从android上传Google Drive图像

  •  0
  • Tom  · 技术社区  · 7 年前

    这是代码。。。

    public void CreateFileOnGoogleDrive(DriveContentsResult result){
    
    
        final DriveContents driveContents = result.getDriveContents();
    
        // Perform I/O off the UI thread.
        new Thread() {
            @Override
            public void run() {
                // write content to DriveContents
                OutputStream outputStream = driveContents.getOutputStream();
                Writer writer = new OutputStreamWriter(outputStream);
                try {
                    writer.write("Hello abhay!");
                    writer.close();
                } catch (IOException e) {
                    Log.e(TAG, e.getMessage());
                }
    
                MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
                        .setTitle("abhaytest2")
                        .setMimeType("text/plain")
                        .setStarred(true).build();
    
                // create a file in root folder
                Drive.DriveApi.getRootFolder(mGoogleApiClient)
                        .createFile(mGoogleApiClient, changeSet, driveContents)
                        .setResultCallback(fileCallback);
            }
        }.start();
    }
    

    如何更改此代码以从文件上载图像。(根据设备中图像的给定位置)。? 我发现很少有教程,但这些都是不推荐的方法。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Sebastian    7 年前

    使用此代码将图像上载到google drive。。。

    new Thread() {
                @Override
                public void run() {
                    // write content to DriveContents
                    OutputStream outputStream = driveContents.getOutputStream();
                    // Write the bitmap data from it.
                    MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder()
                            .setMimeType("image/jpeg").setTitle(title)
                            .build();
                    Bitmap image = BitmapFactory.decodeFile(location));
                    ByteArrayOutputStream bitmapStream = new ByteArrayOutputStream();
                    image.compress(Bitmap.CompressFormat.JPEG, 80, bitmapStream);
                    try {
                        outputStream.write(bitmapStream.toByteArray());
                    } catch (IOException e1) {
                        Log.i("E", "Unable to write file contents.");
                    }
                    image.recycle();
                    outputStream = null;
                    String title = "noisy";
    
                    Log.i("E", "Creating new pic on Drive (" + title + ")");
                    Drive.DriveApi.getFolder(mGoogleApiClient,driveId)
                            .createFile(mGoogleApiClient, metadataChangeSet, driveContents)
                            .setResultCallback(fileCallback);
                }
            }.start();
    
        2
  •  1
  •   Rajesh Murugan    7 年前

    private void saveFiletoDrive(final File file, final String mime) {
        Drive.DriveApi.newDriveContents(mDriveClient).setResultCallback(
                new ResultCallback<DriveContentsResult>() {
                    @Override
                    public void onResult(DriveContentsResult result) {
                        if (!result.getStatus().isSuccess()) {
                            Log.i(TAG, "Failed to create new contents.");
                            return;
                        }
                         Log.i(TAG, "Connection successful, creating new contents...");
                        OutputStream outputStream = result.getDriveContents()
                                .getOutputStream();
                        FileInputStream fis;
                        try {
                            fis = new FileInputStream(file.getPath());
                            ByteArrayOutputStream baos = new ByteArrayOutputStream();
                            byte[] buf = new byte[1024];
                            int n;
                            while (-1 != (n = fis.read(buf)))
                                baos.write(buf, 0, n);
                            byte[] photoBytes = baos.toByteArray();
                            outputStream.write(photoBytes);
    
                            outputStream.close();
                            outputStream = null;
                            fis.close();
                            fis = null;
    
                        } catch (FileNotFoundException e) {
                            Log.w(TAG, "FileNotFoundException: " + e.getMessage());
                        } catch (IOException e1) {
                            Log.w(TAG, "Unable to write file contents." + e1.getMessage());
                        }
    
                        String title = file.getName();
                        MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder()
                                .setMimeType(mime).setTitle(title).build();
    
                        if (mime.equals(MIME_PHOTO)) {
                            if (VERBOSE)
                                Log.i(TAG, "Creating new photo on Drive (" + title
                                        + ")");
                            Drive.DriveApi.getFolder(mDriveClient,
                                    mPicFolderDriveId).createFile(mDriveClient,
                                    metadataChangeSet,
                                    result.getDriveContents());
                        } else if (mime.equals(MIME_VIDEO)) {
                            Log.i(TAG, "Creating new video on Drive (" + title
                                    + ")");
                            Drive.DriveApi.getFolder(mDriveClient,
                                    mVidFolderDriveId).createFile(mDriveClient,
                                    metadataChangeSet,
                                    result.getDriveContents());
                        }
    
                        if (file.delete()) {
                            if (VERBOSE)
                                Log.d(TAG, "Deleted " + file.getName() + " from sdcard");
                        } else {
                            Log.w(TAG, "Failed to delete " + file.getName() + " from sdcard");
                        }
                    }
                });
    }