2011-04-01 24 views
10

iPhone'un titreşim modunda olup olmadığını nasıl bilebilirim biliyor musunuz? Web'de bunun hakkında hiçbir şey bulamadım ... Görmek için çok mu yoruldum?iPhone - iOS için titreşimin açık mı yoksa kapalı mı olduğunu nasıl anlarım?

Uygulamada bir simge görüntülemek istiyorum, böylece telefon titreşim modundaysa veya olmasa bile kullanıcının bakmayı bilmesini sağlayabilir. Tha uygulamasının ayrıca kullanıcının rahatsız edilmek istenip istenmediğine (titreşimsiz) ya da olmamasına (titreşim) bağlı olarak farklı davranışları vardır.

Teşekkür ederiz.

+1

Sen diyebiliriz. ;) – ikegami

+1

Bilmemeliyim, ama ... * snicker * –

+0

Titreşim modunda olduğunu bilerek neyi başarmaya çalışıyorsunuz? Ses çalmak için mi? – iwasrobbed

cevap

9

Bu kullanarak elde etmek mümkün olmalıdır:

#import "AudioToolbox/AudioToolbox.h" 

- (void) ifSilentModeThenShowIcon 
{ 
    CFStringRef state; 
    UInt32 propertySize = sizeof(CFStringRef); 
    AudioSessionInitialize(NULL, NULL, NULL, NULL); 
    AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &propertySize, &state); 

    if(CFStringGetLength(state) == 0) 
    { 
    // phone's ringer is off so put 
    // some icon showing code here 
    } 
} 

Source

+0

Güzel bul. Bunun App Store için güvenli olduğunu mu varsayıyorum? –

+0

Evet, bunlar yalnızca ses oturumu özellikleridir, bu nedenle genel API'dir. Daha fazla bilgi burada: http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/ServiceSessionServicesReference/Reference/reference.html – iwasrobbed

+0

AudioSessionInitialize ve AudioSessionGetProperty, iOS 7'de kullanımdan kaldırılmıştır, bunu yapmanın başka bir yolu var mı? – easythrees