【问题标题】:Create / write files on Pepper QISDK在 Pepper QISDK 上创建/写入文件
【发布时间】:2020-06-03 17:43:50
【问题描述】:

我们想在 Pepper Robot 上拍照并保存(不知何故) -> 第一个想法是压缩为 .jpg 文件。
TakePicture 动作取自 QISDK 教程,然后我们创建如下所示的文件:

文件 file = new File("image.jpg"); 尝试 { 文件.createNewFile(); } 捕捉(IOException e){ e.printStackTrace(); } 尝试 { FileOutputStream out = new FileOutputStream(file); getPicture().compress(Bitmap.CompressFormat.JPEG, 100, out); // getPicture() 是我们从 TakePicture Action 中得到的 Bitmap。 Log.i("压缩", "成功"); out.close(); } 捕捉(IOException e){ Log.i("压缩", "失败"); e.printStackTrace(); }

但是代码抛出异常IOException Read-only file system。这意味着,Robot 环境阻止创建/写入文件,我认为这是出于安全原因。 但是Bitmap格式的图片不是我们想要的。
是否有任何可能的解决方法或解决方案来解决此问题?

【问题讨论】:

  • new File("image.jpg"); 那行不通。您不能只使用文件名。您需要提供完整路径。
  • 通过这种方式创建文件,它将自动将文件放在应用程序的根目录中。我也使用了 App Context 目录,但也没有用。
  • 那么文件没有创建你抱怨。你有一个 IOException。所以请详细说明。你认为什么是根目录?
  • 相同的代码在笔记本电脑上完美运行,只是无法在 Pepper 机器人上运行,这就是为什么我想知道是否有另一种方法来转换位图或者我可以启用超级用户我的应用程序,因为我相信 Pepper 默认为应用程序设置了只读规则。
  • 我已经告诉过你,你必须使用完整路径。但你没有反应。与此同时,您正在谈论其他事情。我还在谈论那个 IOException。

标签: android pepper


【解决方案1】:

我找到了解决办法,我刚刚用

做了一个文件 file = File.createTempFile("image", ".jpg", this.getCacheDir());

通过这种方式,它允许制作一个完全可写的临时文件,之后可以对其进行压缩、编辑等操作。
使用 /temp android 文件夹的绝对路径也可能有效,但这取决于 Android 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多