Programming/Android & Java2012. 11. 2. 14:43
이번에는,
어플리케이션이 실행중이지 않은 상태에서 바탕화면에 반투명 액티비티를 띄우는 방법을 알아보도록 하겠습니다.


단계는 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 사용)






저는 이 방법을 푸시메시지를 보낼때 사용합니다.
안드로이드 2.2부터는 푸시메시지 보내는 것이 가능해졌기 때문에 여러가지 방법으로 응용할 수 있습니다.
(안드로이드 푸시메시지 보내기 관련글 : [Android] Push - 안드로이드 푸쉬알림,  C2DM)


C2DM과 결합하여 결과적으로는 아래와 같이 사용할 수 있습니다.


출처 : http://croute.me/339


'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
Posted by Mocker