• ios


    一、前言

      本周为APP集成了一个TTS听书功能,遇到了些问题,在这里记录下。

      TTS听书用的是京东TTS,SDK的用法这里就不在多说了,还是蛮简单的。附上集成文档:https://aidoc.jd.com/speech/tts.html

      在集成完听书功能后,锁屏后发现APP内的TTS停止了播放。。。这就很尴尬,听书肯定得在后台播放啊

      研究了下,发现需要做一些设置。

    二、处理

      1、首先在 Signing&Capabilites  下的background Modes 先勾选Audio、、、

      2、设置锁屏播放下的视图资源

      直接上代码

    - (void)startSetupBackVoiceView {
        NSMutableDictionary * songDict = [[NSMutableDictionary alloc] init];
        [songDict setObjectSafely:self.chapterName aKey:MPMediaItemPropertyTitle];// 歌曲题目
        [songDict setObjectSafely:@"TTS小一" aKey:MPMediaItemPropertyArtist];// 歌手名
        [songDict setObjectSafely:self.bookName aKey:MPMediaItemPropertyAlbumTitle];// 专辑名
        [songDict setObjectSafely:[NSNumber numberWithDouble:totalTime]  aKey:MPMediaItemPropertyPlaybackDuration];// 歌曲时长
        [songDict setObjectSafely:[NSNumber numberWithDouble:currentTime] aKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];// 已播时长
        [songDict setObjectSafely:[NSNumber numberWithInteger:rate] aKey:MPNowPlayingInfoPropertyPlaybackRate]; // 播放速率
        [songDict setObjectSafely:[[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"logoLogo"]]
                     aKey:MPMediaItemPropertyArtwork]; // 图片
        [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songDict];
    }

      注:这里的信息很多都不需要填完整,看项目的需求,我们是小说TTS听书功能,所以只填了一个歌曲题目和歌手名。

      3、AppDelegete 里面的设置

    - (void)applicationDidEnterBackground:(UIApplication *)application {
        NSLog(@"applicationDidEnterBackground:");
        [application beginReceivingRemoteControlEvents];
    }
    
    
    - (void)applicationWillEnterForeground:(UIApplication *)application {
        NSLog(@"applicationWillEnterForeground:");
        [application endReceivingRemoteControlEvents];
    }

      注:开启后台播放模式

    #pragma mark - 后台播放
    
    - (BOOL)canBecomeFirstResponder {
        return YES;
    }
    
    - (void)remoteControlReceivedWithEvent:(UIEvent *)event {
        switch (event.subtype) {
            case UIEventSubtypeRemoteControlPlay: {
                [[HYJingDongTTSManager sharedJingDongTTS] resumeCompoundVoice];
            }
                break;
            case UIEventSubtypeRemoteControlPause: {
                [[HYJingDongTTSManager sharedJingDongTTS] pauseCompoundVoice];
                break;
            }
            case UIEventSubtypeRemoteControlPreviousTrack: {//上一曲
                
                
                break;
            }
            case UIEventSubtypeRemoteControlNextTrack: {//下一曲
                
                break;
            }
            case UIEventSubtypeRemoteControlTogglePlayPause: {//小窗口暂停
                [[HYJingDongTTSManager sharedJingDongTTS] pauseCompoundVoice];
                NSLog(@"---------点击小窗口暂停按钮");
                break;
            }
            default:
                break;
        }
    }

      注:这里是监测锁屏下视图的点击事件,值得注意的是这个  UIEventSubtypeRemoteControlTogglePlayPause ,这个是点击下拉设置页面的小窗口的暂停事件,这个单独提取出来了。

      再运行下就好了,就会在锁屏页出现后台播放的视图了。

  • 相关阅读:
    go语言基础之闭包捕获外部变量特点
    go语言基础之基匿名函数本语法和闭包
    go语言基础之回调函数
    go语言基础之函数类型
    go语言基础之递归实现数字累加
    go语言基础之递归函数的调用流程
    go语言基础之普通函数的调用流程
    maven install 打包 报错 Cannot run program "gpg.exe": CreateProcess error
    ELK&H3c监控篇
    机房监控中的网络设备监控到底是怎样的?
  • 原文地址:https://www.cnblogs.com/qiyiyifan/p/12209697.html
Copyright © 2020-2023  润新知