LazyDreamy

관리자 | 글쓰기

LazyDreamy » Computer

엑스페리아 음악 감상 삽질

드림 | 2010/02/07 16:21

# Made by Estrella
# For MS-SMS

# 현재 문자음 상태 저장
sms_vol=RegRead("HKLM", "Software\BTBApps\MMSC\Conf\Alarm", "Bell")
ms_vol=RegRead("HKCU", "ControlPanel\Notifications\{A877D65B-239C-47a7-9304-0D347F580408}", "Options")
phone_vol=RegRead("HKCU", "ControlPanel\Sounds\RingTone0", "Script")

changed=RegRead("HKCU", "ControlPanel\VolumeOld", changed)

SetSound="My Documents\SetSound.exe"

#무한 반복
While(1)

    #이어폰 삽입시 진동 활성화
    If(RegRead("HKLM", "System\State\Hardware", "Headset") EQ 1)

        if(changed=1)
            #
        else
            # 문자수신음 진동으로 변경
            RegWriteDWord("HKLM", "Software\BTBApps\MMSC\Conf\Alarm", "Bell", "4")
            RegWriteDWord("HKCU", "ControlPanel\Notifications\{A877D65B-239C-47a7-9304-0D347F580408}", "Options", "14")
            RegWriteString("HKCU", "ControlPanel\Sounds\RingTone0", "Script", "av3w3r")

            # 진동일 경우
            old_mode=RegRead("HKCU", "ControlPanel\Notifications\ShellOverrides", "Mode")
            if(old_mode=1)
                RegWriteDWord("HKCU", "ControlPanel\VolumeOld", "old_mode", old_mode)
            else
                RegWriteDWord("HKCU", "ControlPanel\VolumeOld", "old_mode", 0)
            endif
            SetVolume(18)

            changed=1
            RegWriteDWord("HKCU", "ControlPanel\VolumeOld", "changed", changed)
        endif

    #이어폰 제거시 진동 비활성화
    else

        if(changed=1)
            # 문자수신음 본래 값 복원
            RegWriteDWord("HKLM", "Software\BTBApps\MMSC\Conf\Alarm", "Bell", sms_vol)
            RegWriteDWord("HKCU", "ControlPanel\Notifications\{A877D65B-239C-47a7-9304-0D347F580408}", "Options", ms_vol)
            RegWriteString("HKCU", "ControlPanel\Sounds\RingTone0", "Script", phone_vol)

            old_mode=RegRead("HKCU", "ControlPanel\VolumeOld", "old_mode")
            if(old_mode=1)
                SetVolume(153)
                Run(SetSound,"-setvibrate")
            else
                SetVolume(153)
                Run(SetSound,"-setringeron")
            endif

            changed=0
            RegWriteDWord("HKCU", "ControlPanel\VolumeOld", "changed", changed)
        else
            #
        endif

    endif

    #2초마다 레지스트리값 갱신
    sleep(2000)
EndWhile

 

* MortScript 4.2 필요

네이버 스마트폰 카페 Estrella 님이 올려둔 스크립트를 기반으로 수정.

 

WM (Windows Mobile) 의 고질적인 문제가 진동 설정 시 이어폰을 꼽아도 해당 이어폰으로 소리를 들을 수 없다는 점이다. 일단 두가지 모드를 기준으로 수정했고, 진동모드인지 벨소리모드인지를 확인해서 동작한다.

 

기능

- 이어폰을 꼽게되면 벨소리 / 문자 소리가 전부 진동으로 설정된다.

- 진동 모드일 경우에도 이어폰을 꼽게되면 진동 + 음악감상이 가능한 상태로 세팅된다.

- 이어폰을 뽑게되면 기존 모드로 돌아간다. 단.. 이전 볼륨을 가져오려고 했으나, 소스가 좀 꼬여서 일단 중단하고 강제 설정으로 수정했다.

 

참고 및 문제점

엑스페리아의 볼륨은 0 ~ 16843009 * 255 까지 설정 가능하다. (각 모델별로 레지스트리에 써지는 값이 틀리다.

모트스크립트의 SetVolume 은 동작이 좀 묘연하다. WM 에는 크게 2개의 볼륨 (벨소리 / 시스템) 이 있는데 두개를 나눠서 조절 할수가 없다.

단순히 레지스트리 저장만 가지고는 동작에 영향이 바로 오지 않았다. (sdk 를 봐야 할 듯)

벨소리 / 진동처리를 명확히하기위해 외부 프로그램 (SetSound.exe) 를 사용했다.

2010/02/07 16:21 2010/02/07 16:21


(go to top)

◀ recent | 1 | ... 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ... 369 | previous ▶