Печать POS 58 мм, Java, AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Печать POS 58 мм, Java, Android

Сообщение Гость »


У меня есть веб-сайт, адаптированный для мобильных устройств, затем я превратил его в мобильное приложение с WebView, я использовал IDE — Intellij, используемый язык программирования — Java, он хорошо печатается на настольном принтере POS 58MM, но для мобильное приложение, это не так, я использую printlibs.jar в качестве библиотеки

мой Java-код
пакет com.example.mobileprinting; импортировать com.lvrenyang.io.IOCallBack; импортировать com.lvrenyang.io.Pos; импортировать com.lvrenyang.io.USBPrinting; публичный класс MainActivity расширяет AppCompatActivity реализует View.OnClickListener, IOCallBack { частные устройства LinearLayout LinearLayout; Кнопка btnDisconnect,btnPrint; статическая MainActivity mActivity; ExecutorService es = Executors.newScheduledThreadPool(30); Pos mPos = новый Pos(); USBPrinting mUsb = новый USBPrinting(); @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_main); mPos.Set(mUsb); mUsb.SetCallBack(это); mActivity = это; Linearlayoutdevices = (LinearLayout) findViewById(R.id.linearlayoutdevices); btnDisconnect = (Кнопка) findViewById(R.id.buttonDisconnect); btnPrint = (Кнопка) findViewById(R.id.buttonPrint); btnDisconnect.setOnClickListener(это); btnPrint.setOnClickListener(это); btnDisconnect.setEnabled (ложь); btnPrint.setEnabled(ложь); Панель инструментов Toolbar = findViewById(R.id.toolbar); setSupportActionBar (панель инструментов); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) { зонд(); } еще { заканчивать(); } WebView webView = findViewById(R.id.webView); ProgressBar ProgressBar = findViewById(R.id.progressBar); // Включаем JavaScript (необязательно) webView.getSettings().setJavaScriptEnabled(истина); webView.addJavascriptInterface(новый WebAppInterface(this), "Android"); webView.setWebChromeClient(новый WebChromeClient() { @Override public boolean onJsAlert (представление WebView, URL-адрес строки, сообщение строки, результат JsResult) { // Обработка оповещения JavaScript // Для простоты показываем AlertDialog новый AlertDialog.Builder(MainActivity.this) .setMessage(сообщение) .setPositiveButton(android.R.string.ok, (диалог, который) -> результат.подтвердить()) .setCancelable(ложь) .показывать(); вернуть истину; } }); webView.setWebViewClient(новый WebViewClient() { @Override public void onPageStarted (представление WebView, URL-адрес строки, значок растрового изображения) { // Показываем ProgressBar, когда страница начинает загружаться ProgressBar.setVisibility(View.VISIBLE); } @Override public void onPageFinished (представление WebView, URL-адрес строки) { // Скрываем ProgressBar после завершения загрузки страницы ProgressBar.setVisibility(View.GONE); ПечатьСтраницы(); } }); // Загрузите URL-адрес webView.loadUrl("https://example.com.ng/app") } // Здесь вы добавляете класс WebAppInterface в качестве внутреннего класса общественный класс WebAppInterface { Контекст mContext; WebAppInterface (Контекстный контекст) { мКонтекст = контекст; } @JavascriptInterface общественный недействительный printPage () { // Получаем ссылку на WebView WebView webView = ((Activity) mContext).findViewById(R.id.webView); // Создаем WebViewClient для захвата содержимого WebView webView.setWebViewClient(новый WebViewClient() { @Override public void onPageFinished (представление WebView, URL-адрес строки) { // Создаем растровое изображение содержимого WebView view.measure(View.MeasureSpec.makeMeasureSpec( View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.setDrawingCacheEnabled(истина); view.buildDrawingCache(); Растровое изображение = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); view.draw(новый холст(растровое изображение)); // Преобразуем растровое изображение в массив байтов ByteArrayOutputStream byteArrayOutputStream = новый ByteArrayOutputStream (); bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); byte[] байты = byteArrayOutputStream.toByteArray(); // Отправляем массив байтов на принтер через USB if (mUsb != null && mUsb.IsOpened()) { // Записываем байты на принтер int bytesWritten = mUsb.Write(байты, 0, байты.длина); если (bytesWritten != -1) { // Печать успешна Log.d(TAG, «Печать успешна»); } еще { // Печать не удалась Log.e(TAG, «Ошибка печати»); // Показываем пользователю сообщение о том, что печать не удалась Toast.makeText(mContext, «Ошибка печати», Toast.LENGTH_SHORT).show(); } } еще { // Принтер не подключен, выводим сообщение Log.e(TAG, «Принтер не подключен»); Toast.makeText(mContext, «Принтер не подключен», Toast.LENGTH_SHORT).show(); } } }); // Перезагружаем WebView, чтобы вызвать onPageFinished и захватить содержимое вебView.reload(); } } @Override защищенная пустота onDestroy() { супер.onDestroy(); btnDisconnect.performClick(); } @Override public void onClick (View arg0) { // TODO Автоматически сгенерированная заглушка метода if (arg0.getId() == R.id.buttonDisconnect) { es.submit(новый MainActivity.TaskClose(mUsb)); } иначе if (arg0.getId() == R.id.buttonPrint) { btnPrint.setEnabled(ложь); } } @Override общественная недействительность OnOpen() { // TODO Автоматически сгенерированная заглушка метода this.runOnUiThread(новый Runnable(){ @Override общественный недействительный запуск () { btnDisconnect.setEnabled (истина); btnPrint.setEnabled(истина); Linearlayoutdevices.setEnabled (ложь); for(int i = 0; i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Поле добавления POS в проблеме pos.config
    Anonymous » » в форуме Python
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous
  • Печать квитанции в формате PDF на термопринтере (POS) с использованием C#
    Гость » » в форуме C#
    0 Ответы
    46 Просмотры
    Последнее сообщение Гость
  • Печать квитанции в формате PDF на термопринтере (POS) с использованием C# [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    55 Просмотры
    Последнее сообщение Anonymous
  • Печать отчетов POS RDLC
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Печать на POS-принтере с PHP
    Anonymous » » в форуме Php
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»