Как печатать с устройства Android на принтер серии МФУ HP через USB - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу подключить устройство Android к принтеру HP MFP m128fw через OTG (USB) и выполнить печать из веб-просмотра. Итак, я установил приложение HP Print Service Plugin на свое устройство Android. Я попробовал и протестировал много разных кодов, но он просто подключается к принтеру, и я вижу детали принтера, но после этого он не печатает.

В другом коде «Печать документов HTML» от android.developer. В этом коде с помощью PrinterManager он перешел к операции выбора принтера, но он не показывает мой принтер. Ниже приведен код.

MainActivity

public class MainActivity extends AppCompatActivity {

private String TAG = MainActivity.class.getSimpleName();

private EditText et_address_bar;
private ImageView iv_go;
private WebView wv_web_page;
private Button btn_print;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    et_address_bar = findViewById(R.id.et_address_bar);
    iv_go = findViewById(R.id.iv_go);
    wv_web_page = findViewById(R.id.wv_web_page);
    btn_print = findViewById(R.id.btn_print);

    wv_web_page.setWebViewClient(new MyBrowser());

    iv_go.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            doWebViewPrint();
        }
    });

    btn_print.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        @Override
        public void onClick(View v) {
            createWebPrintJob(wv_web_page);
        }
    });
}

private void doWebViewPrint() {
    wv_web_page.getSettings().setLoadsImagesAutomatically(true);
    wv_web_page.getSettings().setJavaScriptEnabled(true);
    wv_web_page.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    wv_web_page.loadUrl(et_address_bar.getText().toString());
}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void createWebPrintJob(WebView webView) {
    PrintManager printManager = (PrintManager) this.getSystemService(Context.PRINT_SERVICE);

    String jobName = getString(R.string.app_name) + " Document";

    PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter(jobName);

    PrintJob printJob = printManager.print(jobName, printAdapter,
            new PrintAttributes.Builder().build());

    if(printJob.isCompleted()){
        Toast.makeText(getApplicationContext(), "Print Completed", Toast.LENGTH_LONG).show();
    }
    else if(printJob.isFailed()){
        Toast.makeText(getApplicationContext(), "Print Failed", Toast.LENGTH_LONG).show();
    }

    // Save the job object for later status checking
    //printJobs.add(printJob);
}

private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...