检查文件是图像还是视频

use*_*233 11 android

有没有办法检查我作为URI加载的文件是android中的图像还是视频?我正在尝试动态地将图像和视频加载到片段中以获得列表/详细信息视图,并且需要将它们区分开来.

alf*_*ngj 51

我检查mimeType,然后检查它是否对应于图像或视频.

用于检查文件路径是否为图像的完整示例将是:

public static boolean isImageFile(String path) {
    String mimeType = URLConnection.guessContentTypeFromName(path);
    return mimeType != null && mimeType.startsWith("image");
}
Run Code Online (Sandbox Code Playgroud)

对于视频:

public static boolean isVideoFile(String path) {
    String mimeType = URLConnection.guessContentTypeFromName(path);
    return mimeType != null && mimeType.startsWith("video");
}
Run Code Online (Sandbox Code Playgroud)

  • 如果给定路径不包含图像扩展名,则此方法不起作用。例如,Android Camera App可能会返回类似'content://com.android.providers.media.documents/document/image.%3A130'的路径,其isImageFile()将返回false。这似乎可行:/sf/answers/2218425401/ (2认同)

met*_*are 11

如果您从内容解析器获取Uri,则可以使用getType(Uri)获取mime类型;

ContentResolver cR = context.getContentResolver();
String type = cR.getType(uri); 
Run Code Online (Sandbox Code Playgroud)

应该回到类似于"image/jpeg"的东西,你可以检查你的显示逻辑.


Mar*_*vic -53

我想最简单的方法是检查扩展

if ( file.toString().endsWith(".jpg") {
//photo
} else if (file.toString().endsWith(".3gp")) {
//video
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为这不应该是公认的答案。有一个很长的扩展列表,可能是图像或视频,并且该列表可能会随着时间的推移而增长,因此手动维护很痛苦。我现在自己写。 (43认同)