【问题标题】:SurfaceHolder.setType is deprecated... But required?SurfaceHolder.setType 已被弃用...但需要吗?
【发布时间】:2012-02-24 22:52:42
【问题描述】:

void android.view.SurfaceHolder.setType(int type)

public abstract void setType (int type) 自:API Level 1

此方法已弃用。这被忽略,这个值被设置 需要时自动进行。

设置表面的类型。

http://developer.android.com/reference/android/view/SurfaceHolder.html

它说它是自动设置的,但是没有它我的视频无法播放。这里发生了什么?有什么东西可以代替它吗?我有时间让视频在 Android 上正确播放。

【问题讨论】:

  • 您的视频播放效果如何?贴一些代码。
  • 该值在需要时自动设置。这就是文档对 android 的描述。但是如果它小于蜂窝那么你应该设置它如下所示的回复
  • 已弃用。仍然可以使用。

标签: android surfaceholder


【解决方案1】:

诀窍在于知道何时它已被弃用,这从我的经验中很难确定。文档始终是最新可用 API 的最新版本,但如果我不得不猜测的话,您可能没有在最新的 API 上运行此应用程序。因此,您仍然必须使用这种方法(通常使用 PUSH_BUFFERS)才能使其在旧平台上工作。

编辑:它在 Android 3.0 中已被弃用,文档现在反映了这一点。
所以我们可以像下面这样使用它:

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
    getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

【讨论】:

  • 哦,我明白了。是的,从那以后就可以了。我希望他们能说什么时候。在 Eclipse 中为 2.2 开发时,我没有意识到该文档是最新的
  • 另外,如果你查看 Android 的 VideoView 的源代码,你会发现它是这样做的:getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  • 根据developer.android.com/guide/topics/media/camera.html,这是一个已弃用的设置,但在 3.0 之前的 Android 版本上是必需的;请在您的帖子中反映这一事实。谢谢。
  • 直到 Java 8(与 Android 无关),注解只能用于类、变量、方法等的声明。如果您想避免过于广泛地应用该弃用抑制,您可以将有问题的代码提取到自己的方法中,并用@SuppressWarnings 标记该方法。
  • 对于3.0(蜂窝)及更高版本,您根本不需要调用此方法。正如文档所述,它被忽略并自动设置。
猜你喜欢
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2013-08-27
  • 2015-02-21
  • 2019-04-04
  • 2018-12-12
  • 2014-09-18
  • 1970-01-01
相关资源
最近更新 更多