我看到一个错误:当相机处于预览模式,并且用户按下开/关时,相机预览会停止并且不会启动。
一个明显的建议是看看别人做了什么;我咨过过 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:如果我首先更改为另一个活动并按下该活动的开/关,则不显示该错误。
UPD2:开启/关闭后,调用startPreview(),但是我看到来自系统的消息:
D/@@ (13428): startPreview() cameraConfigured=true camera=android.hardware.Camera@412f66f0
E/CamHw ( 2135): preview window is NULL!
这意味着在系统深处确实发生了一些不好的事情(虽然消息可能是特定于设备的)。
UDP3:开启/关闭后,调用来自surfaceCallback
的无方法。也许这会产生不同。
UPD4:[未完全看到此相机演示]如果您切换到其他应用程序(通过长按HOME并从列表中选择)然后切换回来,相机将再次工作。
答案 0 :(得分:0)
这不是解决方案,而是一种解决方法: 在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);
// ...
}
两者都有效。