【Audio&Video】构建视频播放器活动(10)

当活动收到onCreate()生命周期回调方法时,它应执行以下步骤:

  • 创建并初始化媒体会话
  • 设置媒体会话回调
  • 将媒体会话的媒体按钮接收器设置为空,以便媒体按钮事件不会在播放器不可见时重新启动。这仅影响Android 5.0(API级别21)和更高级的设备。
  • 创建并初始化媒体控制器
    onCreate()下面的代码演示了这些步骤:
MediaSessionCompat mMediaSession;
PlaybackStateCompat.Builder mStateBuilder;

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // Create a MediaSessionCompat
  mMediaSession = new MediaSessionCompat(this, LOG_TAG);

  // Enable callbacks from MediaButtons and TransportControls
  mMediaSession.setFlags(
    MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
    MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);

  // Do not let MediaButtons restart the player when the app is not visible
  mMediaSession.setMediaButtonReceiver(null);

  // Set an initial PlaybackState with ACTION_PLAY, so media buttons can start the player
  mStateBuilder = new PlaybackStateCompat.Builder()
                .setActions(
                    PlaybackStateCompat.ACTION_PLAY |
                    PlaybackStateCompat.ACTION_PLAY_PAUSE);
  mMediaSession.setState(mStateBuilder.build());

  // MySessionCallback has methods that handle callbacks from a media controller
  mMediaSession.setCallback(new MySessionCallback());

  // Create a MediaControllerCompat
  MediaControllerCompat mediaController =
    new MediaControllerCompat(this, mMediaSession);

  MediaControllerCompat.setMediaController(this, mediaController);
}

当应用程序关闭时,活动会连续接收onPause()和onStop()回调。如果玩家正在玩,则必须在其活动消失之前将其停止。选择使用哪种回调取决于您正在运行的Android版本。

在Android 6.0(API级别23)及更早版本中,不能保证何时onStop()被调用; 它可能在你的活动消失5秒后被调用。因此,在7.0之前的Android版本中,您的应用应停止播放onPause()。在Android 7.0及更高版本中,onStop()只要活动不可见,系统就会立即调用,所以这不是问题。

总结:

在Android 6.0及更早版本中,请停止播放器onPause()。
在Android 7.0及更高版本中,请在onStop()回调中停止播放器。
当活动收到onDestroy()回调时,它应该释放并清理您的播放器。

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Audio&Video】构建视频播放器活动(10)

猜你喜欢

转载自blog.51cto.com/4789781/2129732