꿈소년의 개발 이야기

[Notification Bar] Notification Bar 에 이벤트 추가 본문

Android Development

[Notification Bar] Notification Bar 에 이벤트 추가

꿈소년 2011. 7. 9. 16:59
반응형
notification bar 에 어떤 이벤트를 추가하는 것이 가능한가?

분석한 결과대로라면,
프레임워크를 수정하지 않고서는 절대 불가능하다고 보고 있다.

이유는 노티피케이션이 가지는 이벤트 수용 영역이 뷰 전체를 영역으로 하기 있기 때문에
어떤 특정 버튼을 심는다거나 리스너를 넣는다 쳐도 터치 시에 감응하는 이벤트 영역은 항상 전체 뷰로 보고 있다.

따라서 어떤 이벤트도 수행할 수 없고 다만 노티피케이션의 contentIntent 를 펜딩인텐트로 설정하는 방법으로
겟액티비티나 겟브로드캐스트, 겟서비스 로 각각 수행할 액티비티, 브로드캐스트, 서비스를 시작하게끔 하는 것 외에는 없는 것으로 보여지고 있다.

당연한 것이 노티피케이션의 주 임무가 공지라는 점을 감안하면 당연할 것이다.
또한 노티피케이션이 온고잉에서 보여지므로 이 점을 생각하면 안되는게 정석이다.

차라리 노티피케이션을 보여주는 액티비티가 있는데 거기에 넣어주는 것이 나을 것 같다. 브로드캐스트나 서비스를 감지해서 처리해주면 될 것으로 보인다.
노티피케이션이 아니지만 노티피케이션 처럼 보이게 하는 것이다.

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar

StatusBarService.java 파일의 함수 중 makeStatusBarView() 함수를 보시게 되면 정의된 뷰 xml findViewById로 구성하는 것을 볼수 있다.

StatusBar 의 확장이 되었을 때의 xml도 구성되어있다.

codeNxml.java 파일의 status bar xml 내용의 scrollview 에 custom Layout 을 넣어서 영구적인  Layer를 얻은 다음,

preference 로 값을 가져와 Notification을 처리하면 가능할 것으로 보인다. 아니면 service나 broadcast를 통해서도 가능하다