검색결과 리스트
C에 해당되는 글 6건
- 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