自定义实现MPVolumeView音量控件
2012-09-13 20:11
323 查看
自定义的volume view的UI部分比较好实现,在这里主要谈下静音键和音量键事件的处理。
注:使用前需要添加头文件 #import <MediaPlayer/MediaPlayer.h>
判断是否静音:(该方法在ios5中被取消了)
- (BOOL)isMuted { CFStringRef route; UInt32 routeSize = sizeof(CFStringRef);OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &routeSize, &route); if (status == kAudioSessionNoError) { if (route == NULL || !CFStringGetLength(route)) return TRUE; }return FALSE; } 监听静音键:- (BOOL)addMutedListener { OSStatus s = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, self); return s == kAudioSessionNoError; } 回调函数:void audioRouteChangeListenerCallback (void *inUserData, AudioSessionPropertyID inPropertyID, UInt32 inPropertyValueSize, const void *inPropertyValue ) { if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return; BOOL muted = [self isMuted]; // add code here } 设置和获取音量:- (float)volume { return [[MPMusicPlayerController applicationMusicPlayer] volume]; }- (void)setVolume:(float)newVolume { [[MPMusicPlayerController applicationMusicPlayer] setVolume:newVolume]; } 监听音量键:- (BOOL)addHardKeyVolumeListener { OSStatus s = AudioSessionAddPropertyListener(kAudioSessionProperty_CurrentHardwareOutputVolume, audioVolumeChangeListenerCallback, self); return s == kAudioSessionNoError; } 音量键回调函数:void audioVolumeChangeListenerCallback (void *inUserData, AudioSessionPropertyID inPropertyID, UInt32 inPropertyValueSize, const void *inPropertyValue) { if (inPropertyID != kAudioSessionProperty_CurrentHardwareOutputVolume) return; Float32 value = *(Float32 *)inPropertyValue; MediaVolume *mediaVolume = (MediaVolume *)inUserData; // add code here }
相关文章推荐
- 自定义实现MPVolumeView音量控件
- 自定义实现MPVolumeView音量控件
- 自定义实现MPVolumeView音量控件
- Android 使用自定义RecyclerView控件实现Gallery效果
- UISplitViewController-分割控件自定义分割宽度是无法实现的
- Android UI设计之<十二>自定义View,实现绚丽的字体大小控制控件FontSliderBar
- Android自定义ImageView实现圆形控件显示
- Android进阶之自定义View实战(一)仿iOS UISwitch控件实现
- 自定义View实现水平滚动控件
- Android之自定义View实现随手势滑动的控件
- Android自定义View实现多图片选择控件
- Android高手进阶教程(二十七)之---基于ViewFlipper实现的自定义新手指引控件.
- iOS中自定义View实现layoutSubviews布局子控件
- 自定义View控件实现卫星菜单
- 自定义View实现水平滚动控件
- 自定义MPVolumeView控件
- 自定义View实现东购物车加减控件
- Kotlin 第一弹:自定义 ViewGroup 实现流式标签控件
- Android自定义WebView实现Youtube网络视频播放控件
- 自定义View实现水平滚动控件