Я хочу подключить устройство 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;
}
}
}