public abstract class PrinterDiscoverySession
extends Object
java.lang.Object | |
↳ | android.printservice.PrinterDiscoverySession |
此类在打印机发现期间封装打印服务和系统之间的交互。 在发现打印机期间,您负责添加发现的打印机,删除先前添加的消失的打印机,并更新已添加的打印机。
在本次会话的整个生命周期中,您可能会被要求多次启动和停止执行打印机发现。 您将收到一个致电onStartPrinterDiscovery(List)
的电话以启动打印机发现,并致电onStopPrinterDiscovery()
停止打印机发现。 当系统不再对通过此会话发现的打印机感兴趣时,您将收到对onDestroy()
的呼叫,此时系统将不再呼叫进入会话,并且所有会话方法都不会执行任何操作。
发现的打印机通过调用addPrinters(List)
添加。 通过调用removePrinters(List)
删除添加的消失的打印机。 通过致电addPrinters(List)
更新添加了其属性或功能已更改的打印机。 在此会话中添加的打印机可以通过getPrinters()
获取,其中返回的打印机将是会话期间报告的打印机的最新快照。 打印机不会在会话中持续存在。
如果您需要更新某些打印机,系统将拨打onValidatePrinters(List)
。 您可能添加了打印机而未指定其功能。 这使您可以避免查询所有发现的打印机的功能,而只在必要时查询打印机的功能。 例如,如果用户选择了打印机,系统会要求您更新打印机。 验证打印机时,您不需要提供打印机的功能,但可以这样做。
如果系统有兴趣不断更新打印机的状态,您将收到onStartPrinterStateTracking(PrinterId)
的电话,之后您必须尽最大努力保持系统更新,以便更改打印机状态和功能。 如果在添加打印机时没有提供打印机功能,您也必须更新打印机功能,否则打印机将被忽略。 当系统不再有兴趣获取打印机的更新时,您将收到对onStopPrinterStateTracking(PrinterId)
的呼叫。
注意:此类中的所有回调都在主应用程序线程上执行。 您还必须在主应用程序线程上调用此类的任何方法。
Public constructors |
|
---|---|
PrinterDiscoverySession() 构造函数。 |
Public methods |
|
---|---|
final void |
addPrinters(List<PrinterInfo> printers) 添加发现的打印机。 |
final List<PrinterInfo> |
getPrinters() 获取本次会话中报告的打印机。 |
final List<PrinterId> |
getTrackedPrinters() 获取应该跟踪的打印机。 |
final boolean |
isDestroyed() 获取会话是否被销毁。 |
final boolean |
isPrinterDiscoveryStarted() 获取打印机发现是否已启动。 |
abstract void |
onDestroy() 通知您会话被销毁。 |
void |
onRequestCustomPrinterIcon(PrinterId printerId, CancellationSignal cancellationSignal, CustomPrinterIconCallback callback) 由系统调用以请求打印机的自定义图标。 |
abstract void |
onStartPrinterDiscovery(List<PrinterId> priorityList) 回调要求您启动打印机发现。 |
abstract void |
onStartPrinterStateTracking(PrinterId printerId) 回调让您开始跟踪打印机的状态。 |
abstract void |
onStopPrinterDiscovery() 回调通知您应停止打印机发现。 |
abstract void |
onStopPrinterStateTracking(PrinterId printerId) 回调要求您停止跟踪打印机的状态。 |
abstract void |
onValidatePrinters(List<PrinterId> printerIds) 回调要求您验证给定的打印机是否有效,即它们是否存在。 |
final void |
removePrinters(List<PrinterId> printerIds) 删除添加的打印机。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
void addPrinters (List<PrinterInfo> printers)
添加发现的打印机。 添加已添加的打印机会更新它。 删除的打印机可以再次添加。 您可以在本次会议期间多次调用此方法。 重复将被忽略。
注意:会话销毁后调用此方法,即 onDestroy()
回调之后,将被忽略。
Parameters | |
---|---|
printers |
List : The printers to add. |
List<PrinterInfo> getPrinters ()
获取本次会话中报告的打印机。 例如,如果您添加两台打印机并删除其中一台,则返回的列表将只包含已添加但未删除的打印机。
注意:会话销毁后调用此方法,即 onDestroy()
回调后,将被忽略。
Returns | |
---|---|
List<PrinterInfo> |
The printers. |
List<PrinterId> getTrackedPrinters ()
获取应该跟踪的打印机。 这些是对用户很重要的打印机,并且您收到了致电onStartPrinterStateTracking(PrinterId)
要求您观察其状态并通过addPrinters(List)
将其报告给系统。 如果您应该停止跟踪打印机,您将收到致电onStopPrinterStateTracking(PrinterId)
的电话。
注意:会话销毁后调用此方法,即 onDestroy()
回调后,将被忽略。
Returns | |
---|---|
List<PrinterId> |
The printers. |
boolean isDestroyed ()
获取会话是否被销毁。
Returns | |
---|---|
boolean |
Whether the session is destroyed. |
也可以看看:
boolean isPrinterDiscoveryStarted ()
获取打印机发现是否已启动。
Returns | |
---|---|
boolean |
Whether printer discovery is destroyed. |
void onDestroy ()
通知您会话被销毁。 调用此回调之后,将忽略对此类的方法的任何调用, isDestroyed()
将返回true,并且您将不再接收回调。
也可以看看:
void onRequestCustomPrinterIcon (PrinterId printerId, CancellationSignal cancellationSignal, CustomPrinterIconCallback callback)
由系统调用以请求打印机的自定义图标。 一旦图标可用,打印服务使用onCustomPrinterIconLoaded(Icon)
将图标发送到系统。
Parameters | |
---|---|
printerId |
PrinterId : The printer to icon belongs to. |
cancellationSignal |
CancellationSignal : Signal used to cancel the request. |
callback |
CustomPrinterIconCallback : Callback for returning the icon to the system. |
void onStartPrinterDiscovery (List<PrinterId> priorityList)
回调要求您启动打印机发现。 发现的打印机应通过呼叫addPrinters(List)
添加。 添加的消失的打印机应通过调用removePrinters(List)
删除。 添加的打印机的属性或功能更改应通过调用addPrinters(List)
进行更新。 当您应该停止打印机发现时,您将收到致电onStopPrinterDiscovery()
的电话。
在此会话的生命周期中,必须添加打印服务已知的所有打印机。 系统不会在会话中保留任何打印机。 但是,如果要求您在此会话中启动并停止执行打印机发现,则后续发现不应该重新发现已发现的打印机。 您可以通过致电getPrinters()
获取本次会议期间报告的打印机。
注意:您还可以获得首先检查可用性的打印机列表。 例如,这些打印机可能是用户最喜欢的打印机,因此必须先进行验证。 您不需要提供打印机的功能,而是验证它们是否与onValidatePrinters(List)
类似。
Parameters | |
---|---|
priorityList |
List : The list of printers to validate first. Never null. |
void onStartPrinterStateTracking (PrinterId printerId)
回调让您开始跟踪打印机的状态。 跟踪状态意味着您应该尽最大努力观察打印机的状态,并通过呼叫addPrinters(List)
通知系统该状态是否改变。
注意:打印机最初可能没有其功能添加,以避免轮询打印机,用户不会选择。 但是,这种方法被调用后,你预计将更新包括其功能的打印机。 否则,打印机将被忽略。
可能会要求您跟踪打印机状态的情况是,用户是否选择了该打印机,并且系统必须根据打印机的功能提供打印选项UI。 在这种情况下,应该及时通知用户,例如打印机是否变得不可用。
Parameters | |
---|---|
printerId |
PrinterId : The printer to start tracking. |
void onStopPrinterStateTracking (PrinterId printerId)
回调要求您停止跟踪打印机的状态。 传入的打印机ID是您接到onStartPrinterStateTracking(PrinterId)
的电话。
Parameters | |
---|---|
printerId |
PrinterId : The printer to stop tracking. |
void onValidatePrinters (List<PrinterId> printerIds)
回调要求您验证给定的打印机是否有效,即它们是否存在。 您有责任检查这些打印机是否存在,以及是否存在通过调用addPrinters(List)
通知系统的addPrinters(List)
。
Note: You are not required to provide the printer capabilities when updating the printers that do exist.
Parameters | |
---|---|
printerIds |
List : The printers to validate. |
void removePrinters (List<PrinterId> printerIds)
删除添加的打印机。 删除已删除或从未添加的打印机不起作用。 删除的打印机可以再次添加。 您可以在此会话的有效期内多次调用此方法。
注意:会话销毁后调用此方法,即在 onDestroy()
回调之后,将被忽略。
Parameters | |
---|---|
printerIds |
List : The ids of the removed printers. |