如何更改锁定屏幕/控制中心的轨道位置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更改锁定屏幕/控制中心的轨道位置?相关的知识,希望对你有一定的参考价值。

使用ios 7音乐应用程序播放歌曲时,用户可以使用滑块更改锁定屏幕/控制中心中的歌曲位置。滑块处于活动状态:

但是当我在我的应用程序中播放音乐时,用户无法做到。滑块未激活:

如何在我的应用中启用这些功能?

答案

您可以借助iOS 9.1及更高版本上的MPRemoteCommandCenter更改曲目位置。

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_0) {
            MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];
            [commandCenter.changePlaybackPositionCommand setEnabled:true];
            [commandCenter.changePlaybackPositionCommand addTarget:self action:@selector(changedThumbSliderOnLockScreen:)];
        }

和方法

- (MPRemoteCommandHandlerStatus)changedThumbSliderOnLockScreen:(MPChangePlaybackPositionCommandEvent *)event
{
    // change position
    [self setCurrentPlaybackTime:event.positionTime];
    // update MPNowPlayingInfoPropertyElapsedPlaybackTime
    [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];

    return MPRemoteCommandHandlerStatusSuccess;
}
另一答案

我一直在寻找相同的东西,但我认为这不可能看到这篇文章:

How to enable audio scrubber in iOS Lock Screen control panel?

Spotify和Soundcloud等热门应用也没有实现这一点。

如果您正在寻找在锁定屏幕上显示当前音乐的方法,则需要执行以下操作。

首先,当您播放新曲目时,请更新NowPlayingInfo:

NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init];

    [songInfo setObject:trackTitle forKey:MPMediaItemPropertyTitle];
    [songInfo setObject:artistName forKey:MPMediaItemPropertyArtist];
    [songInfo setObject:duration forKey:MPMediaItemPropertyPlaybackDuration];
    [songInfo setObject:releaseDate forKey:MPMediaItemPropertyReleaseDate];
    [songInfo setValue:playbackRate forKey:MPNowPlayingInfoPropertyPlaybackRate];
    [songInfo setObject:elapsedTime forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
    [songInfo setObject:albumArtImage forKey:MPMediaItemPropertyArtwork];
    [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];

要处理来自Lockscreen的事件,首先需要告诉您的应用程序开始从遥控器接收事件。我在AppDelegate的应用程序didFinishLaunchingWithOptions中使用以下代码执行此操作

 // Turn on remote control event delivery
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

接下来,您需要实现remoteControlReceivedWithEvent方法来处理捕获的事件。在APPDelegate中添加以下方法

- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {

 if (receivedEvent.type == UIEventTypeRemoteControl) {

    switch (receivedEvent.subtype) {
        case UIEventSubtypeRemoteControlPause:
            //pause code here
            break;

        case UIEventSubtypeRemoteControlPlay:
             //play code here
            break;

        case UIEventSubtypeRemoteControlPreviousTrack:
            // previous track code here
            break;

        case UIEventSubtypeRemoteControlNextTrack:
            //next track code here
            break;

        default:
            break;
    }
 }

}

有关MPNowPlayingInfoCenter的更多信息来自apple docs - > https://developer.apple.com/library/ios/documentation/mediaplayer/reference/MPNowPlayingInfoCenter_Class

另一答案

swift4您可以借助iOS 9.1及更高版本上的MPRemoteCommandCenter更改曲目位置。

    let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.changePlaybackPositionCommand.isEnabled = true
        commandCenter.changePlaybackPositionCommand.addTarget(self, action:#selector(changePlaybackPositionCommand(_:)))

和方法

    @objc func changePlaybackPositionCommand(_ event:MPChangePlaybackPositionCommandEvent) -> MPRemoteCommandHandlerStatus{
let time = event.positionTime
        //use time to update your track time
        return MPRemoteCommandHandlerStatus.success;
    }

请注意,如果要启用它,必须为commandCenter中的每个命令执行此操作

以上是关于如何更改锁定屏幕/控制中心的轨道位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在屏幕方向更改时附加片段?

我想在weblogic中更改日志文件的位置

如何在 OpenGL/Glut 中更改鼠标光标的位置?

如何使用滑块更改 HTML5 音频音量或轨道位置? [复制]

Android 片段不保存状态,在旋转/屏幕锁定/返回时崩溃

Play 管理中心:“内部测试轨道”在完成审核后如何运作?