【问题标题】:How to determine whether a file is an image, video or audio file如何确定文件是图像、视频还是音频文件
【发布时间】:2013-06-20 11:30:11
【问题描述】:

我正在使用以下代码从图库中获取文件。我检索的文件是图像文件、视频文件或基于用户选择的音频文件。

现在我在列表视图中显示从库中检索的文件。但我无法区分用户选择的文件是图像文件(即.jpg / .png)还是视频文件或音频文件。

通过获取扩展名并在 if else 条件中检查它,我知道这是可能的。但我想知道它是否有任何可能的方式来做到这一点

用于从图库中获取图片的代码是

Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(intent, GET_VIDEO_AUDIO);    
                            fileTransferDialog.dismiss();

【问题讨论】:

    标签: java android file


    【解决方案1】:

    只需检查文件的 MIME 类型。 看看这个

    https://stackoverflow.com/a/13889946/1570662

    这可能会有所帮助

    private static String getMimeType(String fileUrl) {
        String extension = MimeTypeMap.getFileExtensionFromUrl(fileUrl);
        return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    }
    

    【讨论】:

    • 确定我的类型。问题解决了,但是有一些问题。就像假设在我的设备中我有 .mp4 文件和 .flv 视频文件。现在对于 mp4 文件,我的类型返回是 video..但对于 flv 文件,我的类型总是返回 null。
    • 这也适用于本地文件路径,例如"/sdcard/path/to/video.extension"。问题是如果本地文件在其路径中包含空格,它总是返回 null
    【解决方案2】:

    看看this。通过确定文件的 MIME 类型,您可以评估正在处理的文件。还有this one,可以用来判断MIME类型等

    【讨论】:

      【解决方案3】:

      您可以通过获取文件的类型来识别文件类型是照片还是视频。

              String ext = file.getName().substring(file.getName().indexOf(".") + 1);
      
                  if (ext.equalsIgnoreCase("jpg")
                              || ext.equalsIgnoreCase("png")
                              || ext.equalsIgnoreCase("jpeg")) {
                        type = "photo";
                  }
      

      【讨论】:

      • 这种方法效率低,因为文件扩展名太多;几乎不可能满足所有人的需求。
      猜你喜欢
      • 2013-06-13
      • 1970-01-01
      • 2013-07-11
      • 2015-11-23
      • 2011-12-16
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 2021-05-27
      相关资源
      最近更新 更多