我看到一个错误:当相机处于预览模式,用户按下开/关时,相机预览停止,无法启动。
一个显而易见的建议是看看别人在做什么;我咨询过https://github.com/commonsguy/cw-advandroid/tree/master/Camera/Preview/我看到这个演示也有同样的错误(Android 4.0.3)
到java源的直接链接:https://github.com/commonsguy/cw-advandroid/blob/master/Camera/Preview/src/com/commonsware/android/camera/PreviewDemo.java
问题:如何修复这个错误?即使在设备打开/关闭后,预览模式也必须正常工作。
UPD:如果我第一次更改为另一个"活动"并在该"活动"上按On/Off,则错误不会显示。
UPD2:打开/关闭后,会调用startPreview(),但我看到来自系统的消息:
D/@@ (13428): startPreview() cameraConfigured=true camera=android.hardware.Camera@412f66f0
E/CamHw ( 2135): preview window is NULL!
这意味着在系统的深处确实发生了一些不好的事情(尽管消息可能是特定于设备的)。
UDP3:打开/关闭后,调用surfaceCallback
中的no方法。也许这会有所不同。
UPD4:[在本次相机演示中没有看到]如果您切换到另一个应用程序(长按HOME并从列表中选择),然后切换回来,相机将再次工作。
这不是一个解决方案,而是一个变通方法:调用onResume()中的setContentView()。
它可以是
protected void onResume() {
super.onResume();
setContentView(R.layout.xxx);
// ...
}
或
private View cachedContentView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
cachedContentView = doCreateContentView(getLayoutInflater());
// ...
}
protected void onResume() {
super.onResume();
setContentView(cachedContentView);
// ...
}
他们两个都工作。
我仍然不知道是什么导致了这个问题,也不知道原始示例和库之间的区别是什么。