private void createWebPrintJob(WebView webView) { PrintManager printManager = (PrintManager) this.getSystemService(Context.PRINT_SERVICE); PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter("MyDocument"); String jobName = getString(R.string.app_name) + " Print Test"; printManager.print(jobName, printAdapter, new PrintAttributes.Builder().build()); }
@Override public void setListening(boolean isListening) { if (mPrintManager != null) { if (isListening) { mPrintManager.addPrintJobStateChangeListener(this); onPrintJobStateChanged(null); } else { mPrintManager.removePrintJobStateChangeListener(this); } } }
@Override protected void onStartLoading() { if (DEBUG) { Log.i(LOG_TAG, "onStartLoading()"); } // If we already have a result, deliver it immediately. if (!mPrintJobs.isEmpty()) { deliverResult(new ArrayList<PrintJobInfo>(mPrintJobs)); } // Start watching for changes. if (mPrintJobStateChangeListener == null) { mPrintJobStateChangeListener = new PrintJobStateChangeListener() { @Override public void onPrintJobStateChanged(PrintJobId printJobId) { onForceLoad(); } }; mPrintManager.addPrintJobStateChangeListener(mPrintJobStateChangeListener); } // If the data changed or we have no data - load it now. if (mPrintJobs.isEmpty()) { onForceLoad(); } }
@Override public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { List<SearchIndexableRaw> indexables = new ArrayList<SearchIndexableRaw>(); PackageManager packageManager = context.getPackageManager(); PrintManager printManager = (PrintManager) context.getSystemService(Context.PRINT_SERVICE); String screenTitle = context.getResources().getString(R.string.print_settings); SearchIndexableRaw data = new SearchIndexableRaw(context); data.title = screenTitle; data.screenTitle = screenTitle; indexables.add(data); // Indexing all services, regardless if enabled. Please note that the index will not be // updated until this function is called again List<PrintServiceInfo> services = printManager.getPrintServices(PrintManager.ALL_SERVICES); if (services != null) { final int serviceCount = services.size(); for (int i = 0; i < serviceCount; i++) { PrintServiceInfo service = services.get(i); ComponentName componentName = new ComponentName( service.getResolveInfo().serviceInfo.packageName, service.getResolveInfo().serviceInfo.name); data = new SearchIndexableRaw(context); data.key = componentName.flattenToString(); data.title = service.getResolveInfo().loadLabel(packageManager).toString(); data.summaryOn = context.getString(R.string.print_feature_state_on); data.summaryOff = context.getString(R.string.print_feature_state_off); data.screenTitle = screenTitle; indexables.add(data); } } return indexables; }
@Override protected void onReset() { if (DEBUG) { Log.i(LOG_TAG, "onReset()"); } // Stop loading. onStopLoading(); // Clear the cached result. mPrintJobs.clear(); // Stop watching for changes. if (mPrintJobStateChangeListener != null) { mPrintManager.removePrintJobStateChangeListener(mPrintJobStateChangeListener); mPrintJobStateChangeListener = null; } }
@Override public List<PrintJobInfo> loadInBackground() { List<PrintJobInfo> printJobInfos = null; List<PrintJob> printJobs = mPrintManager.getPrintJobs(); final int printJobCount = printJobs.size(); for (int i = 0; i < printJobCount; i++) { PrintJobInfo printJob = printJobs.get(i).getInfo(); if (shouldShowToUser(printJob)) { if (printJobInfos == null) { printJobInfos = new ArrayList<PrintJobInfo>(); } printJobInfos.add(printJob); } } return printJobInfos; }
@Override public void onPrintJobStateChanged(PrintJobId printJobId) { List<PrintJob> printJobs = mPrintManager.getPrintJobs(); int numActivePrintJobs = 0; final int numPrintJobs = printJobs.size(); for (int i = 0; i < numPrintJobs; i++) { if (shouldShowToUser(printJobs.get(i).getInfo())) { numActivePrintJobs++; } } mSummaryLoader.setSummary( this, mContext .getResources() .getQuantityString( R.plurals.print_settings_title, numActivePrintJobs, numActivePrintJobs)); }
private void print() { // Get the print manager. PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE); // Pass in the ViewView's document adapter. printManager.print("MotoGP stats", mWebView.createPrintDocumentAdapter(), null); }