У меня есть следующий код в файле MainActivity
Row
EMDKResults results = EMDKManager.GetEMDKManager(Android.App.Application.Context, this);
выдает исключение во время выполнения:
Java.Lang.RuntimeException: 'stub' (NullReferenceException, как я обнаружил в Google).
Как это исправить?
Google. Отладка. Восстановить. Сначала - MAUI, затем - Xamarin.
Ни один пример от субпроизводителя устройства (Zebra) у меня не работает на устройстве, на котором я мог определить только начало и окончание сканирования (Не с помощью библиотеки, с обычным обработчиком широковещательных событий) (Atol Smart Slim Plus).
Может быть, кто-нибудь еще сталкивался с этим?
using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using AndroidX.AppCompat.App;
using Google.Android.Material.Snackbar;
using Symbol.XamarinEMDK;
using Symbol.XamarinEMDK.Barcode;
using System;
using System.Collections.Generic;
using static Symbol.XamarinEMDK.EMDKManager;
namespace ScanningXamarin
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : AppCompatActivity, IEMDKListener
{
private TextView statusView = null;
private TextView dataView = null;
EMDKManager emdkManager = null;
BarcodeManager barcodeManager = null;
Scanner scanner = null;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
statusView = FindViewById(Resource.Id.statusView);
dataView = FindViewById(Resource.Id.DataView);
EMDKResults results = EMDKManager.GetEMDKManager(Android.App.Application.Context, this);
if (results.StatusCode != EMDKResults.STATUS_CODE.Success)
{
statusView.Text = "Status: EMDKManager object creation failed ...";
}
else
{
statusView.Text = "Status: EMDKManager object creation succeeded ...";
}
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
SetContentView(Resource.Layout.Main);
AndroidX.AppCompat.Widget.Toolbar toolbar = FindViewById(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
//FloatingActionButton fab = FindViewById(Resource.Id.fab);
//fab.Click += FabOnClick;
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.menu_main, menu);
return true;
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
int id = item.ItemId;
if (id == Resource.Id.action_settings)
{
return true;
}
return base.OnOptionsItemSelected(item);
}
private void FabOnClick(object sender, EventArgs eventArgs)
{
View view = (View)sender;
Snackbar.Make(view, "Replace with your own action", Snackbar.LengthLong)
.SetAction("Action", (View.IOnClickListener)null).Show();
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
public void OnClosed()
{
statusView.Text = "Status: EMDK Open failed unexpectedly. ";
if (emdkManager != null)
{
emdkManager.Release();
emdkManager = null;
}
}
public void OnOpened(EMDKManager emdkManager)
{
statusView.Text = "Status: EMDK Opened successfully ...";
this.emdkManager = emdkManager;
InitScanner();
}
private void InitScanner()
{
if (emdkManager != null)
{
if (barcodeManager == null)
{
try
{
//Get the feature object such as BarcodeManager object for accessing the feature.
barcodeManager = (BarcodeManager)emdkManager.GetInstance(EMDKManager.FEATURE_TYPE.Barcode);
scanner = barcodeManager.GetDevice(BarcodeManager.DeviceIdentifier.Default);
if (scanner != null)
{
//Attahch the Data Event handler to get the data callbacks.
scanner.Data += scanner_Data;
//Attach Scanner Status Event to get the status callbacks.
scanner.Status += scanner_Status;
scanner.Enable();
//EMDK: Configure the scanner settings
ScannerConfig config = scanner.GetConfig();
config.SkipOnUnsupported = ScannerConfig.SkipOnUnSupported.None;
config.ScanParams.DecodeLEDFeedback = true;
config.ReaderParams.ReaderSpecific.ImagerSpecific.PickList = ScannerConfig.PickList.Enabled;
config.DecoderParams.Code39.Enabled = true;
config.DecoderParams.Code128.Enabled = false;
scanner.SetConfig(config);
}
else
{
displayStatus("Failed to enable scanner.\n");
}
}
catch (ScannerException e)
{
displayStatus("Error: " + e.Message);
}
catch (Exception ex)
{
displayStatus("Error: " + ex.Message);
}
}
}
}
void displayStatus(String status)
{
if (Looper.MainLooper.Thread == Java.Lang.Thread.CurrentThread())
{
statusView.Text = status;
}
else
{
RunOnUiThread(()=> statusView.Text = status);
}
}
void displaydata(string data)
{
if (Looper.MainLooper.Thread == Java.Lang.Thread.CurrentThread())
{
dataView.Text += (data + "\n");
}
else
{
RunOnUiThread(() => dataView.Text += data + "\n");
}
}
void DeinitScanner()
{
if (emdkManager != null)
{
if (scanner != null)
{
try
{
scanner.Data -= scanner_Data;
scanner.Status -= scanner_Status;
scanner.Disable();
}
catch (ScannerException e)
{
Log.Debug(this.Class.SimpleName, "Exception:" + e.Result.Description);
}
}
if (barcodeManager != null)
{
emdkManager.Release(EMDKManager.FEATURE_TYPE.Barcode);
}
barcodeManager = null;
scanner = null;
}
}
void scanner_Data(object sender, Scanner.DataEventArgs e)
{
ScanDataCollection scanDataCollection = e.P0;
if ((scanDataCollection != null) && (scanDataCollection.Result == ScannerResults.Success))
{
IList scanData = scanDataCollection.GetScanData();
foreach (ScanDataCollection.ScanData data in scanData)
{
displaydata(data.LabelType + " : " + data.Data);
}
}
}
void scanner_Status(object sender, Scanner.StatusEventArgs e)
{
String statusStr = "";
//EMDK: The status will be returned on multiple cases. Check the state and take the action.
Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates state = e.P0.State;
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Idle)
{
statusStr = "Scanner is idle and ready to submit read.";
try
{
if (scanner.IsEnabled && !scanner.IsReadPending)
{
scanner.Read();
}
}
catch (ScannerException e1)
{
statusStr = e1.Message;
}
}
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Waiting)
{
statusStr = "Waiting for Trigger Press to scan";
}
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Scanning)
{
statusStr = "Scanning in progress...";
}
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Disabled)
{
statusStr = "Scanner disabled";
}
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Error)
{
statusStr = "Error occurred during scanning";
}
displayStatus(statusStr);
}
protected override void OnResume()
{
base.OnResume();
InitScanner();
}
protected override void OnPause()
{
base.OnPause();
DeinitScanner();
}
protected override void OnDestroy()
{
base.OnDestroy();
//Clean up the emdkManager
if (emdkManager != null)
{
//EMDK: Release the EMDK manager object
emdkManager.Release();
emdkManager = null;
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/774 ... eexception
Zebra SE4710 EMDK Atol Smart Slim Plus. Заглушка (NullReferenceException) ⇐ Android
Форум для тех, кто программирует под Android
1772144249
Anonymous
У меня есть следующий код в файле MainActivity
Row
EMDKResults results = EMDKManager.GetEMDKManager(Android.App.Application.Context, this);
выдает исключение во время выполнения:
Java.Lang.RuntimeException: 'stub' (NullReferenceException, как я обнаружил в Google).
Как это исправить?
Google. Отладка. Восстановить. Сначала - MAUI, затем - Xamarin.
Ни один пример от субпроизводителя устройства (Zebra) у меня не работает на устройстве, на котором я мог определить только начало и окончание сканирования (Не с помощью библиотеки, с обычным обработчиком широковещательных событий) (Atol Smart Slim Plus).
Может быть, кто-нибудь еще сталкивался с этим?
using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using AndroidX.AppCompat.App;
using Google.Android.Material.Snackbar;
using Symbol.XamarinEMDK;
using Symbol.XamarinEMDK.Barcode;
using System;
using System.Collections.Generic;
using static Symbol.XamarinEMDK.EMDKManager;
namespace ScanningXamarin
{
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme.NoActionBar", MainLauncher = true)]
public class MainActivity : AppCompatActivity, IEMDKListener
{
private TextView statusView = null;
private TextView dataView = null;
EMDKManager emdkManager = null;
BarcodeManager barcodeManager = null;
Scanner scanner = null;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
statusView = FindViewById(Resource.Id.statusView);
dataView = FindViewById(Resource.Id.DataView);
EMDKResults results = EMDKManager.GetEMDKManager(Android.App.Application.Context, this);
if (results.StatusCode != EMDKResults.STATUS_CODE.Success)
{
statusView.Text = "Status: EMDKManager object creation failed ...";
}
else
{
statusView.Text = "Status: EMDKManager object creation succeeded ...";
}
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
SetContentView(Resource.Layout.Main);
AndroidX.AppCompat.Widget.Toolbar toolbar = FindViewById(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
//FloatingActionButton fab = FindViewById(Resource.Id.fab);
//fab.Click += FabOnClick;
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.menu_main, menu);
return true;
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
int id = item.ItemId;
if (id == Resource.Id.action_settings)
{
return true;
}
return base.OnOptionsItemSelected(item);
}
private void FabOnClick(object sender, EventArgs eventArgs)
{
View view = (View)sender;
Snackbar.Make(view, "Replace with your own action", Snackbar.LengthLong)
.SetAction("Action", (View.IOnClickListener)null).Show();
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
public void OnClosed()
{
statusView.Text = "Status: EMDK Open failed unexpectedly. ";
if (emdkManager != null)
{
emdkManager.Release();
emdkManager = null;
}
}
public void OnOpened(EMDKManager emdkManager)
{
statusView.Text = "Status: EMDK Opened successfully ...";
this.emdkManager = emdkManager;
InitScanner();
}
private void InitScanner()
{
if (emdkManager != null)
{
if (barcodeManager == null)
{
try
{
//Get the feature object such as BarcodeManager object for accessing the feature.
barcodeManager = (BarcodeManager)emdkManager.GetInstance(EMDKManager.FEATURE_TYPE.Barcode);
scanner = barcodeManager.GetDevice(BarcodeManager.DeviceIdentifier.Default);
if (scanner != null)
{
//Attahch the Data Event handler to get the data callbacks.
scanner.Data += scanner_Data;
//Attach Scanner Status Event to get the status callbacks.
scanner.Status += scanner_Status;
scanner.Enable();
//EMDK: Configure the scanner settings
ScannerConfig config = scanner.GetConfig();
config.SkipOnUnsupported = ScannerConfig.SkipOnUnSupported.None;
config.ScanParams.DecodeLEDFeedback = true;
config.ReaderParams.ReaderSpecific.ImagerSpecific.PickList = ScannerConfig.PickList.Enabled;
config.DecoderParams.Code39.Enabled = true;
config.DecoderParams.Code128.Enabled = false;
scanner.SetConfig(config);
}
else
{
displayStatus("Failed to enable scanner.\n");
}
}
catch (ScannerException e)
{
displayStatus("Error: " + e.Message);
}
catch (Exception ex)
{
displayStatus("Error: " + ex.Message);
}
}
}
}
void displayStatus(String status)
{
if (Looper.MainLooper.Thread == Java.Lang.Thread.CurrentThread())
{
statusView.Text = status;
}
else
{
RunOnUiThread(()=> statusView.Text = status);
}
}
void displaydata(string data)
{
if (Looper.MainLooper.Thread == Java.Lang.Thread.CurrentThread())
{
dataView.Text += (data + "\n");
}
else
{
RunOnUiThread(() => dataView.Text += data + "\n");
}
}
void DeinitScanner()
{
if (emdkManager != null)
{
if (scanner != null)
{
try
{
scanner.Data -= scanner_Data;
scanner.Status -= scanner_Status;
scanner.Disable();
}
catch (ScannerException e)
{
Log.Debug(this.Class.SimpleName, "Exception:" + e.Result.Description);
}
}
if (barcodeManager != null)
{
emdkManager.Release(EMDKManager.FEATURE_TYPE.Barcode);
}
barcodeManager = null;
scanner = null;
}
}
void scanner_Data(object sender, Scanner.DataEventArgs e)
{
ScanDataCollection scanDataCollection = e.P0;
if ((scanDataCollection != null) && (scanDataCollection.Result == ScannerResults.Success))
{
IList scanData = scanDataCollection.GetScanData();
foreach (ScanDataCollection.ScanData data in scanData)
{
displaydata(data.LabelType + " : " + data.Data);
}
}
}
void scanner_Status(object sender, Scanner.StatusEventArgs e)
{
String statusStr = "";
//EMDK: The status will be returned on multiple cases. Check the state and take the action.
Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates state = e.P0.State;
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Idle)
{
statusStr = "Scanner is idle and ready to submit read.";
try
{
if (scanner.IsEnabled && !scanner.IsReadPending)
{
scanner.Read();
}
}
catch (ScannerException e1)
{
statusStr = e1.Message;
}
}
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Waiting)
{
statusStr = "Waiting for Trigger Press to scan";
}
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Scanning)
{
statusStr = "Scanning in progress...";
}
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Disabled)
{
statusStr = "Scanner disabled";
}
if (state == Symbol.XamarinEMDK.Barcode.StatusData.ScannerStates.Error)
{
statusStr = "Error occurred during scanning";
}
displayStatus(statusStr);
}
protected override void OnResume()
{
base.OnResume();
InitScanner();
}
protected override void OnPause()
{
base.OnPause();
DeinitScanner();
}
protected override void OnDestroy()
{
base.OnDestroy();
//Clean up the emdkManager
if (emdkManager != null)
{
//EMDK: Release the EMDK manager object
emdkManager.Release();
emdkManager = null;
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/77430766/zebra-se4710-emdk-atol-smart-slim-plus-stub-nullreferenceexception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия