バージョンのサポートに関しては、デバイスの OS バージョン (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 );
}
}
}