gpt4 book ai didi

Android 向后代码兼容性

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:02 24 4
gpt4 key购买 nike

我正在开发一个使用

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。

有什么想法吗?

最佳答案

在 API 级别 7 及之前,您无法加载包含调用 getSupportedPictureSizes() 的代码。因此,在加载包含版本相关语句的代码之前,您需要根据 Build 做出决定。

您的选择包括:

  • 根据 API 级别禁用菜单选项、按钮或导致使用 getSupportedPictureSizes() 的 Activity 的任何内容
  • 使用条件类加载或类似技术根据 API 级别加载合适的实现,其中“合适的实现”仅在 API 级别 8 或更高级别上使用 getSupportedPictureSizes()

可以在 this sample project 中看到后一种技术的示例。 ,我在 API 级别 9 上支持前向摄像头,但仍然可以在旧版本的 Android 上运行。

关于Android 向后代码兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4873827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com