마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

홈버튼 클릭 이벤트, 화면꺼짐 이벤트 서로 달리 하고 싶습니다.

+1 추천
안녕하세요

제가 만들고 있는 어플은,

어플이 켜진 상태에서 버튼을 누르면

노래가 재생되고, 화면이 꺼져도 재생되는 노래가 재생되야합니다.

노래 재생중 홈버튼을 누르면 노래가 중지되면서, 어플도 꺼지는 거구요.

문제는 이부분을 해결하려고 onPause, onDestroy, onUserLeaveHint, onStop

함수를 써도 , 화면이 꺼지는것과, 홈버튼 누르는것을 구분 못하더라구요.

위의 함수 모두 노래재생 중 화면이 꺼지면 노래도 꺼지고,

노래재생 중 홈버튼을 누르면 노래도 꺼집니다. 해결 가능한

함수가 없을까요..
패기백배개발자 (700 포인트) 님이 2015년 8월 17일 질문

2개의 답변

0 추천
결론 부터 말씀드리면 없습니다!

구글에서는 홈버튼의 이벤트를 개발자가 받지 않기를 원합니다.

그렇다 보니 심지어 키이벤트에서도 홈버튼의 이벤트는 존재 하지 앖습니다.
ThisPlus (46,920 포인트) 님이 2015년 8월 17일 답변
키이벤트에 홈버튼 이벤트 존재합니다.
다만 홈버튼 이벤트를 악용or잘못 사용할 경우 폰이 먹통이 될수도 있기 때문에 제어에 제약을 둔겁니다.
잘못된 정보 퍼뜨리지 마시길 바랍니다.

시중에 존재하는 음악 플레이어 어플들은 어떻게 돌아가고있다고 생각하십니까.
음악 플레이는 Service로 구현하고, 화면 꺼짐/켜짐도 구별이 가능합니다.
아 그렇군요~! 죄송합니다~!
그래서 답변은???
0 추천
<intent-filter>
            <action android:name="android.intent.action.SCREEN_OFF" />
            <action android:name="android.intent.action.SCREEN_ON" />
</intent-filter>

Receiver 를 통해 화면의 off, on 방송을 수신할 수 있습니다.

 

Receiver 를 만들고

위와같은 인텐트필터를 Manifest 의 receiver 태그의 자식 태그로 등록한 후

 

해당 리시버의 onReceive 함수를 다음과 같이 오버라이드 하면

화면의 꺼짐/켜짐 이벤트 콜백을 받을 수 있습니다.

 

@Override
public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
	if (action.equals(Intent.ACTION_SCREEN_OFF) {
                // 화면 꺼질 때
        } else if(action.equals(Intent.ACTION_SCREEN_ON) {
                // 화면 켜질 때
        ]
}

더 자세한 사항은 검색해보세요~

블랙천사 (260 포인트) 님이 2015년 8월 19일 답변
...