|  | /* | 
|  | * Copyright (C) 2018 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 android.debug; | 
|  |  | 
|  | import android.annotation.RequiresPermission; | 
|  | import android.annotation.SystemApi; | 
|  | import android.annotation.SystemService; | 
|  | import android.content.Context; | 
|  | import android.os.RemoteException; | 
|  |  | 
|  | /** | 
|  | * This class allows the control of ADB-related functions. | 
|  | * @hide | 
|  | */ | 
|  | @SystemApi | 
|  | @SystemService(Context.ADB_SERVICE) | 
|  | public class AdbManager { | 
|  | private static final String TAG = "AdbManager"; | 
|  |  | 
|  | /** | 
|  | * Action indicating the state change of wireless debugging. Can be either | 
|  | *   STATUS_CONNECTED | 
|  | *   STATUS_DISCONNECTED | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final String WIRELESS_DEBUG_STATE_CHANGED_ACTION = | 
|  | "com.android.server.adb.WIRELESS_DEBUG_STATUS"; | 
|  |  | 
|  | /** | 
|  | * Contains the list of paired devices. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final String WIRELESS_DEBUG_PAIRED_DEVICES_ACTION = | 
|  | "com.android.server.adb.WIRELESS_DEBUG_PAIRED_DEVICES"; | 
|  |  | 
|  | /** | 
|  | * Action indicating the status of a pairing. Can be either | 
|  | *   WIRELESS_STATUS_FAIL | 
|  | *   WIRELESS_STATUS_SUCCESS | 
|  | *   WIRELESS_STATUS_CANCELLED | 
|  | *   WIRELESS_STATUS_PAIRING_CODE | 
|  | *   WIRELESS_STATUS_CONNECTED | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final String WIRELESS_DEBUG_PAIRING_RESULT_ACTION = | 
|  | "com.android.server.adb.WIRELESS_DEBUG_PAIRING_RESULT"; | 
|  |  | 
|  | /** | 
|  | * Extra containing the PairDevice map of paired/pairing devices. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final String WIRELESS_DEVICES_EXTRA = "devices_map"; | 
|  |  | 
|  | /** | 
|  | * The status of the pairing/unpairing. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final String WIRELESS_STATUS_EXTRA = "status"; | 
|  |  | 
|  | /** | 
|  | * The PairDevice. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final String WIRELESS_PAIR_DEVICE_EXTRA = "pair_device"; | 
|  |  | 
|  | /** | 
|  | * The six-digit pairing code. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final String WIRELESS_PAIRING_CODE_EXTRA = "pairing_code"; | 
|  |  | 
|  | /** | 
|  | * The adb connection/pairing port that was opened. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final String WIRELESS_DEBUG_PORT_EXTRA = "adb_port"; | 
|  |  | 
|  | /** | 
|  | * Status indicating the pairing/unpairing failed. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final int WIRELESS_STATUS_FAIL = 0; | 
|  |  | 
|  | /** | 
|  | * Status indicating the pairing/unpairing succeeded. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final int WIRELESS_STATUS_SUCCESS = 1; | 
|  |  | 
|  | /** | 
|  | * Status indicating the pairing/unpairing was cancelled. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final int WIRELESS_STATUS_CANCELLED = 2; | 
|  |  | 
|  | /** | 
|  | * Status indicating the pairing code for pairing. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final int WIRELESS_STATUS_PAIRING_CODE = 3; | 
|  |  | 
|  | /** | 
|  | * Status indicating wireless debugging is connected. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final int WIRELESS_STATUS_CONNECTED = 4; | 
|  |  | 
|  | /** | 
|  | * Status indicating wireless debugging is disconnected. | 
|  | * | 
|  | * @hide | 
|  | */ | 
|  | public static final int WIRELESS_STATUS_DISCONNECTED = 5; | 
|  |  | 
|  | private final Context mContext; | 
|  | private final IAdbManager mService; | 
|  |  | 
|  | /** | 
|  | * {@hide} | 
|  | */ | 
|  | public AdbManager(Context context, IAdbManager service) { | 
|  | mContext = context; | 
|  | mService = service; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * @return true if the device supports secure ADB over Wi-Fi. | 
|  | * @hide | 
|  | */ | 
|  | @SystemApi | 
|  | @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) | 
|  | public boolean isAdbWifiSupported() { | 
|  | try { | 
|  | return mService.isAdbWifiSupported(); | 
|  | } catch (RemoteException e) { | 
|  | throw e.rethrowFromSystemServer(); | 
|  | } | 
|  | } | 
|  |  | 
|  | /** | 
|  | * @return true if the device supports secure ADB over Wi-Fi and device pairing by | 
|  | * QR code. | 
|  | * @hide | 
|  | */ | 
|  | @SystemApi | 
|  | @RequiresPermission(android.Manifest.permission.MANAGE_DEBUGGING) | 
|  | public boolean isAdbWifiQrSupported() { | 
|  | try { | 
|  | return mService.isAdbWifiQrSupported(); | 
|  | } catch (RemoteException e) { | 
|  | throw e.rethrowFromSystemServer(); | 
|  | } | 
|  | } | 
|  | } |