0

我想编写将播放 HLS 视频的 Android 应用程序。我为此使用默认的 VideoView 控件:

VideoView player = (VideoView) findViewById(R.id.player);
String httpLiveUrl = "http://example.com/playlist.m3u8";

player.setVideoURI(Uri.parse(httpLiveUrl));
player.setMediaController(new MediaController(this));
player.requestFocus();
player.start();

一切正常,直到您更改设备方向(旋转它)。在这种情况下,Android 将使用 VideoView 实例和下载的 HLS 片段销毁当前活动。将从头开始创建新的活动实例。因此,VideoView (MediaPlayer) 必须建立连接并再次下载 HLS 片段(这需要大量时间)。此外,视频不会从当前位置开始,而是从头开始。

我知道有助于保存/恢复活动状态的活动方法,例如 onSaveInstancestate/onRestoreInstanceState,但我不知道如何序列化 VideoView 以使他通过方向更改。

我什至考虑过用于 MediaPlayer 的 Android 服务......但我认为在视频播放器的情况下这是不好的和不正确的方式。

那么,有人知道吗?:)

4

2 回答 2

1

你可以 :

1:通过在清单文件中指定方向来修复方向:

 <activity
    android:screenOrientation="landscape">
...
</activity>

2:您可以告诉 android 即使在方向更改后也保持您的应用程序运行。在这种情况下,活动将不会被销毁和重新创建。

 <activity
    android:configChanges="orientation">
...
</activity>
于 2012-12-12T01:34:09.153 回答
0

将此添加到清单文件中的活动标记中:

android:configChanges="orientation|keyboardHidden"

例子:

 <activity android:name=".MainActivity"
    android:configChanges="orientation|keyboardHidden"
    android:label="@string/title_activity" />

这对我有用,但我使用了 MediaPlayer 类。

于 2012-12-12T01:57:28.093 回答