2011-09-25 2 views
11

가능한 중복 : 내가 자동 모드가 있는지 확인하는 코드 아래에 사용한
Detect Silent mode in iOS5?확인은 아이 패드가 자동 모드에있는 경우

, 그것을 작동 아이폰에서 예상대로하지만, iPad에서 그것은 상관없이 연사를 반환합니다.

CFStringRef state; 
UInt32 propertySize = sizeof(CFStringRef); 
AudioSessionInitialize(NULL, NULL, NULL, NULL); 
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state); 

if (CFStringGetLength(state) == 0) { 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Silent mode" 
                message:@"Please turn sound on" 
                delegate:self cancelButtonTitle:@"Ok" 
              otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 

모든 아이디어를 보편적으로 수정하려면 어떻게해야합니까?

감사합니다.

댄.

답변

0

XIB에서 슬라이더를 추가하여 볼륨 수준을 확인할 수 있으므로 기본적으로 소리가 들리지 않고 볼륨 수준을 알 수 있습니다. 이 클래스에 대해 더 자세히 이해하려면 http://blog.stormyprods.com/2008/09/proper-usage-of-mpvolumeview-class.html 링크를 먼저 시도하십시오.

다음 코드는 볼륨 바 (var bar)와 같은 것을 만듭니다.

- (void)viewDidLoad { 
     // create a frame for MPVolumeView image 
CGRect frame = volumeViewHolder.bounds; // CGRectMake(0, 5, 180, 0); 
volumeView = [[[MPVolumeView alloc] initWithFrame:frame] autorelease]; 
[volumeView sizeToFit]; 
[volumeViewHolder addSubview:volumeView]; 

for (UIView *view in [volumeView subviews]){ 
    if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) { 
    volumeViewSlider = view; 
    } 
} 
[[NSNotificationCenter defaultCenter] addObserver:self 
     selector:@selector(volumeChanged:) 
     name:@"AVSystemController_SystemVolumeDidChangeNotification" 
     object:nil]; 
} 
- (void) volumeChanged:(NSNotification *)notify 
{ 
[volumeViewSlider setValue:[[[notify userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue]]; 
} 

나는 어떤 이유로 특정 클래스 (내 예제에서 하나)을 사용하는 경우 애플은 앱을 판매하는 것을 허용하지 않지만, 내가 이중 - 것 이것에 대해 너무 확실하지 않다 들었어요 확인하고 '사용'할 수 있는지 확인하십시오. 그러나 코드가 작동해야합니다.

0

이 그래서 잘 답변 답변 :

Detect Silent mode in iOS5?

와 게이브의 대답에 대한 그의 대답은 참으로 개인 API를 사용 않는 경우, 애플 앱을 거부합니다.