| java.lang.Object | |
| ↳ | android.print.PrintDocumentAdapter | 
Base class that provides the content of a document to be printed.
          
           onStart()
          
         
         . This callback
 can be used to allocate resources.
        
          
           onLayout(PrintAttributes, PrintAttributes, CancellationSignal, LayoutResultCallback, Bundle)
          
         
         to
 inform you that the print attributes (page size, density, etc) changed
 giving you an opportunity to layout the content to match the new constraints.
        
          
           onLayout(PrintAttributes, PrintAttributes, CancellationSignal, LayoutResultCallback, Bundle)
          
         
         , you
         
          may
         
         get
 a call to
         
          
           onWrite(PageRange[], ParcelFileDescriptor, CancellationSignal, WriteResultCallback)
          
         
         asking you to write a PDF file with the content for
 specific pages.
        
          
           onFinish()
          
         
         . You can use this
 callback to release resources allocated in
         
          
           onStart()
          
         
         .
        
       The
       
        
         onStart()
        
       
       callback is always the first call you will receive and
 is useful for doing one time setup or resource allocation before printing. You
 will not receive a subsequent call here.
      
       The
       
        
         onLayout(PrintAttributes, PrintAttributes, CancellationSignal, LayoutResultCallback, Bundle)
        
       
       callback requires that you layout the content
 based on the current
       
        
         PrintAttributes
        
       
       . The execution of this method is
 not considered completed until you invoke one of the methods on the passed in
 callback instance. Hence, you will not receive a subsequent call to any other
 method of this class until the execution of this method is complete by invoking
 one of the callback methods.
      
       The
       
        
         onWrite(PageRange[], ParcelFileDescriptor, CancellationSignal, WriteResultCallback)
        
       
       requires that you render and write the content of some
 pages to the provided destination. The execution of this method is not
 considered complete until you invoke one of the methods on the passed in
 callback instance. Hence, you will not receive a subsequent call to any other
 method of this class until the execution of this method is complete by invoking
 one of the callback methods. You will never receive a sequence of one or more
 calls to this method without a previous call to
       
        
         onLayout(PrintAttributes, PrintAttributes, CancellationSignal, LayoutResultCallback, Bundle)
        
       
       .
      
       The
       
        
         onFinish()
        
       
       callback is always the last call you will receive and
 is useful for doing one time cleanup or resource deallocation after printing.
 You will not receive a subsequent call here.
      
The APIs defined in this class are designed to enable doing part or all of the work on an arbitrary thread. For example, if the printed content does not depend on the UI state, i.e. on what is shown on the screen, then you can offload the entire work on a dedicated thread, thus making your application interactive while the print work is being performed. Note that while your activity is covered by the system print UI and a user cannot interact with it, doing the printing work on the main application thread may affect the performance of your other application components as they are also executed on that thread.
       You can also do work on different threads, for example if you print UI
 content, you can handle
       
        
         onStart()
        
       
       and
       
        
         onLayout(PrintAttributes, PrintAttributes, CancellationSignal, LayoutResultCallback, Bundle)
        
       
       on
 the UI thread (assuming onStart initializes resources needed for layout).
 This will ensure that the UI does not change while you are laying out the
 printed content. Then you can handle
       
        
         onWrite(PageRange[], ParcelFileDescriptor, CancellationSignal, WriteResultCallback)
        
       
       and
       
        
         onFinish()
        
       
       on another
 thread. This will ensure that the main thread is busy for a minimal amount of
 time. Also this assumes that you will generate the printed content in
       
        
         onLayout(PrintAttributes, PrintAttributes, CancellationSignal, LayoutResultCallback, Bundle)
        
       
       which is not mandatory. If you use multiple
 threads, you are responsible for proper synchronization.
      
| Nested Classes | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
          | 
        PrintDocumentAdapter.LayoutResultCallback | 
         Base class for implementing a callback for the result of
         
          
           onLayout(PrintAttributes, PrintAttributes, CancellationSignal, LayoutResultCallback, Bundle)
          
         
         . 
         | 
       |||||||||
| 
          | 
        PrintDocumentAdapter.WriteResultCallback | 
         Base class for implementing a callback for the result of
         
          
           onWrite(PageRange[], ParcelFileDescriptor, CancellationSignal, WriteResultCallback)
          
         
         . 
         | 
       |||||||||
| Constants | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| String | EXTRA_PRINT_PREVIEW | 
          Extra: mapped to a boolean value that is
          
           true
          
          if
 the current layout is for a print preview,
          
           false
          
          otherwise.
          | 
        |||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
           | 
         
           | 
        ||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
           | 
         
           
           Called when printing finishes.
           
          | 
        ||||||||||
| 
           | 
         
           
           Called when the print attributes (page size, density, etc) changed
 giving you a chance to layout the content such that it matches the
 new constraints.
           
          | 
        ||||||||||
| 
           | 
         
           
           Called when printing starts.
           
          | 
        ||||||||||
| 
           | 
         
           
           Called when specific pages of the content should be written in the
 form of a PDF file to the given file descriptor.
           
          | 
        ||||||||||
| 
          
           [Expand]
          
           
           Inherited Methods
           
          | 
        |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
          
            
          
          From class
          
           java.lang.Object
          
           | 
        |||||||||||
         Extra: mapped to a boolean value that is
         
          true
         
         if
 the current layout is for a print preview,
         
          false
         
         otherwise.
 This extra is provided in the
         
          
           Bundle
          
         
         argument of the
         
          
           onLayout(PrintAttributes, PrintAttributes, CancellationSignal, LayoutResultCallback, Bundle)
          
         
         callback.
        
         Called when printing finishes. You can use this callback to release
 resources acquired in
         
          
           onStart()
          
         
         . This method is invoked on
 the main thread.
        
Called when the print attributes (page size, density, etc) changed giving you a chance to layout the content such that it matches the new constraints. This method is invoked on the main thread.
         After you are done laying out, you
         
          must
         
         invoke:
         
          
           onLayoutFinished(PrintDocumentInfo, boolean)
          
         
         with
 the last argument
         
          true
         
         or
         
          false
         
         depending on
 whether the layout changed the content or not, respectively; or
         
          
           onLayoutFailed(CharSequence)
          
         
         , if an error occurred;
 or
         
          
           onLayoutCancelled()
          
         
         if layout was
 cancelled in a response to a cancellation request via the passed in
         
          
           CancellationSignal
          
         
         . Note that you
         
          must
         
         call one of
 the methods of the given callback for this method to be considered complete
 which is you will not receive any calls to this adapter until the current
 layout operation is complete by invoking a method on the callback instance.
 The callback methods can be invoked from an arbitrary thread.
        
         One of the arguments passed to this method is a
         
          
           CancellationSignal
          
         
         which is used to propagate requests from the system to your application for
 canceling the current layout operation. For example, a cancellation may be
 requested if the user changes a print option that may affect layout while
 you are performing a layout operation. In such a case the system will make
 an attempt to cancel the current layout as another one will have to be performed.
 Typically, you should register a cancellation callback in the cancellation
 signal. The cancellation callback
         
          will not
         
         be made on the
 main thread and can be registered as follows:
        
         cancellationSignal.setOnCancelListener(new OnCancelListener() {
     @Override
     public void onCancel() {
         // Cancel layout
     }
 });
        
        
         
          Note:
         
         If the content is large and a layout will be
 performed, it is a good practice to schedule the work on a dedicated
 thread and register an observer in the provided
         
          
           CancellationSignal
          
         
         upon invocation of which you should stop the
 layout.
        
| oldAttributes | The old print attributes. | 
|---|---|
| newAttributes | The new print attributes. | 
| cancellationSignal | Signal for observing cancel layout requests. | 
| callback | Callback to inform the system for the layout result. | 
| extras | Additional information about how to layout the content. | 
Called when printing starts. You can use this callback to allocate resources. This method is invoked on the main thread.
Called when specific pages of the content should be written in the form of a PDF file to the given file descriptor. This method is invoked on the main thread.
         After you are done writing, you should close the file descriptor and
 invoke
         
          
           onWriteFinished(PageRange[])
          
         
         , if writing
 completed successfully; or
         
          
           onWriteFailed(CharSequence)
          
         
         , if an error occurred; or
         
          
           onWriteCancelled()
          
         
         ,
 if writing was cancelled in a response to a cancellation request via the passed
 in
         
          
           CancellationSignal
          
         
         . Note that you
         
          must
         
         call one of
 the methods of the given callback for this method to be considered complete which
 is you will not receive any calls to this adapter until the current write
 operation is complete by invoking a method on the callback instance. The callback
 methods can be invoked from an arbitrary thread.
        
         One of the arguments passed to this method is a
         
          
           CancellationSignal
          
         
         which is used to propagate requests from the system to your application for
 canceling the current write operation. For example, a cancellation may be
 requested if the user changes a print option that may affect layout while
 you are performing a write operation. In such a case the system will make
 an attempt to cancel the current write as a layout will have to be performed
 which then may be followed by a write. Typically, you should register a
 cancellation callback in the cancellation signal. The cancellation callback
         
          will not
         
         be made on the main thread and can be registered
 as follows:
        
         cancellationSignal.setOnCancelListener(new OnCancelListener() {
     @Override
     public void onCancel() {
         // Cancel write
     }
 });
        
        
         
          Note:
         
         If the printed content is large, it is a good
 practice to schedule writing it on a dedicated thread and register an
 observer in the provided
         
          
           CancellationSignal
          
         
         upon invocation of
 which you should stop writing.
        
| pages | The pages whose content to print - non-overlapping in ascending order. | 
|---|---|
| destination | The destination file descriptor to which to write. | 
| cancellationSignal | Signal for observing cancel writing requests. | 
| callback | Callback to inform the system for the write result. |