/* * Copyright (C) 2013 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.print; import android.content.ComponentName; import android.graphics.drawable.Icon; import android.os.Bundle; import android.print.IPrinterDiscoveryObserver; import android.print.IPrintDocumentAdapter; import android.print.PrintJobId; import android.print.IPrintJobStateChangeListener; import android.print.IPrintServicesChangeListener; import android.printservice.recommendation.IRecommendationsChangeListener; import android.print.PrinterId; import android.print.PrintJobInfo; import android.print.PrintAttributes; import android.printservice.recommendation.RecommendationInfo; import android.printservice.PrintServiceInfo; /** * Interface for communication with the core print manager service. * * @hide */ interface IPrintManager { List getPrintJobInfos(int appId, int userId); PrintJobInfo getPrintJobInfo(in PrintJobId printJobId, int appId, int userId); Bundle print(String printJobName, in IPrintDocumentAdapter printAdapter, in PrintAttributes attributes, String packageName, int appId, int userId); void cancelPrintJob(in PrintJobId printJobId, int appId, int userId); void restartPrintJob(in PrintJobId printJobId, int appId, int userId); void addPrintJobStateChangeListener(in IPrintJobStateChangeListener listener, int appId, int userId); void removePrintJobStateChangeListener(in IPrintJobStateChangeListener listener, int userId); /** * Listen for changes to the installed and enabled print services. * * @param listener the listener to add * @param userId the id of the user listening * * @see android.print.PrintManager#getPrintServices(int, String) */ void addPrintServicesChangeListener(in IPrintServicesChangeListener listener, int userId); /** * Stop listening for changes to the installed and enabled print services. * * @param listener the listener to remove * @param userId the id of the user requesting the removal * * @see android.print.PrintManager#getPrintServices(int, String) */ void removePrintServicesChangeListener(in IPrintServicesChangeListener listener, int userId); /** * Get the print services. * * @param selectionFlags flags selecting which services to get * @param userId the id of the user requesting the services * * @return the list of selected print services. */ List getPrintServices(int selectionFlags, int userId); /** * Enable or disable a print service. * * @param service The service to enabled or disable * @param isEnabled whether the service should be enabled or disabled * @param userId the id of the user requesting the services */ void setPrintServiceEnabled(in ComponentName service, boolean isEnabled, int userId); /** * Checks whether the given print service is enabled. * * @param service the service to check * @param userId the id of the user requesting the check * @return whether the given print service is enabled */ boolean isPrintServiceEnabled(in ComponentName service, int userId); /** * Listen for changes to the print service recommendations. * * @param listener the listener to add * @param userId the id of the user listening * * @see android.print.PrintManager#getPrintServiceRecommendations */ void addPrintServiceRecommendationsChangeListener(in IRecommendationsChangeListener listener, int userId); /** * Stop listening for changes to the print service recommendations. * * @param listener the listener to remove * @param userId the id of the user requesting the removal * * @see android.print.PrintManager#getPrintServiceRecommendations */ void removePrintServiceRecommendationsChangeListener(in IRecommendationsChangeListener listener, int userId); /** * Get the print service recommendations. * * @param userId the id of the user requesting the recommendations * * @return the list of selected print services. */ List getPrintServiceRecommendations(int userId); void createPrinterDiscoverySession(in IPrinterDiscoveryObserver observer, int userId); void startPrinterDiscovery(in IPrinterDiscoveryObserver observer, in List priorityList, int userId); void stopPrinterDiscovery(in IPrinterDiscoveryObserver observer, int userId); void validatePrinters(in List printerIds, int userId); void startPrinterStateTracking(in PrinterId printerId, int userId); /** * Get the custom icon for a printer. If the icon is not cached, the icon is * requested asynchronously. Once it is available the printer is updated. * * @param printerId the id of the printer the icon should be loaded for * @param userId the id of the user requesting the printer * @return the custom icon to be used for the printer or null if the icon is * not yet available * @see android.print.PrinterInfo.Builder#setHasCustomPrinterIcon() */ Icon getCustomPrinterIcon(in PrinterId printerId, int userId); void stopPrinterStateTracking(in PrinterId printerId, int userId); void destroyPrinterDiscoverySession(in IPrinterDiscoveryObserver observer, int userId); /** * Check if the system will bind to print services in intant app. * * @param userId the Id of the user the behavior should be checked for * * @return {@code true} iff the system will bind to print services in instant apps. */ boolean getBindInstantServiceAllowed(int userId); /** * Set if the system will bind to print services in intant app. * * @param userId the Id of the user the behavior should be changed for * @param allows iff {@code true} the system will bind to print services in instant apps */ void setBindInstantServiceAllowed(int userId, boolean allowed); }