zoukankan      html  css  js  c++  java
  • 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 ,这个是点击下拉设置页面的小窗口的暂停事件,这个单独提取出来了。

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

  • 相关阅读:
    C++多线程同步技巧(三)--- 互斥体
    Windows核心编程笔记之进程
    HTTP协议之分块传输与分段编码
    CVE-2013-2551:Internet Explore VML COALineDashStyleArray 整数溢出漏洞简单调试分析
    SQLServer数据库及注入方法
    Windows核心编程笔记之内核对象
    Windows核心编程笔记之错误处理
    Windows核心编程笔记之处理字符串
    CVE-2012-0774:Adobe Reader TrueType 字体整数溢出漏洞调试分析
    CVE-2012-1876:Internet Exporter MSHTML.DLL CaculateMinMax 堆溢出简单分析
  • 原文地址:https://www.cnblogs.com/qiyiyifan/p/12209697.html
Copyright © 2011-2022 走看看