Хорошо, ответ, предоставленный Commonsware, является правильным, особенно если вы изучаете превосходный пример проекта, который он предоставил. Кроме того, Зегнус был на правильном пути, когда он указал на
http://developer.android.com/resources/articles/backward-compatibility.html
Ключ к этому, хотя и не ясно из другого ответа, заключается в том, что вам нужно скомпилировать API, который поддерживает необходимые вам функции. В противном случае вы получите ошибки. В примере с Commonsware камеры, направленные вперед, впервые поддерживаются на уровне API 9, и это то, что вы должны указать в своем проекте, чтобы получить его для компиляции. Затем вы можете использовать другие методы, описанные выше, чтобы проверить, действительно ли ОС, в которой работает приложение, поддерживает классы и / или методы, которые вы пытаетесь использовать. Если ваше приложение работает в более старой версии ОС, вызовы сгенерируют исключение, которое вы можете перехватить и предпринять соответствующее действие для более старой ОС.
Ради полноты, вот код, который я использовал для совместимости с API 7, хотя я скомпилировал с API 8, который включает в себя ThumbnailUtils.
import com.Flashum.util.WrapThumbnailUtils;
public static Bitmap createVideoThumbnail(String filePath, int kind) {
try {
WrapThumbnailUtils.checkAvailable(); // will cause exception if ThumbnailUtils not supported
return WrapThumbnailUtils.createVideoThumbnail(filePath, kind);
} catch (Exception e) {
return null;
}
}
package com.Flashum.util;
import android.graphics.Bitmap;
import android.media.ThumbnailUtils;
// To be compatible with Android 2.1 need to create
// wrapper class for WrapThumbnailUtils.
public class WrapThumbnailUtils {
/* class initialization fails when this throws an exception */
static {
try {
Class.forName("android.media.ThumbnailUtils");
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
/* calling here forces class initialization */
public static void checkAvailable() {}
public static Bitmap createVideoThumbnail(String filePath, int kind) {
return ThumbnailUtils.createVideoThumbnail(filePath, kind);
}
}