public AndroidMediaPlayerImpl create(Context context) {
LoadTimeout loadTimeout = new LoadTimeout(new SystemClock(), handler);
MediaPlayerForwarder forwarder = new MediaPlayerForwarder();
AndroidMediaPlayerFacade facade = AndroidMediaPlayerFacade.newInstance(context, forwarder);
PlayerListenersHolder listenersHolder = new PlayerListenersHolder();
CheckBufferHeartbeatCallback bufferHeartbeatCallback = new CheckBufferHeartbeatCallback();
Heart heart = Heart.newInstance(handler);
MediaPlayerTypeReader mediaPlayerTypeReader = new MediaPlayerTypeReader(new SystemProperties(), Build.VERSION.SDK_INT);
DelayedActionExecutor delayedActionExecutor = new DelayedActionExecutor(handler, new HashMap<DelayedActionExecutor.Action, Runnable>());
BuggyVideoDriverPreventer preventer = new BuggyVideoDriverPreventer(mediaPlayerTypeReader);
MediaPlayerInformation mediaPlayerInformation = new MediaPlayerInformation(mediaPlayerTypeReader);
return new AndroidMediaPlayerImpl(
mediaPlayerInformation,
facade,
forwarder,
listenersHolder,
bufferHeartbeatCallback,
loadTimeout,
heart,
delayedActionExecutor,
preventer
);
}
}