Что касается поддержки версий, вам придется написать дополнительный код для определения версии ОС устройства (см. Android.os.Build.VERSION), поэтому убедитесь, что она будет работать на 1,5 устройствах.Я настоятельно рекомендую изолировать этот код в своем собственном классе и создавать экземпляры этого класса только после проверки вашей версии.Таким образом, ваш код остается чистым (не «хакерским»), и вы случайно не ссылаетесь на класс 1.6+ из поля класса.В моем коде у меня есть классы тестирования версии, которые выглядят так:
public class Android8 {
private static final String TAG = "Android8";
// public test variables
public static final boolean IS_V8;
public static final boolean AT_LEAST_V8;
private static final Object pimpl;
static {
int sdk_int = 0;
try {
Field field = Build.VERSION.class.getField( "SDK" );
String sdk_str = (String)field.get( null );
sdk_int = Integer.parseInt( sdk_str );
} catch( Throwable e ) {
}
IS_V8 = (sdk_int==8);
AT_LEAST_V8 = (sdk_int>=8);
if( AT_LEAST_V8 ) {
pimpl = new Implementation();
} else {
pimpl = null;
}
}
// Version safe interface
public static void Camera_setDisplayOrientation( Camera camera, int degrees ) {
if( AT_LEAST_V8 )
((Implementation)pimpl).Camera_setDisplayOrientation( camera, degrees );
}
// Will cause a verify error if loaded in a pre Android8 environment
private static final class Implementation {
public static void Camera_setDisplayOrientation( Camera camera, int degrees ) {
camera.setDisplayOrientation( degrees );
}
}
}