【问题标题】:Commonsware camera preview demo: no preview after device on/offCommonsware 相机预览演示:设备开/关后无预览
【发布时间】:2013-08-09 06:19:30
【问题描述】:

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

一个明显的建议是看看其他人做了什么;我咨询过 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:如果我首先更改为另一个 Activity 并在该 Activity 上按 On/Off,则该错误不会显示。

UPD2:开/关后,startPreview() 被调用,但我看到来自系统的消息:

D/@@    (13428): startPreview() cameraConfigured=true camera=android.hardware.Camera@412f66f0
E/CamHw ( 2135): preview window is NULL!

这意味着系统深处确实发生了一些不好的事情(尽管消息可能是特定于设备的)。

UDP3:开/关后,调用来自surfaceCallbackno方法。也许这会有所作为。

UPD4:[未完全在此相机演示中看到]如果您切换到不同的应用程序(通过长按 HOME 并从列表中选择)然后切换回来,相机会再次工作。

【问题讨论】:

  • 您可以通过阅读the repository's README 得知,该存储库已停止使用。从那以后我开始维护the CWAC-Camera library,这似乎可以很好地处理这种情况。
  • 好吧,最好的 Android 书籍之一的代码已停产,这是一个坏消息。无论如何,你究竟做了什么来处理这个?库很大,我非常感谢指向文件和函数的指针。
  • “好吧,最好的 Android 书籍之一的代码已停产,这是一个坏消息”——这本书的内容被折叠到 The Busy Coder's Guide to Android Development . “不管怎样,你到底做了什么来处理这件事?” - 难倒我了。与那本旧书样本相比,我收紧了很多东西。我不知道其中哪一项会影响您所看到的行为。对不起!

标签: android camera android-camera commonsware


【解决方案1】:

这不是解决方案,而是解决方法: 在 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);
    // ...
}

它们都有效。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多