gpt4 book ai didi

iphone - MPVolumeView,避免显示 "No Volume Available"

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:55 25 4
gpt4 key购买 nike

我有一个包含 MPVolumeView 的项目。它已设置好并且可以正常工作,唯一的问题是当我将设备静音时,出现文本 "No Volume Available" 而不是 MPVolumeView。我希望在设备静音时禁用 MPVolumeView 的 slider 。

volumeView 在 View volumeBounds 中使用该 View 的边界进行初始化。

MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:volumeBounds.bounds] autorelease];
[volumeBounds addSubview:volumeView];
[volumeView sizeToFit];

谢谢:)

如果您有兴趣帮助我做其他事情,请查看 this question

最佳答案

使用AudioServices收听硬件音量。当音量变为零时,将 MPVolumeSlider 的 alpha 设置为零并将您自己禁用的 UISlider 放在相同位置。为您的 slider 设置外观,使其看起来像音量 slider 。

AudioSessionAddPropertyListener( kAudioSessionProperty_CurrentHardwareOutputVolume , ... );

kAudioSessionProperty_AudioRouteChanged 也可能有用。

如果您遍历 MPVolumeView 下的 View 层次结构,您应该会找到一个 UISlider。如果没有,或者如果它被隐藏,您就知道正在显示静音字符串。

编辑:

This描述您的监听器的函数原型(prototype)。要将消息传递给您的类的实例,请执行类似以下操作:

void MyPropertyListener ( void *inClientData, AudioSessionPropertyID inID, UInt32 inDataSize, const void *inData );

void MyPropertyListener ( void *inClientData, AudioSessionPropertyID inID, UInt32 inDataSize, const void *inData ) {
if ( inID == kAudioSessionProperty_CurrentHardwareOutputVolume ) {
Float32 volume = *(Float32 *)inData;
[(MyDelegateClass *)inClientData hardwareVolumeChanged:volume];
}
}

AudioSessionAddPropertyListener( kAudioSessionProperty_CurrentHardwareOutputVolume ,
MyPropertyListener , aDelegateInstance );

关于iphone - MPVolumeView,避免显示 "No Volume Available",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2829247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com