我正在开发一个应用程序,使用
android.hardware.Camera.parameters.getSupportedPictureSizes()
这仅适用于 SDK 版本 8,我希望与 SDK 4 兼容,所以我这样做了:
if(Build.VERSION.SDK_INT >=8){...}
但在模拟器上,它似乎试图检查对此函数的引用,但失败了:
02-02 11:20:10.930:错误/dalvikvm(1841):找不到方法android.hardware.Camera$Parameters.getSupportedPictureSizes,从方法com.test.demo.CameraCustom.takeAPicture引用
关于如何解决这个向后兼容性问题有什么想法吗?
我尝试在 SurfaceChanged 内使用 inkocation 和这段代码。显然,代码无需调用即可直接运行:
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 存在”,但随后“调用 getRotation java.lang.NullPointerException 时出现异常。
任何想法?
您无法加载包含调用的代码getSupportedPictureSizes()
API 级别 7 及之前版本。因此,您需要根据以下情况做出决定Build
before您加载包含版本相关语句的代码。
您的选择包括:
- 禁用菜单选项、按钮或任何导致使用该活动的内容
getSupportedPictureSizes()
,基于 API 级别
- 使用条件类加载或类似技术根据 API 级别加载合适的实现,其中“合适的实现”使用
getSupportedPictureSizes()
仅适用于 API 级别 8 或更高级别
后一种技术的示例可以参见这个示例项目 https://github.com/commonsguy/cw-advandroid/tree/master/Camera/Picture,我支持 API 级别 9 的前置摄像头,但仍然可以在旧版本的 Android 上运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)