이번에는,
어플리케이션이 실행중이지 않은 상태에서 바탕화면에 반투명 액티비티를 띄우는 방법을 알아보도록 하겠습니다.
단계는 3단계로 나누어 집니다.
1. 매니페스트 설정 2. 액티비티 설정 3. 서비스, 또는 리시버에서 투명액티비티를 실행 |
1. AndroidManifest.xml 코드 |
1 2 | < activity android:name = "ShowMsgActivity" android:theme = "@android:style/Theme.Translucent" /> |
매니페스트 파일에서 투명으로 생성할 액티비티의 속성에 위의 코드를 추가해주어야 합니다.
사실 완전한 투명은 아니고, 반투명의 상태로 액티비티를 띄우는 것입니다.(Translucent == 반투명한)
위 처럼 액티비티의 스타일에 반투명한 테마를 설정해주었다면, 매니페스트에서 할일은 끝났습니다.
2. 액티비티(java파일) 설정 |
이 액티비티는 레이아웃 구성을 하지 않아도 되기때문에 레이아웃 xml 파일이 필요하지 않습니다.
즉, setContentView(R.layout.파일이름); 의 코드를 작성하지 않아도 됩니다.
대신 다른 설정을 해 주어야합니다.
1 2 3 4 5 6 7 8 9 | @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND); } |
액티비티에는 두가지의 플래그가 사용되었습니다.
FLAG_KEEP_SCREEN_ON
: Window flag: as long as this window is visible to the user, keep the device's screen turned on and bright.
FLAG_BLUR_BEHIND
: Window flag: blur everything behind this window.
위의 KEEP_SCREEN_ON 플래그는 유저가 디바이스의 화면을 끄지 않는 한은 화면을 띄워 놓고 꺼지지 않게 유지시켜주는 역할을 합니다.
아래의 BLUR_BEHIND 플래그는 지금 생성되는 액티비티 뒤에 깔리게 되는 화면에 대해 초점을 잃게 만듭니다.
쉽게 생각해서 포토샵의 블러효과를 준다고 생각하면 됩니다.
3. 리시버, 또는 서비스에서 액티비티 실행 |
이제 액티비티를 실행할 단계입니다.
(지금 하려는 것은 서비스, 리시버에서 이벤트 발생시 어플리케이션이 살아있지 않은 단계에서
투명액티비티를 띄워서 디바이스 사용자에게 뭔가 내가 원하는 메시지를 전달하고자 하기 위한것입니다.)
1 2 3 | Intent intent = new Intent(context, ShowMsgActivity. class ); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); |
실제로 액티비티를 띄우는 방법은 위의 3줄로 가능합니다.
여기서 중요한 점은 Intent의 플래그입니다.
FLAG_ACTIVITY_NEW_TASK 플래그를 설정해주지 않는다면 에러가 날 수 있습니다.
(FALG_ACTIVITY_NEW_TASK 대한 관련 글 : [Android] Activity가 아닌곳에서 startActivity 사용)
(서비스, 리시버 관련글 : [Android] Service, BroadcastReceiver, boot_completed RECEIVER)
저는 이 방법을 푸시메시지를 보낼때 사용합니다.
안드로이드 2.2부터는 푸시메시지 보내는 것이 가능해졌기 때문에 여러가지 방법으로 응용할 수 있습니다.
(안드로이드 푸시메시지 보내기 관련글 : [Android] Push - 안드로이드 푸쉬알림, C2DM)
C2DM과 결합하여 결과적으로는 아래와 같이 사용할 수 있습니다.
'Programming > Android & Java' 카테고리의 다른 글
안드로이드 권한 목록(Permission List) (0) | 2013.08.14 |
---|---|
android openssl 사용 (0) | 2013.05.03 |
Hack on Android WebKit (0) | 2012.11.02 |
[퍼온글] JNI_OnLoad 함수 2 (3) | 2012.10.25 |
[퍼온글] JNI_OnLoad 함수 (0) | 2012.10.25 |