FROM : Ryan Harter
DATE : Fri Nov 02 19:37:30 2007
I have written a program to mute the volume if headphones aren't plugged in,
or if the user attempts to unmute the volume without headphones for a lab
setting. When the user attempts to change the volume or unplugs the
headphones, a window appears saying Sound is disabled, please use
headphones.
This all works great on PPC macs, but for some reason on an intel iMac, the
windows doesn't appear when the headphones are unplugged, only if the user
attempts to change the volume. I know the if statement is being called
because it mutes the volume when the headphones are unplugged, it just
doesn't show the window. This is also only happening on the intel macs.
Here is my code:
if([self usingInternalSpeakers] && ![self soundIsMuted])
{
[self muteSound];
//this makes sure our window is on top
[NSApp activateIgnoringOtherApps:YES];
//show the window
[alertWindow makeKeyAndOrderFront:nil];
}
alertWindow is an NSWindow, and it works fine if the user attempts to change
the volume, just not when headphones are unplugged. My listener code is
here:
FourCharCode dataSource;
UInt32 size = sizeof(dataSource);
OSStatus err = AudioDeviceGetProperty(defaultSystemOutputDeviceID, 0, 0,
kAudioDevicePropertyDataSource, &size, &dataSource);
NSCAssert((err == noErr), @"AudioDeviceGetProperty failed to get the
kAudioDevicePropertyDataSource property");
//'ispk' == internal speakers
//'hdpn' == headphones
return dataSource == 'ispk';
Do intel macs work differently for kAudioDeviceGetProperty, or
makeKeyAndOrderFront?
Thanks-
Ryan
DATE : Fri Nov 02 19:37:30 2007
I have written a program to mute the volume if headphones aren't plugged in,
or if the user attempts to unmute the volume without headphones for a lab
setting. When the user attempts to change the volume or unplugs the
headphones, a window appears saying Sound is disabled, please use
headphones.
This all works great on PPC macs, but for some reason on an intel iMac, the
windows doesn't appear when the headphones are unplugged, only if the user
attempts to change the volume. I know the if statement is being called
because it mutes the volume when the headphones are unplugged, it just
doesn't show the window. This is also only happening on the intel macs.
Here is my code:
if([self usingInternalSpeakers] && ![self soundIsMuted])
{
[self muteSound];
//this makes sure our window is on top
[NSApp activateIgnoringOtherApps:YES];
//show the window
[alertWindow makeKeyAndOrderFront:nil];
}
alertWindow is an NSWindow, and it works fine if the user attempts to change
the volume, just not when headphones are unplugged. My listener code is
here:
FourCharCode dataSource;
UInt32 size = sizeof(dataSource);
OSStatus err = AudioDeviceGetProperty(defaultSystemOutputDeviceID, 0, 0,
kAudioDevicePropertyDataSource, &size, &dataSource);
NSCAssert((err == noErr), @"AudioDeviceGetProperty failed to get the
kAudioDevicePropertyDataSource property");
//'ispk' == internal speakers
//'hdpn' == headphones
return dataSource == 'ispk';
Do intel macs work differently for kAudioDeviceGetProperty, or
makeKeyAndOrderFront?
Thanks-
Ryan
| Related mails | Author | Date |
|---|---|---|
| Ryan Harter | Nov 2, 19:37 | |
| Ricky Sharp | Nov 2, 21:16 |






Cocoa mail archive

