검색결과 리스트
Xcode에 해당되는 글 4건
- 2012.05.18 MAC OS X 응용프로그램 볼륨 값 가져오기 또는 볼륨 값 설정하기 1
글
MAC OS X 에서 응용프로그램 개발시 MAC의 마스터 볼륨을 컨트롤 해주는 소스입니다.
일단 맥PC 에선 테스트는 못해봤구요.
맥북에서만 해봤는데, 흔히 'command' + 'F11' or 'F12' 키로 볼륨을 조절 하잔아요.
내 이때 볼륨의 값과 그 볼륨값을 설정할때 사용하는 코드 입니다.
따로 응용프로그램을 개발중이셨다면 .h 파일과 .m 파일을 만들어서 아래 소스를 붙여 놓구 다른 클래스에서 필요하실때마다
끌어다 쓰시면 될꺼 같아요.
일단 소스는 아래 와 같습니다.
01.
+(AudioDeviceID)defaultOutputDeviceID
02.
{
03.
AudioDeviceID outputDeviceID = kAudioObjectUnknown;
04.
05.
// get output device device
06.
UInt32 propertySize = 0;
07.
OSStatus status = noErr;
08.
AudioObjectPropertyAddress propertyAOPA;
09.
propertyAOPA.mScope = kAudioObjectPropertyScopeGlobal;
10.
propertyAOPA.mElement = kAudioObjectPropertyElementMaster;
11.
propertyAOPA.mSelector = kAudioHardwarePropertyDefaultOutputDevice;
12.
13.
if
(!AudioHardwareServiceHasProperty(kAudioObjectSystemObject, &propertyAOPA))
14.
{
15.
NSLog(@
"Cannot find default output device!"
);
16.
return
outputDeviceID;
17.
}
18.
19.
propertySize = sizeof(AudioDeviceID);
20.
21.
status = AudioHardwareServiceGetPropertyData(kAudioObjectSystemObject, &propertyAOPA, 0, NULL, &propertySize, &outputDeviceID);
22.
23.
if
(status)
24.
{
25.
NSLog(@
"Cannot find default output device!"
);
26.
}
27.
return
outputDeviceID;
28.
}
29.
30.
// getting system volume
31.
32.
+(
float
)volume :(
int
) flag : (
float
) volume_value
33.
{
34.
Float32 outputVolume;
35.
36.
UInt32 propertySize = 0;
37.
OSStatus status = noErr;
38.
AudioObjectPropertyAddress propertyAOPA;
39.
propertyAOPA.mElement = kAudioObjectPropertyElementMaster;
40.
propertyAOPA.mSelector = kAudioHardwareServiceDeviceProperty_VirtualMasterVolume;
41.
propertyAOPA.mScope = kAudioDevicePropertyScopeOutput;
42.
43.
AudioDeviceID outputDeviceID = [[self
class
] defaultOutputDeviceID];
44.
45.
if
(outputDeviceID == kAudioObjectUnknown)
46.
{
47.
NSLog(@
"Unknown device"
);
48.
return
0.0;
49.
}
50.
51.
if
(!AudioHardwareServiceHasProperty(outputDeviceID, &propertyAOPA))
52.
{
53.
NSLog(@
"No volume returned for device 0x%0x"
, outputDeviceID);
54.
return
0.0;
55.
}
56.
57.
propertySize = sizeof(Float32);
58.
59.
status = AudioHardwareServiceGetPropertyData(outputDeviceID, &propertyAOPA, 0, NULL, &propertySize, &outputVolume);
60.
61.
if
(status)
62.
{
63.
NSLog(@
"No volume returned for device 0x%0x"
, outputDeviceID);
64.
return
0.0;
65.
}
66.
67.
if
(outputVolume < 0.0 || outputVolume > 1.0)
return
0.0;
68.
69.
if
(flag == 0) {
70.
return
outputVolume;
71.
}
else
if
(flag == 1){
72.
propertySize = (sizeof(volume_value));
73.
AudioHardwareServiceSetPropertyData(outputDeviceID, &propertyAOPA, 0, NULL, propertySize, &volume_value);
74.
}
75.
return
0;
76.
}
내 여기서 뭐 다들 Object-C 하신분이라면 이정도 소스만 있으면 대충 어떻게 돌아가는건지 파악하시고 끌어다 쓰실거라 생각됩니다.
간단히 설명 드리자면..
1.
+(
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