是否可以从 Android API 对 Google Drive 文件进行随机访问写入?

Posted

技术标签:

【中文标题】是否可以从 Android API 对 Google Drive 文件进行随机访问写入?【英文标题】:Is it possible to have random access writes to a Google Drive file from the Android API? 【发布时间】:2016-04-03 13:11:12 【问题描述】:

我正在尝试使用 android API 在 Google Drive 中录制音频并创建一个 wav 文件。我有一个第一遍,我写了一个文件长度为 0 字节的标题,因为我不知道录制的音频会有多长时间,我不想把它全部保存在内存中。记录完成后,我会返回字节 4 并写入文件的长度。

这在使用 RandomAccessFile 时效果很好,但我不知道如何使用 Google Drive API 来做某事。 https://developers.google.com/drive/android/files

DriveContents 类 (https://developers.google.com/android/reference/com/google/android/gms/drive/DriveContents) 没有暗示任何在内容中寻找的方式。有什么想法吗?

【问题讨论】:

【参考方案1】:

尝试使用 FileChannel 进行随机访问。

您可以使用 FileOutputStream#getChannel 获取 FileChannel,然后使用 FileChannel#position(long) 查找。 写入 OutputStream 将从设置的位置开始。

注意:我建议在访问 FileChannel 之前刷新 OutputStream。

【讨论】:

【参考方案2】:

我认为这种方式是不可能的。 Google drive APIs(V2、V3、GDAA)都接受file streams(即串行流)作为内容。您可能知道您构建元数据 + 内容并上传(创建、修补、更新)。

由于您需要在完成写入文件后修改your file's header,因此唯一的方法是完成本地文件中的所有内容,然后将其传输到 GooDrive Api。在这种情况下,更新/补丁对您没有帮助,因为您的标头是 GooDrive API 已知为 contents 的一大块字节的一部分。

这是合乎逻辑的,V2 和 V3 是直接的 REST api,因此它们以串行方式发送字节。 GDAA 有朝一日可以做到这一点(见'Lifecycle of a Drive file'),但我不会屏住呼吸。

【讨论】:

以上是关于是否可以从 Android API 对 Google Drive 文件进行随机访问写入?的主要内容,如果未能解决你的问题,请参考以下文章

是否有 API 可以检测操作系统正在使用哪个主题 - 深色或浅色(或其他)?

如何从 android 模拟器对 kik 的服务器 API 进行逆向工程?

是否可以从 Android 上的 TOF(飞行时间)传感器读取数据?

Android - 是不是可以使用 Comparator.comparing 而不是 API < 24 上的自定义比较器对列表进行排序?

使用places api键时的空白地图

我们可以从 Android 中的 Google Drive API 检索数据吗?