zoukankan      html  css  js  c++  java
  • iOS 隐藏系统音量提示框

        一:

    #import <MediaPlayer/MediaPlayer.h>

    #import <AVFoundation/AVFAudio.h>

    @property(nonatomic,strong)UISlider *sliderView;

    @property(nonatomic,assign)NSIntegercurrentTime;



    二.

    隐藏系统音量提示框

    - (void)viewDidLoad {

        [superviewDidLoad];

        self.view.backgroundColor = [UIColorredColor];

        

        MPVolumeView *volumeView = [[MPVolumeViewalloc] initWithFrame: CGRectZero];

        volumeView.clipsToBounds = YES;

        [self.viewaddSubview: volumeView];

            

        self.sliderView = [[UISlideralloc]init];

        self.sliderView.frame = CGRectMake(100, 100, 200, 10);

        self.sliderView.maximumValue = 1;

        self.sliderView.minimumValue = 0;

    //    self.sliderView.backgroundColor = [UIColor blueColor];

        self.sliderView.tintColor = [UIColoryellowColor];

        self.sliderView.thumbTintColor = [UIColorclearColor];//隐藏滑块

        [self.viewaddSubview:self.sliderView];

        [selfsettingVolume];

    }




    三.
    // 设置音量相关

    - (void)settingVolume {

        //监听系统音量变化

        AVAudioSession *session = [AVAudioSessionsharedInstance];

        [session setCategory:AVAudioSessionCategoryAmbienterror:nil];

        [session setActive:YESerror:nil];

        NSError *error;

        [[AVAudioSessionsharedInstance] setActive:YESerror:&error];

        [[UIApplicationsharedApplication] beginReceivingRemoteControlEvents];

        [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(volumeChangeNotification:)name:@"AVSystemController_SystemVolumeDidChangeNotification"object:nil];

    }


    // 音量改变

    - (void)volumeChangeNotification:(NSNotification *)noti {

        if (self.sliderView.alpha == 0.0) {

            [UIViewanimateWithDuration:0.25animations:^{

                self.sliderView.alpha = 1.0;

            }];

        }

        float volume = [[[noti userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue];

        self.sliderView.value = volume;

        self.currentTime = [NSDatedate].timeIntervalSince1970;

        // 两秒后消失

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

            NSTimeInterval nowTime = [NSDatedate].timeIntervalSince1970;

            // 容错处理,处理用户连续按音量加减时的情况

            if ((nowTime - self.currentTime) >= 2.0) {

                [UIViewanimateWithDuration:0.25animations:^{

                    self.sliderView.alpha = 0.0;

                } ];

            }

        });

    }

     

     
  • 相关阅读:
    Android性能测试工具APT使用指南
    android.app.Activity阅读摘要,有时候会不会需要保持一些现场数据呢? 想让系统帮你退出到后台或者挂掉前做些前置保持工作吗,重点参考吧:
    OkHttp+Stetho+Chrome调试android网络部分
    HLG2179 组合(dfs水水更健康)
    HLG 1494网络 (求的割点数目)可做模板
    hdu2586&&poj1330 求点间最短距&&最近公共祖先(在线&&离线处理):::可做模板
    hdu 2586
    poj分类
    poj3748 位运算 bitset
    C++ bitset类的使用与简介
  • 原文地址:https://www.cnblogs.com/-ios/p/14330244.html
Copyright © 2011-2022 走看看