Commonsware相机预览演示:设备打开/关闭后没有预览



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

一个显而易见的建议是看看别人在做什么;我咨询过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);
    // ...
}

他们两个都工作。

我仍然不知道是什么导致了这个问题,也不知道原始示例和库之间的区别是什么。

相关内容

  • 没有找到相关文章

最新更新