我有一个服务,使用
MediaSession
用于播放流。我想收集这个服务播放音乐的时间和数量,然后将其发送到服务器。我使用以下代码(简化):
public class MyService extends MediaBrowserServiceCompat {
private Long startTime;
public class MediaPlayerListener extends PlaybackInfoListener {
@Override
public void onPlaybackStateChange(PlaybackStateCompat state) {
session.setPlaybackState(state);
switch (state.getState()) {
case PlaybackStateCompat.STATE_PLAYING:
startTime = SystemClock.elapsedRealtime();
startForeground(MediaNotificationManager.NOTIFICATION_ID, notification);
break;
case PlaybackStateCompat.STATE_STOPPED:
long timediff = SystemClock.elapsedRealtime() - startTime;
stopForeground(true);
stopSelf();
// timediff is being sent to the server here
break;
}
}
}
该服务按预期工作,但时间报告不起作用。在服务器上,有些监听时间还可以,但有些监听时间非常大,超过200小时。由于该服务用于监听流,因此计算此类值是不可能的,也是不现实的。因此,我相信这种报道并不好。我还试图替换
SystemClock
具有
System#currentTimeMillis
,但价值也很大。有人能告诉我,如何正确地测量听力时间,或者为我提供一些最佳实践吗?