Search in sources :

Example 1 with PrinterInfo

use of android.print.PrinterInfo in project platform_frameworks_base by android.

the class SelectPrinterActivity method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActionBar().setIcon(R.drawable.ic_print);
    setContentView(R.layout.select_printer_activity);
    mEnabledPrintServices = new ArrayMap<>();
    mPrinterRegistry = new PrinterRegistry(this, null, LOADER_ID_PRINT_REGISTRY, LOADER_ID_PRINT_REGISTRY_INT);
    // Hook up the list view.
    mListView = (ListView) findViewById(android.R.id.list);
    final DestinationAdapter adapter = new DestinationAdapter();
    adapter.registerDataSetObserver(new DataSetObserver() {

        @Override
        public void onChanged() {
            if (!isFinishing() && adapter.getCount() <= 0) {
                updateEmptyView(adapter);
            }
        }

        @Override
        public void onInvalidated() {
            if (!isFinishing()) {
                updateEmptyView(adapter);
            }
        }
    });
    mListView.setAdapter(adapter);
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (!((DestinationAdapter) mListView.getAdapter()).isActionable(position)) {
                return;
            }
            PrinterInfo printer = (PrinterInfo) mListView.getAdapter().getItem(position);
            if (printer == null) {
                startAddPrinterActivity();
            } else {
                onPrinterSelected(printer);
            }
        }
    });
    findViewById(R.id.button).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startAddPrinterActivity();
        }
    });
    registerForContextMenu(mListView);
    getLoaderManager().initLoader(LOADER_ID_ENABLED_PRINT_SERVICES, null, this);
    // If some are disabled and some are enabled show a toast to notify the user
    if (savedInstanceState == null || !savedInstanceState.getBoolean(KEY_NOT_FIRST_CREATE)) {
        List<PrintServiceInfo> allServices = ((PrintManager) getSystemService(Context.PRINT_SERVICE)).getPrintServices(PrintManager.ALL_SERVICES);
        boolean hasEnabledServices = false;
        boolean hasDisabledServices = false;
        if (allServices != null) {
            final int numServices = allServices.size();
            for (int i = 0; i < numServices; i++) {
                if (allServices.get(i).isEnabled()) {
                    hasEnabledServices = true;
                } else {
                    hasDisabledServices = true;
                }
            }
        }
        if (!hasEnabledServices) {
            startAddPrinterActivity();
        } else if (hasDisabledServices) {
            String disabledServicesSetting = Settings.Secure.getString(getContentResolver(), Settings.Secure.DISABLED_PRINT_SERVICES);
            if (!TextUtils.isEmpty(disabledServicesSetting)) {
                Toast.makeText(this, getString(R.string.print_services_disabled_toast), Toast.LENGTH_LONG).show();
            }
        }
    }
}
Also used : PrintManager(android.print.PrintManager) DataSetObserver(android.database.DataSetObserver) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) SearchView(android.widget.SearchView) TextView(android.widget.TextView) ListView(android.widget.ListView) PrintServiceInfo(android.printservice.PrintServiceInfo) OnClickListener(android.view.View.OnClickListener) AdapterView(android.widget.AdapterView) PrinterInfo(android.print.PrinterInfo)

Example 2 with PrinterInfo

use of android.print.PrinterInfo in project platform_frameworks_base by android.

the class PrintActivity method onSelectPrinterActivityResult.

private void onSelectPrinterActivityResult(int resultCode, Intent data) {
    if (resultCode == RESULT_OK && data != null) {
        PrinterInfo printerInfo = data.getParcelableExtra(SelectPrinterActivity.INTENT_EXTRA_PRINTER);
        if (printerInfo != null) {
            mCurrentPrinter = printerInfo;
            mPrintJob.setPrinterId(printerInfo.getId());
            mPrintJob.setPrinterName(printerInfo.getName());
            mDestinationSpinnerAdapter.ensurePrinterInVisibleAdapterPosition(printerInfo);
        }
    }
    if (mCurrentPrinter != null) {
        // Trigger PrintersObserver.onChanged() to adjust selection back to current printer
        mDestinationSpinnerAdapter.notifyDataSetChanged();
    }
}
Also used : PrinterInfo(android.print.PrinterInfo)

Example 3 with PrinterInfo

use of android.print.PrinterInfo in project platform_frameworks_base by android.

the class PrinterDiscoverySession method addPrinters.

/**
     * Adds discovered printers. Adding an already added printer updates it.
     * Removed printers can be added again. You can call this method multiple
     * times during the life of this session. Duplicates will be ignored.
     * <p>
     * <strong>Note: </strong> Calls to this method after the session is
     * destroyed, that is after the {@link #onDestroy()} callback, will be ignored.
     * </p>
     *
     * @param printers The printers to add.
     *
     * @see #removePrinters(List)
     * @see #getPrinters()
     * @see #isDestroyed()
     */
public final void addPrinters(@NonNull List<PrinterInfo> printers) {
    PrintService.throwIfNotCalledOnMainThread();
    // If the session is destroyed - nothing do to.
    if (mIsDestroyed) {
        Log.w(LOG_TAG, "Not adding printers - session destroyed.");
        return;
    }
    if (mIsDiscoveryStarted) {
        // If during discovery, add the new printers and send them.
        List<PrinterInfo> addedPrinters = null;
        final int addedPrinterCount = printers.size();
        for (int i = 0; i < addedPrinterCount; i++) {
            PrinterInfo addedPrinter = printers.get(i);
            PrinterInfo oldPrinter = mPrinters.put(addedPrinter.getId(), addedPrinter);
            if (oldPrinter == null || !oldPrinter.equals(addedPrinter)) {
                if (addedPrinters == null) {
                    addedPrinters = new ArrayList<PrinterInfo>();
                }
                addedPrinters.add(addedPrinter);
            }
        }
        // Send the added printers, if such.
        if (addedPrinters != null) {
            try {
                mObserver.onPrintersAdded(new ParceledListSlice<PrinterInfo>(addedPrinters));
            } catch (RemoteException re) {
                Log.e(LOG_TAG, "Error sending added printers", re);
            }
        }
    } else {
        // Remember the last sent printers if needed.
        if (mLastSentPrinters == null) {
            mLastSentPrinters = new ArrayMap<PrinterId, PrinterInfo>(mPrinters);
        }
        // Update the printers.
        final int addedPrinterCount = printers.size();
        for (int i = 0; i < addedPrinterCount; i++) {
            PrinterInfo addedPrinter = printers.get(i);
            if (mPrinters.get(addedPrinter.getId()) == null) {
                mPrinters.put(addedPrinter.getId(), addedPrinter);
            }
        }
    }
}
Also used : PrinterId(android.print.PrinterId) PrinterInfo(android.print.PrinterInfo) RemoteException(android.os.RemoteException)

Example 4 with PrinterInfo

use of android.print.PrinterInfo in project android_frameworks_base by DirtyUnicorns.

the class PrintActivity method onSelectPrinterActivityResult.

private void onSelectPrinterActivityResult(int resultCode, Intent data) {
    if (resultCode == RESULT_OK && data != null) {
        PrinterInfo printerInfo = data.getParcelableExtra(SelectPrinterActivity.INTENT_EXTRA_PRINTER);
        if (printerInfo != null) {
            mCurrentPrinter = printerInfo;
            mPrintJob.setPrinterId(printerInfo.getId());
            mPrintJob.setPrinterName(printerInfo.getName());
            mDestinationSpinnerAdapter.ensurePrinterInVisibleAdapterPosition(printerInfo);
        }
    }
    if (mCurrentPrinter != null) {
        // Trigger PrintersObserver.onChanged() to adjust selection back to current printer
        mDestinationSpinnerAdapter.notifyDataSetChanged();
    }
}
Also used : PrinterInfo(android.print.PrinterInfo)

Example 5 with PrinterInfo

use of android.print.PrinterInfo in project android_frameworks_base by DirtyUnicorns.

the class FusedPrintersProvider method loadInternal.

private void loadInternal() {
    if (mDiscoverySession == null) {
        PrintManager printManager = (PrintManager) getContext().getSystemService(Context.PRINT_SERVICE);
        mDiscoverySession = printManager.createPrinterDiscoverySession();
        mPersistenceManager.readPrinterHistory();
    } else if (mPersistenceManager.isHistoryChanged()) {
        mPersistenceManager.readPrinterHistory();
    }
    if (mPersistenceManager.isReadHistoryCompleted() && !mDiscoverySession.isPrinterDiscoveryStarted()) {
        mDiscoverySession.setOnPrintersChangeListener(new OnPrintersChangeListener() {

            @Override
            public void onPrintersChanged() {
                if (DEBUG) {
                    Log.i(LOG_TAG, "onPrintersChanged() count:" + mDiscoverySession.getPrinters().size() + " " + FusedPrintersProvider.this.hashCode());
                }
                updatePrinters(mDiscoverySession.getPrinters(), mFavoritePrinters, getCurrentLocation());
            }
        });
        final int favoriteCount = mFavoritePrinters.size();
        List<PrinterId> printerIds = new ArrayList<>(favoriteCount);
        for (int i = 0; i < favoriteCount; i++) {
            printerIds.add(mFavoritePrinters.get(i).first.getId());
        }
        mDiscoverySession.startPrinterDiscovery(printerIds);
        List<PrinterInfo> printers = mDiscoverySession.getPrinters();
        updatePrinters(printers, mFavoritePrinters, getCurrentLocation());
    }
}
Also used : OnPrintersChangeListener(android.print.PrinterDiscoverySession.OnPrintersChangeListener) ArrayList(java.util.ArrayList) PrinterId(android.print.PrinterId) PrintManager(android.print.PrintManager) PrinterInfo(android.print.PrinterInfo)

Aggregations

PrinterInfo (android.print.PrinterInfo)46 PrinterId (android.print.PrinterId)30 RemoteException (android.os.RemoteException)15 ArrayList (java.util.ArrayList)15 PrintManager (android.print.PrintManager)10 View (android.view.View)6 AdapterView (android.widget.AdapterView)6 ImageView (android.widget.ImageView)6 ListView (android.widget.ListView)6 SearchView (android.widget.SearchView)6 TextView (android.widget.TextView)6 Intent (android.content.Intent)5 DataSetObserver (android.database.DataSetObserver)5 Location (android.location.Location)5 OnPrintersChangeListener (android.print.PrinterDiscoverySession.OnPrintersChangeListener)5 PrintServiceInfo (android.printservice.PrintServiceInfo)5 MenuItem (android.view.MenuItem)5 OnClickListener (android.view.View.OnClickListener)5 AdapterContextMenuInfo (android.widget.AdapterView.AdapterContextMenuInfo)5 HashSet (java.util.HashSet)5