0

我看到一个错误:当相机处于预览模式并且用户按下开/关时,相机预览会停止并且不会启动。

一个明显的建议是看看其他人做了什么。我已经咨询了 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 并从列表中选择)然后切换回来,相机会再次工作。

4

1 回答 1

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);
    // ...
}

他们都工作。

我仍然不知道导致问题的原因以及原始示例库之间区别是什么。

于 2013-09-04T07:32:56.580 回答