/* * Copyright (C) 2016 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.car; import android.bluetooth.BluetoothDevice; import android.car.projection.ProjectionStatus; import android.car.ICarProjectionKeyEventHandler; import android.car.ICarProjectionStatusListener; import android.content.Intent; import android.os.Bundle; import android.os.Messenger; /** * Binder interface for {@link android.car.CarProjectionManager}. * Check {@link android.car.CarProjectionManager} APIs for expected behavior of each calls. * * @hide */ interface ICarProjection { /** * Registers projection runner on projection start with projection service * to create reverse binding. */ void registerProjectionRunner(in Intent serviceIntent) = 0; /** * Unregisters projection runner on projection stop with projection service to create * reverse binding. */ void unregisterProjectionRunner(in Intent serviceIntent) = 1; /** * Registers projection key event handler. * Re-registering same event handler with different events will cause only events to update. */ void registerKeyEventHandler( in ICarProjectionKeyEventHandler eventHandler, in byte[] eventMask) = 2; /** * Unregisters projection key event handler. */ void unregisterKeyEventHandler(in ICarProjectionKeyEventHandler eventHandler) = 3; /** * Starts Wi-Fi access point if it hasn't been started yet for wireless projection and returns * WiFiConfiguration object with access point details. */ void startProjectionAccessPoint(in Messenger messenger, in IBinder binder) = 4; /** * Stops previously requested Wi-Fi access point. */ void stopProjectionAccessPoint(in IBinder binder) = 5; /** Disconnect a Bluetooth profile, and prevent it from reconnecting. */ boolean requestBluetoothProfileInhibit( in BluetoothDevice device, in int profile, in IBinder token) = 6; /** Undo the effects of requestBluetoothProfileInhibit. */ boolean releaseBluetoothProfileInhibit( in BluetoothDevice device, in int profile, in IBinder token) = 7; /** Reports projection status for a given projection receiver app. */ void updateProjectionStatus(in ProjectionStatus status, in IBinder token) = 8; /** Registers projection status listener */ void registerProjectionStatusListener(in ICarProjectionStatusListener listener) = 9; /** Unregister projection status listener */ void unregisterProjectionStatusListener(in ICarProjectionStatusListener listener) = 10; /** * Returns options for projection receiver app that can be un-packed using * {@link android.car.projection.ProjectionOptions} class. */ Bundle getProjectionOptions() = 11; /** Returns a list of available Wi-Fi channels */ int[] getAvailableWifiChannels(int band) = 12; }