| /* |
| * Copyright (C) 2019 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.android.quickstep; |
| |
| import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY; |
| |
| import android.annotation.TargetApi; |
| import android.app.Service; |
| import android.content.Intent; |
| import android.graphics.Region; |
| import android.os.Build; |
| import android.os.Bundle; |
| import android.os.IBinder; |
| import android.os.RemoteException; |
| import android.util.Log; |
| import android.view.MotionEvent; |
| |
| import com.android.systemui.shared.recents.IOverviewProxy; |
| import com.android.systemui.shared.recents.ISystemUiProxy; |
| |
| /** |
| * Service connected by system-UI for handling touch interaction. |
| */ |
| @TargetApi(Build.VERSION_CODES.O) |
| public class TouchInteractionService extends Service { |
| |
| private static final String TAG = "TouchInteractionService"; |
| |
| private final IBinder mMyBinder = new IOverviewProxy.Stub() { |
| |
| @Override |
| public void onActiveNavBarRegionChanges(Region region) throws RemoteException { } |
| |
| @Override |
| public void onInitialize(Bundle bundle) throws RemoteException { |
| ISystemUiProxy iSystemUiProxy = ISystemUiProxy.Stub |
| .asInterface(bundle.getBinder(KEY_EXTRA_SYSUI_PROXY)); |
| mRecentsModel.setSystemUiProxy(iSystemUiProxy); |
| } |
| |
| @Override |
| public void onOverviewToggle() { |
| mOverviewCommandHelper.onOverviewToggle(); |
| } |
| |
| @Override |
| public void onOverviewShown(boolean triggeredFromAltTab) { |
| mOverviewCommandHelper.onOverviewShown(triggeredFromAltTab); |
| } |
| |
| @Override |
| public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { |
| if (triggeredFromAltTab && !triggeredFromHomeKey) { |
| // onOverviewShownFromAltTab hides the overview and ends at the target app |
| mOverviewCommandHelper.onOverviewHidden(); |
| } |
| } |
| |
| @Override |
| public void onTip(int actionType, int viewType) { |
| mOverviewCommandHelper.onTip(actionType, viewType); |
| } |
| |
| @Override |
| public void onAssistantAvailable(boolean available) { |
| // TODO handle assistant |
| } |
| |
| @Override |
| public void onAssistantVisibilityChanged(float visibility) { |
| // TODO handle assistant |
| } |
| |
| public void onBackAction(boolean completed, int downX, int downY, boolean isButton, |
| boolean gestureSwipeLeft) { |
| } |
| |
| public void onSystemUiStateChanged(int stateFlags) { |
| // To be implemented |
| } |
| |
| /** Deprecated methods **/ |
| public void onQuickStep(MotionEvent motionEvent) { } |
| |
| public void onQuickScrubEnd() { } |
| |
| public void onQuickScrubProgress(float progress) { } |
| |
| public void onQuickScrubStart() { } |
| |
| public void onPreMotionEvent(int downHitTarget) { } |
| |
| public void onMotionEvent(MotionEvent ev) { } |
| |
| public void onBind(ISystemUiProxy iSystemUiProxy) { |
| mRecentsModel.setSystemUiProxy(iSystemUiProxy); |
| } |
| }; |
| |
| private static boolean sConnected = false;; |
| |
| public static boolean isConnected() { |
| return sConnected; |
| } |
| |
| private RecentsModel mRecentsModel; |
| private OverviewComponentObserver mOverviewComponentObserver; |
| private OverviewCommandHelper mOverviewCommandHelper; |
| |
| @Override |
| public void onCreate() { |
| super.onCreate(); |
| mRecentsModel = RecentsModel.INSTANCE.get(this); |
| mOverviewComponentObserver = new OverviewComponentObserver(this); |
| mOverviewCommandHelper = new OverviewCommandHelper(this, |
| mOverviewComponentObserver); |
| |
| sConnected = true; |
| } |
| |
| @Override |
| public void onDestroy() { |
| mOverviewComponentObserver.onDestroy(); |
| sConnected = false; |
| super.onDestroy(); |
| } |
| |
| @Override |
| public IBinder onBind(Intent intent) { |
| if (Log.isLoggable(TAG, Log.DEBUG)) { |
| Log.d(TAG, "Touch service connected"); |
| } |
| return mMyBinder; |
| } |
| } |