2011-11-16 27 views
6

Tôi biết rằng Apple không cung cấp cách phát hiện trạng thái của iPhone mute/silence chuyển đổi trong iOS 5. Tuy nhiên, tôi đã thử một kỹ thuật được đề cập ở đâu đó để phát hiện điều này bằng cách phát một tệp âm thanh và đo thời gian chạy của nó. Tuy nhiên, mặc dù iPhone của tôi bị tắt tiếng, tệp âm thanh vẫn phát toàn bộ thời lượng. Tôi đang sử dụng [AVAudioPlayer play] và tính toán thời gian trước khi audioPlayerDidFinishPlaying được gọi. Bạn có biết một mẹo để chơi một tập tin âm thanh, mà sẽ hoàn thành sớm/ngay lập tức nếu điện thoại bị tắt tiếng?Phát hiện chuyển đổi tắt tiếng iPhone trong iOS 5

Trả lời

4

CẬP NHẬT: Rất tiếc, mã sau được đăng hoạt động tốt cho tôi nhưng tôi đang sử dụng iOS4. Đối với iOS5 câu trả lời này là những gì sẽ giải quyết vấn đề của bạn - Detecting the iPhone's Ring/Silent/Mute switch using AVAudioPlayer not working?

Đoạn mã này là những gì bạn cần. Xác định biến số toàn cầu gAudioSessionInited var. Cờ này cho bạn biết nút tắt tiếng của bạn có đang bật hay tắt.

// "Ambient" makes it respect the mute switch. Must call this once to init session 
if (!gAudioSessionInited) 
{ 
    AudioSessionInterruptionListener inInterruptionListener = NULL; 
    OSStatus error; 
    if ((error = AudioSessionInitialize (NULL, NULL, inInterruptionListener, NULL))) 
     NSLog(@"*** Error *** error in AudioSessionInitialize: %d.", error); 
    else 
     gAudioSessionInited = YES; 
} 

SInt32 ambient = kAudioSessionCategory_AmbientSound; 
if (AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (ambient), &ambient)) 
{ 
    NSLog(@"*** Error *** could not set Session property to ambient."); 
} 
+0

hi. nó đang làm việc trong ios ?. – Gopinath

+0

có điều này là dành cho ios. bạn đang nói về phiên bản nào ... –

+1

xin lỗi vì nhầm lẫn. nó đang hoạt động ios5 ?. và xin lỗi vì sự chậm trễ. – Gopinath

Các vấn đề liên quan