Android обратная совместимость кода

Я разрабатываю приложение, которое использует

android.hardware.Camera.parameters.getSupportedPictureSizes()

Это доступно только в SDK версии 8 и я хотел бы быть совместимым с SDK 4, поэтому я сделал вот что:

if(Build.VERSION.SDK_INT >=8){...}

Но на эмуляторе, похоже, что он пытается проверить ссылку на эту функцию, и он терпит неудачу:

02-02 11:20:10.930: ERROR/dalvikvm(1841): Could not find method android.hardware.Camera$Parameters.getSupportedPictureSizes, referenced from method com.test.demo.CameraCustom.takeAPicture

Есть идеи, как решить эту проблему обратной совместимости?

Я пытался использовать inkocation с этим куском кода внутри surfaceChanged. Очевидно, что код работает напрямую без инвокации:

try{
    windowmanager_defaultdisplay_Rotation = getWindowManager().getDefaultDisplay().getClass().getMethod("getRotation");
    Log.v(MainMenu.TAG, "getRotation exist");
}catch(Exception e){
    Log.v(MainMenu.TAG, "getRotation dont exist");
}

try{
    windowmanager_defaultdisplay_Rotation.invoke(null, null);
    Log.v(MainMenu.TAG, "getRotation invoking ok, rotation ");
}catch(Exception e){
    Log.v(MainMenu.TAG, "exception invoking getRotation "+e.toString());
}

Я получаю "getRotation exist", но затем "exception invoking getRotation java.lang.NullPointerException.

Есть идеи?

7
задан zegnus 5 February 2011 в 16:27
поделиться