검색결과 리스트
Xcode에 해당되는 글 4건
- 2012.05.18 MAC OS X 응용프로그램 볼륨 값 가져오기 또는 볼륨 값 설정하기 1
글
MAC OS X 에서 응용프로그램 개발시 MAC의 마스터 볼륨을 컨트롤 해주는 소스입니다.
일단 맥PC 에선 테스트는 못해봤구요.
맥북에서만 해봤는데, 흔히 'command' + 'F11' or 'F12' 키로 볼륨을 조절 하잔아요.
내 이때 볼륨의 값과 그 볼륨값을 설정할때 사용하는 코드 입니다.
따로 응용프로그램을 개발중이셨다면 .h 파일과 .m 파일을 만들어서 아래 소스를 붙여 놓구 다른 클래스에서 필요하실때마다
끌어다 쓰시면 될꺼 같아요.
일단 소스는 아래 와 같습니다.
+(AudioDeviceID)defaultOutputDeviceID
{
AudioDeviceID outputDeviceID = kAudioObjectUnknown;
// get output device device
UInt32 propertySize = 0;
OSStatus status = noErr;
AudioObjectPropertyAddress propertyAOPA;
propertyAOPA.mScope = kAudioObjectPropertyScopeGlobal;
propertyAOPA.mElement = kAudioObjectPropertyElementMaster;
propertyAOPA.mSelector = kAudioHardwarePropertyDefaultOutputDevice;
if (!AudioHardwareServiceHasProperty(kAudioObjectSystemObject, &propertyAOPA))
{
NSLog(@"Cannot find default output device!");
return outputDeviceID;
}
propertySize = sizeof(AudioDeviceID);
status = AudioHardwareServiceGetPropertyData(kAudioObjectSystemObject, &propertyAOPA, 0, NULL, &propertySize, &outputDeviceID);
if(status)
{
NSLog(@"Cannot find default output device!");
}
return outputDeviceID;
}
// getting system volume
+(float)volume :(int) flag : (float) volume_value
{
Float32 outputVolume;
UInt32 propertySize = 0;
OSStatus status = noErr;
AudioObjectPropertyAddress propertyAOPA;
propertyAOPA.mElement = kAudioObjectPropertyElementMaster;
propertyAOPA.mSelector = kAudioHardwareServiceDeviceProperty_VirtualMasterVolume;
propertyAOPA.mScope = kAudioDevicePropertyScopeOutput;
AudioDeviceID outputDeviceID = [[self class] defaultOutputDeviceID];
if (outputDeviceID == kAudioObjectUnknown)
{
NSLog(@"Unknown device");
return 0.0;
}
if (!AudioHardwareServiceHasProperty(outputDeviceID, &propertyAOPA))
{
NSLog(@"No volume returned for device 0x%0x", outputDeviceID);
return 0.0;
}
propertySize = sizeof(Float32);
status = AudioHardwareServiceGetPropertyData(outputDeviceID, &propertyAOPA, 0, NULL, &propertySize, &outputVolume);
if (status)
{
NSLog(@"No volume returned for device 0x%0x", outputDeviceID);
return 0.0;
}
if (outputVolume < 0.0 || outputVolume > 1.0) return 0.0;
if (flag == 0) {
return outputVolume;
}else if (flag == 1){
propertySize = (sizeof(volume_value));
AudioHardwareServiceSetPropertyData(outputDeviceID, &propertyAOPA, 0, NULL, propertySize, &volume_value);
}
return 0;
}내 여기서 뭐 다들 Object-C 하신분이라면 이정도 소스만 있으면 대충 어떻게 돌아가는건지 파악하시고 끌어다 쓰실거라 생각됩니다.
간단히 설명 드리자면..
+(float)volume :(int) flag : (float) volume_value
저같은 경우는 위 volume 를 끌어올때 플래그값과 현재 제가 지정할 볼륨값을 보내서 설정하게 해뒀는데요.
flag값이 0이면 현재 맥의 마스터볼륨 값을 가져오도록 하구요. 그럼 당연히 뒤에 volume_value 는 아무 값이나 넣구요.
만약 flag 값이 1이면 현재 맥의 마스터 볼륨을 제가 임의로 volume_value 를 줘서 마스터 볼륨을 설정하도록 한거 입니다.
다들 개인의 입맛에 따라 수정가능할꺼에요.
좋은 정보가 되었으면 좋겠네요 ^^
'Programing > C / Object-C' 카테고리의 다른 글
| [iOS] - Web Server 제이슨 방식 처리 (0) | 2013.07.30 |
|---|---|
| iOS 디바이스별 화면 구성 (0) | 2012.06.11 |
| (Object-C) NSString 문자열 비교 하는 방법 (0) | 2012.04.20 |
| (Object-C) NSString, NSMutableString 세부 명령어 (0) | 2012.04.20 |
| (Object-C) Mac OS 응용프로그램 개발. window 화면 전환. (0) | 2012.04.19 |
RECENT COMMENT