You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
6.2 KiB
206 lines
6.2 KiB
// |
|
// WXYZ_AudioSettingHelper.m |
|
// WXReader |
|
// |
|
// Created by Andrew on 2020/3/18. |
|
// Copyright © 2020 Andrew. All rights reserved. |
|
// |
|
|
|
#import "WXYZ_AudioSettingHelper.h" |
|
#import "WXYZ_Player.h" |
|
#import "WXYZ_GCDTimer.h" |
|
#import <MediaPlayer/MediaPlayer.h> |
|
|
|
@interface WXYZ_AudioSettingHelper () |
|
|
|
@property (nonatomic, strong) WXYZ_GCDTimer *countdownTimer; |
|
|
|
@property (nonatomic, assign) NSInteger read_timing; // 听书倒计时(有声和ai的计时同步) |
|
|
|
@end |
|
|
|
@implementation WXYZ_AudioSettingHelper |
|
|
|
implementation_singleton(WXYZ_AudioSettingHelper) |
|
|
|
// 倒计时 |
|
- (NSInteger)getReadTiming |
|
{ |
|
return self.read_timing; |
|
} |
|
|
|
- (void)setReadTimingWithIndex:(NSInteger)readTimingIndex |
|
{ |
|
_read_timing = readTimingIndex; |
|
} |
|
|
|
- (NSArray *)getReadTimingKeys |
|
{ |
|
return @[TFLocalizedString(@"不开启"), TFLocalizedString(@"听完本章节"), TFLocalizedString(@"15分钟"), TFLocalizedString(@"30分钟"), TFLocalizedString(@"60分钟"), TFLocalizedString(@"90分钟")]; |
|
} |
|
|
|
- (NSArray *)getReadTimingValues |
|
{ |
|
return @[@"0", @"1", @"900", @"1800", @"3600", @"5400"]; |
|
} |
|
|
|
// 声音 |
|
- (NSString *)getReadVoiceTitleWithProducitionType:(TFProductionType)productionType |
|
{ |
|
return [[self getReadVoiceKeysWithProducitionType:productionType] objectAtIndex:[self getReadVoiceWithProducitionType:productionType]]; |
|
} |
|
|
|
- (NSInteger)getReadVoiceWithProducitionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAudio) { |
|
return 0; |
|
} else { |
|
NSString *string = [[NSUserDefaults standardUserDefaults] objectForKey:@"xtfei_ai_read_voice"]; |
|
return string?[string integerValue] : 0; |
|
} |
|
} |
|
|
|
- (void)setReadVoiceWithIndex:(NSInteger)readVoiceIndex producitionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAudio) { |
|
|
|
} else { |
|
[[NSUserDefaults standardUserDefaults] setObject:[TFUtilsHelper formatStringWithInteger:readVoiceIndex] forKey:@"xtfei_ai_read_voice"]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
} |
|
} |
|
|
|
- (NSArray *)getReadVoiceKeysWithProducitionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAudio) { |
|
return @[]; |
|
} else { |
|
return @[TFLocalizedString(@"情感女声"), TFLocalizedString(@"标准女声"), TFLocalizedString(@"标准男声")]; |
|
} |
|
} |
|
|
|
- (NSArray *)getReadVoiceValuesWithProducitionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAudio) { |
|
return @[]; |
|
} else { |
|
return @[@"xiaoyan", @"vixq", @"aisbabyxu"]; |
|
} |
|
} |
|
|
|
// 语速 |
|
- (NSInteger)getReadSpeedWithProducitionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAudio) { |
|
NSString *string = [[NSUserDefaults standardUserDefaults] objectForKey:@"xtfei_audio_read_speed"]; |
|
return string?[string integerValue]:2; |
|
} else { |
|
NSString *string = [[NSUserDefaults standardUserDefaults] objectForKey:@"xtfei_ai_read_speed"]; |
|
return string?[string integerValue]:2; |
|
} |
|
} |
|
|
|
- (void)setReadSpeedWithIndex:(NSInteger)readSpeedIndex producitionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAudio) { |
|
[[NSUserDefaults standardUserDefaults] setObject:[TFUtilsHelper formatStringWithInteger:readSpeedIndex] forKey:@"xtfei_audio_read_speed"]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
} else { |
|
[[NSUserDefaults standardUserDefaults] setObject:[TFUtilsHelper formatStringWithInteger:readSpeedIndex] forKey:@"xtfei_ai_read_speed"]; |
|
[[NSUserDefaults standardUserDefaults] synchronize]; |
|
} |
|
} |
|
|
|
- (NSArray *)getReadSpeedKeysWithProducitionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAudio) { |
|
return @[TFLocalizedString(@"0.5倍"), TFLocalizedString(@"0.75倍"), TFLocalizedString(@"1倍"), TFLocalizedString(@"1.25倍"), TFLocalizedString(@"1.5倍")]; |
|
} else { |
|
return @[TFLocalizedString(@"0.5倍"), TFLocalizedString(@"0.75倍"), TFLocalizedString(@"1倍"), TFLocalizedString(@"1.25倍"), TFLocalizedString(@"1.5倍")]; |
|
} |
|
} |
|
|
|
- (NSArray *)getReadSpeedValuesWithProducitionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAudio) { |
|
return @[@"0.5", @"0.80", @"1.0", @"1.25", @"1.5"]; |
|
} else { |
|
return @[@"0.5", @"0.80", @"1.0", @"1.25", @"1.5"]; |
|
} |
|
} |
|
|
|
- (void)startTimingFinishBlock:(void(^)(void))finishBlock |
|
{ |
|
CGFloat duration = [[[self getReadTimingValues] objectAtIndex:self.read_timing] floatValue]; |
|
|
|
if (self.read_timing == 0 || self.read_timing == 1) { |
|
[self.countdownTimer stopTimer]; |
|
if (finishBlock) { |
|
finishBlock(); |
|
} |
|
return; |
|
} |
|
|
|
[self.countdownTimer stopTimer]; |
|
[self.countdownTimer startTimerWithTimeDuration:duration]; |
|
} |
|
|
|
- (void)getCurrentTimingBlock:(void(^)(NSUInteger currentTime))currentTimeBlock finishBlock:(void(^)(void))finishBlock |
|
{ |
|
// if ((self.read_timing == 0 || self.read_timing == 1) && ) { |
|
// if (finishBlock) { |
|
// finishBlock(); |
|
// } |
|
// } |
|
|
|
self.countdownTimer.timerRunningBlock = ^(NSUInteger runTimes, CGFloat currentTime) { |
|
if (currentTimeBlock) { |
|
currentTimeBlock([[NSNumber numberWithFloat:currentTime] integerValue]); |
|
} |
|
}; |
|
|
|
WS(weakSelf) |
|
self.countdownTimer.timerFinishedBlock = ^{ |
|
weakSelf.read_timing = 0; |
|
|
|
if (finishBlock) { |
|
finishBlock(); |
|
} |
|
}; |
|
} |
|
|
|
- (WXYZ_GCDTimer *)countdownTimer |
|
{ |
|
if (!_countdownTimer) { |
|
_countdownTimer = [[WXYZ_GCDTimer alloc] initCountdownTimerWithTimeDuration:10 immediatelyCallBack:YES]; |
|
} |
|
return _countdownTimer; |
|
} |
|
|
|
static BOOL aiPlayPageShow = NO; |
|
static BOOL audioPlayPageShow = NO; |
|
- (void)playPageViewShow:(BOOL)show productionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAi) { |
|
aiPlayPageShow = show; |
|
} |
|
|
|
if (productionType == TFProductionTypeAudio) { |
|
audioPlayPageShow = show; |
|
} |
|
} |
|
|
|
- (BOOL)isPlayPageShowingWithProductionType:(TFProductionType)productionType |
|
{ |
|
if (productionType == TFProductionTypeAi) { |
|
return aiPlayPageShow; |
|
} |
|
|
|
if (productionType == TFProductionTypeAudio) { |
|
return audioPlayPageShow; |
|
} |
|
|
|
return NO; |
|
} |
|
|
|
@end
|
|
|