안드로이드폰에서 hold키를 누르면 순정 lockscreen으로 화면이 잠긴다.
이 락스크린을 개발자가 직접 건드릴수는 없으므로 가짜(?) 락스크린을 만들어 넣는 방법을 생각해 볼 수 있다.
LockScreen.java에서 Activity를 상속 받고,
onCreate메소드에서
WindowManager를 통해 플래그를 주었다...
- onCreate()
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout. .....);
위 플래그를 통해 홀드키를 누르면 안드로이드 순정 락스크린이 걸린상태에서 그 위에
LockScreen.java 액티비티를 띄우게 된다.
나는 서비스를 돌리고, 서비스에서 브로드캐스트 리시버를 통해 "Intent.ACTION_SCREEN_OFF" 브로드캐스트가 수신됐을때
(즉, 화면이 꺼졌을때) startActivity(new Intent(new, LockScreen.class)); 와 같은 형식으로 락스크린 액티비티를 호출해줬다.
그러면 화면이 꺼지고 안드로이드 순정 락스크린이 걸린 상태에서 그 위에 LockScreen.java 액티비티가 호출되어 있을 것이다.
이상태에서 다시 홀드키를 눌러 화면을 켜게되면 원래는 순정 락스크린이 떠 있어야 하지만, onCreate에서 추가해준 플래그에 의해
순정 락스크린이 떠있는 상태에서 그 위에 LockScreen.java 액티비티가 떠있게 되므로, 사용자 입장에서는
그것이 락스크린이 된다. 거기서 락을 해제할수있는 버튼을 하나 만들어서 그 버튼을 눌렀을때
LockScreen.java 액티비티는 onPause쯤에서 finish() 호출해서 액티비티를 종료 시키고,
아래 코드를 추가하면,
KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock keyLock = km.newKeyguardLock(KEYGUARD_SERVICE);
keyLock.disableKeyguard(); //순정 락스크린 해제
이렇게 해주면 순정 LockScreen이 종료 되면서 순정 락스크린도 함께 해제되어
모르는사람은 그게 진짜 락스크린처럼 보일 것이다..
위에서 사용한 코드(KeyguardManager를 사용하려면 AndroidManifest.xml에서 퍼미션을 추가해줘야 사용 가능하다.
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
반대로 락을 다시 걸어주는 방법은
keyLock.reenableKeyguard();를 호출해주면 순정락화면으로 잠긴다.
이때도 마찬가지, reenableKeyguard를 호출해 순정락화면으로 잠궈버리고,
다시 startActivity로 LockScreen.java액티비티를 호출하면 자연스럽게
onCreate에서 추가해준 플래그에 의해 락스크린위에 LockScreen.java 액티비티가 위로 올라가기 때문에
락스크린으로써의 기능(?)을 다 할수가 있다.
좀더 유연하게 쓰려면 여러가지 살을 좀 붙여야겠지만. 이정도만해도 충분히 락스크린을 만들 수 있다.
어떤 블로그나 자료를 보면 onCreate에서 추가한 플래그들이 락스크린을 해제 해주는 코드라고 하는데..
정확하게 말해서 락스크린을 해제 해주게 아니라, 락스크린이 안풀린 상태에서 그 위에 또다른 액티비티가 올라가기 때문에
락이 해제된 것 처럼 보일 뿐이다.
-혼자 공부하려고 쓴 포스트이니... 태클은 정중히 사양하겠습니다...
출처 : http://blog.naver.com/PostView.nhn?blogId=multikth&logNo=150109761153
[출처] 안드로이드 - LockScreen 만들기|작성자 FC포르테
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[Android] ADB 이용해서 패킷 덤프 뜨는 방법 [스크랩 자료] (0) | 2012.02.01 |
---|---|
[안드로이드 배경에 패턴 적용하기] 스크랩 자료 (0) | 2012.01.06 |
[안드로이드 전화번호부 저장화면 Call] 스크랩 자료 연락처 추가 화면 호출하기 (0) | 2012.01.02 |
[안드로이드 서비스] 스크랩자료 - 안드로이드 서비스에 대한 좋은 정리 자료 (0) | 2011.12.27 |
[안드로이드 Application 클래스] 스크랩 자료 (1) | 2011.12.27 |
[안드로이드 ContentObserver] 스크랩 자료 (0) | 2011.12.27 |
[안드로이드 팁] 안드로이드 SeekBar 이미지 꾸미기 (0) | 2011.12.19 |
[안드로이드] 안드로이드 앱에 애드몹(Admob) 광고 달기 [펌 자료] (0) | 2011.10.24 |
[안드로이드 팁] Bitmap 이미지를 메모리에 올리지 않고 크기가지고 오기. (0) | 2011.09.30 |