OSDN Git Service

ff494b76cb44f067a512ca74fb727518f84f7332
[android-x86/packages-apps-Taskbar.git] / app / src / main / java / com / farmerbb / taskbar / activity / TouchAbsorberActivity.java
1 /* Copyright 2018 Braden Farmer
2  *
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15
16 package com.farmerbb.taskbar.activity;
17
18 import android.accessibilityservice.AccessibilityService;
19 import android.annotation.SuppressLint;
20 import android.app.Activity;
21 import android.content.BroadcastReceiver;
22 import android.content.Context;
23 import android.content.Intent;
24 import android.content.IntentFilter;
25 import android.os.Bundle;
26 import android.os.Handler;
27 import android.support.v4.content.LocalBroadcastManager;
28 import android.widget.FrameLayout;
29 import android.widget.LinearLayout;
30
31 import com.farmerbb.taskbar.R;
32 import com.farmerbb.taskbar.util.DisplayInfo;
33 import com.farmerbb.taskbar.util.FreeformHackHelper;
34 import com.farmerbb.taskbar.util.U;
35
36 public class TouchAbsorberActivity extends Activity {
37
38     private static long lastStartTime = 0;
39
40     private BroadcastReceiver finishReceiver = new BroadcastReceiver() {
41         @Override
42         public void onReceive(Context context, Intent intent) {
43             finish();
44         }
45     };
46
47     @SuppressLint("HardwareIds")
48     @SuppressWarnings("deprecation")
49     @Override
50     protected void onCreate(Bundle savedInstanceState) {
51         super.onCreate(savedInstanceState);
52         setContentView(R.layout.incognito);
53
54         DisplayInfo display = U.getDisplayInfo(this);
55         LinearLayout layout = U.findViewById(this, R.id.incognitoLayout);
56         layout.setLayoutParams(new FrameLayout.LayoutParams(display.width, display.height));
57
58         LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
59         lbm.registerReceiver(finishReceiver, new IntentFilter("com.farmerbb.taskbar.FINISH_FREEFORM_ACTIVITY"));
60
61         FreeformHackHelper.getInstance().setTouchAbsorberActive(true);
62         lbm.sendBroadcast(new Intent("com.farmerbb.taskbar.TOUCH_ABSORBER_STATE_CHANGED"));
63
64         lastStartTime = System.currentTimeMillis();
65     }
66
67     @Override
68     protected void onStop() {
69         super.onStop();
70         finish();
71     }
72
73     @Override
74     protected void onDestroy() {
75         LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
76         lbm.unregisterReceiver(finishReceiver);
77
78         FreeformHackHelper.getInstance().setTouchAbsorberActive(false);
79         lbm.sendBroadcast(new Intent("com.farmerbb.taskbar.TOUCH_ABSORBER_STATE_CHANGED"));
80
81         super.onDestroy();
82     }
83
84     @Override
85     public void onBackPressed() {
86         if(!U.isAccessibilityServiceEnabled(this) || lastStartTime > System.currentTimeMillis() - 250)
87             return;
88
89         super.onBackPressed();
90
91         new Handler().postDelayed(() -> {
92             U.sendAccessibilityAction(this, AccessibilityService.GLOBAL_ACTION_BACK);
93
94             new Handler().postDelayed(() -> U.startTouchAbsorberActivity(this), 100);
95         }, 100);
96     }
97 }