【问题标题】:making iOS app having option to enable and disable sound使 iOS 应用程序具有启用和禁用声音的选项
【发布时间】:2012-12-03 09:59:50
【问题描述】:

我想让 iOS 应用程序在每个按钮点击时播放声音,我可以从设置屏幕禁用/启用声音。谁能帮我解决这个问题?

【问题讨论】:

    标签: iphone ios


    【解决方案1】:

    好的,试试这段代码

    在您的设置屏幕.h 文件中

    @interface SettingScreen : UIViewController<AVAudioPlayerDelegate,AVAudioSessionDelegate>
    {
        AVAudioPlayer *audioplayer;
    }
    

    在 .m 文件中

    -(void)viewDidLoad
    {
        NSString* BS_path_blue=[[NSBundle mainBundle]pathForResource:@"Click" ofType:@"mp3"];
        audioplayer =[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:BS_path_blue]  error:NULL];
        audioplayer.delegate=self;
        [audioplayer prepareToPlay];
    
        UISwitch *soundsOnOffButton = [[UISwitch alloc]initWithFrame:CGRectMake(180, 8, 130, 27)];
        [self.view addSubview:soundsOnOffButton];
        [soundsOnOffButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
    
         soundsOnOffButton.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"sound"];
    }
    
    -(void)buttonAction:(UIButton *)sender
    {
        if (soundsOnOffButton.on)
        {
    
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"sound"];
            [[NSUserDefaults standardUserDefaults] synchronize];
            if ([[NSUserDefaults standardUserDefaults] boolForKey:@"sound"]==YES)
            {
                [audioplayer play];
            }
        }
        else
        {
            [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"sound"];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }
    }
    

    这是用于设置屏幕。现在,如果您想为另一个屏幕上的任何按钮播放声音,请将代理和前四行添加到您的该文件中,然后将此行添加到他们的操作中。

    -(void)buttonAction:(UIButton *)sender
    {
        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"sound"]==YES)
        {
             [audioplayer play];
         }
    
        // other code
    }
    

    如有问题请回复我。

    【讨论】:

    • 感谢您的回答,它可能有效,但我是否必须为每次按钮点击检查它?没有这样做的通用方法,因此当我将音频设置为 ON 时,它会播放,而当我将其关闭时,它不会播放...
    • 这会很好用。如果它解决了您的问题,请接受它作为正确答案。
    【解决方案2】:

    在播放任何声音之前检查设置..?

    // pseudo code
    - (void)playSound:(NSInteger)soundID;
    {
      if(settings.soundEnabled) {
        [SoundPlayer playSoundWithID:soundID];
      }
    }
    

    【讨论】:

    • 感谢您的快速回答,所以我必须在每次点击按钮时检查它吗?没有更好的方法吗?
    • 如果有这样的设置,您认为这在内部是如何工作的?有人需要检查设置。只需使用相同的方法在任何地方播放声音,然后在该方法中检查您的设置。
    【解决方案3】:

    您无法更改设备声音(应用程序将被拒绝)如何设置音量通过分配一些介于 0 到 1 之间的值。如果用户选择禁用,则在设置选项中将其设置为 0。 在这里查看山姆的答案:How to disable iOS System Sounds

    【讨论】:

    • 那么在这种情况下,音量设置将适用于整个手机还是仅适用于我的应用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多