Получить системный том iOS

ios objective-c swift audio volume

28248 просмотра

8 ответа

Мой случай прост: мне нужно воспроизвести предупреждающий сигнал и убедиться, что пользователь его услышит, поэтому я хочу проверить громкость системы.

Как узнать текущий объем системы?

Автор: Joris van Liempd iDeveloper Источник Размещён: 12.08.2019 06:32

Ответы (8)


37 плюса

Решение

Обновление для Swift

    let vol = AVAudioSession.sharedInstance().outputVolume

Аудио сеанс может обеспечить выходную громкость (iOS> = 6.0).

float vol = [[AVAudioSession sharedInstance] outputVolume];
NSLog(@"output volume: %1.2f dB", 20.f*log10f(vol+FLT_MIN));
Автор: papahabla Размещён: 06.05.2013 07:20

14 плюса

Попробуй это:

    MPMusicPlayerController *iPod = [MPMusicPlayerController iPodMusicPlayer];
    float volumeLevel = iPod.volume;

Вам необходимо импортировать среду MediaPlayer.

Автор: borked Размещён: 19.09.2011 05:41

13 плюса

Это прекрасно работает:

Float32 volume;
UInt32 dataSize = sizeof(Float32);

AudioSessionGetProperty (
                     kAudioSessionProperty_CurrentHardwareOutputVolume,
                     &dataSize,
                     &volume
                     );
Автор: ziguli Размещён: 17.10.2011 09:01

12 плюса

Swift 3.1

let audioSession = AVAudioSession.sharedInstance()
var volume: Float?
do {
    try audioSession.setActive(true)
    volume = audioSession.outputVolume
} catch {
    print("Error Setting Up Audio Session")
}

audioSession.setActive(true)- важно

Автор: Vasilii Muravev Размещён: 08.05.2017 02:32

11 плюса

Для Swift 2 :

let volume = AVAudioSession.sharedInstance().outputVolume   
print("Output volume: \(volume)")
Автор: Dasoga Размещён: 17.03.2016 12:35

5 плюса

Вы можете использовать системный вид по умолчанию для системы и добавлять туда, где вам это нужно. В моем случае это потребовалось в моем собственном музыкальном проигрывателе. Это легко и без проблем. Просто добавьте вид, и все готово. Это объясняется в справочнике по классу Apple MPVolume .

mpVolumeViewParentView.backgroundColor = [UIColor clearColor];
MPVolumeView *myVolumeView =
[[MPVolumeView alloc] initWithFrame: mpVolumeViewParentView.bounds];
[mpVolumeViewParentView addSubview: myVolumeView];
[myVolumeView release];
Автор: Suraj Pathak Размещён: 23.11.2012 02:26

1 плюс

Я подготовил класс со статическими методами, чтобы разобраться с объемом устройств ios. Позвольте мне поделиться с вами :)

import AVFoundation
class HeadPhoneDetectHelper {
class func isHeadPhoneConnected() -> Bool
{
    do{
        let audioSession = AVAudioSession.sharedInstance()
        try audioSession.setActive(true)
        let currentRoute = audioSession.currentRoute
        let headPhonePortDescriptionArray = currentRoute.outputs.filter{$0.portType == AVAudioSessionPortHeadphones}
        let isHeadPhoneConnected = headPhonePortDescriptionArray.count != 0
        return isHeadPhoneConnected
    }catch{
        print("Error while checking head phone connection : \(error)")
    }
    return false
}

class func isVolumeLevelAppropriate() -> Bool
{
    let minimumVolumeLevelToAccept = 100
    let currentVolumeLevel = HeadPhoneDetectHelper.getVolumeLevelAsPercentage()
    let isVolumeLevelAppropriate = currentVolumeLevel >= minimumVolumeLevelToAccept
    return isVolumeLevelAppropriate
}

class func getVolumeLevelAsPercentage() -> Int
{
    do{
        let audioSession = AVAudioSession.sharedInstance()
        try audioSession.setActive(true)
        let audioVolume =  audioSession.outputVolume
        let audioVolumePercentage = audioVolume * 100
        return Int(audioVolumePercentage)
    }catch{
        print("Error while getting volume level \(error)")
    }
    return 0
}
}
Автор: Suat KARAKUSOGLU Размещён: 03.02.2016 02:25

1 плюс

Swift 2.2, обязательно импортируйте MediaPlayer

private func setupVolumeListener()
{
    let frameView:CGRect = CGRectMake(0, 0, 0, 0)
    let volumeView = MPVolumeView(frame: frameView)
    //self.window?.addSubview(volumeView) //use in app delegate
   self.view.addSubview(volumeView)  //use in a view controller


    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(volumeChanged(_:)), name: "AVSystemController_SystemVolumeDidChangeNotification", object: nil)
}//eom



func volumeChanged(notification:NSNotification)
{
    let volume = notification.userInfo!["AVSystemController_AudioVolumeNotificationParameter"]
    let category = notification.userInfo!["AVSystemController_AudioCategoryNotificationParameter"]
    let reason = notification.userInfo!["AVSystemController_AudioVolumeChangeReasonNotificationParameter"]

    print("volume:      \(volume!)")
    print("category:    \(category!)")
    print("reason:      \(reason!)")
    print("\n")
}//eom
Автор: LuAndre Размещён: 27.05.2016 09:08
Вопросы из категории :
32x32