Android 는 페이지 전환 이 있 는 잠 금 화면 기능 을 구현 합 니 다.
나의 효과 도
코드 사고
잠 금 화면 은 두 조각 으로 나 뉘 는데 하 나 는 UI(사용자 정의 레이아웃)이 고 다른 하 나 는 서비스 입 니 다.
사용자 정의 잠 금 화면 레이아웃
ACTION_DOWN 누 르 기:가운데 ImageView 는 다른 형태 로 변 합 니 다.
ACTION_MOVE 이동:왼쪽/오른쪽으로 이동,왼쪽/오른쪽 ImageView 형태 도 변화,
ACTION_UP 들 어 올 리 기:왼쪽/오른쪽 쪽으로 미 끄 러 지 거나 최초의 위치 로 돌아 갈 것 을 판단 합 니 다.
*서비스
@Override
public void onCreate() {
super.onCreate();
mContext = getApplicationContext();
//
mWinMng = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
i = new Intent(mContext, MyService.class);
i.setAction(MyService.LOCK_ACTION);
zdLockIntent = new Intent(MyService.this , MyService.class);
// , Activity
zdLockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
/* */
IntentFilter mScreenOnFilter = new IntentFilter("android.intent.action.SCREEN_ON");
MyService.this.registerReceiver(mScreenOnReceiver, mScreenOnFilter);
/* */
IntentFilter mScreenOffFilter = new IntentFilter("android.intent.action.SCREEN_OFF");
MyService.this.registerReceiver(mScreenOffReceiver, mScreenOffFilter);
}
이 View 는 이전에 사용자 정의 한 View 입 니 다.핵심 코드 만 말씀 드 리 겠 습 니 다.잠시 후에 Demo 에 올 리 겠 습 니 다.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(intent!=null){
String action = intent.getAction();
if(TextUtils.equals(action, LOCK_ACTION))
// view
addView();
else if(TextUtils.equals(action, UNLOCK_ACTION))
{ // view
removeView();
}
}
return Service.START_STICKY;
}
프로그램 이 삭 제 될 때 서 비 스 는 다시 시작 해 야 합 니 다.그렇지 않 으 면 이 app 의 잠 금 화면 은 app 이 삭 제 됨 에 따라 삭 제 됩 니 다.
@Override
public void onDestroy(){
super.onDestroy();
MyService.this.unregisterReceiver(mScreenOnReceiver);
MyService.this.unregisterReceiver(mScreenOffReceiver);
//
startService(new Intent(MyService.this, MyService.class));
}
화면 변수 나 어 두 워 질 때 화면 잠 금 을 해제 하 는 방법 은 해제 되 지 않 으 면 계속 잠 겨 있 을 수 밖 에 없습니다.
// ,
private BroadcastReceiver mScreenOnReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context , Intent intent) {
Log.i(TAG, intent.getAction());
if(intent.getAction().equals("android.intent.action.SCREEN_ON")){
//
mKeyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
mKeyguardLock = mKeyguardManager.newKeyguardLock("zdLock 1");
mKeyguardLock.disableKeyguard();
startService(i);
}
}
};
// / , KeyguardManager
private BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context , Intent intent) {
String action = intent.getAction() ;
Log.i(TAG, intent.toString());
if(action.equals("android.intent.action.SCREEN_OFF")
|| action.equals("android.intent.action.SCREEN_ON") ){
mKeyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
mKeyguardLock = mKeyguardManager.newKeyguardLock("zdLock 1");
mKeyguardLock.disableKeyguard();
startService(i);
}
}
};
권한 문제
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /><!-- HOME -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
이 잠 금 화면 데모 와 관련 된 것 이 좀 많 습 니 다.제 가 쓴 이 블 로 그 는 중점 을 잡지 못 하고 번 거 롭 게 쓰 는 것 이 오히려 여러분 의 시간 을 낭비 합 니 다.아무 말 도 하지 않 고 코드 에서↓원본 주소:자물쇠 스크린
보충 점
샤 오미 핸드폰 을 테스트 기로 사용 하려 면 반드시 이 데모 잠 금 화면 권한 을 켜 야 한다.핸드폰 설정 에서 app 을 찾 아 잠 금 화면 을 켜 야 한다.그렇지 않 으 면 실행 하 자마자 무너진다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.