Zxing integración en la aplicación monodroid

Estoy intentando integrar el escáner de código de barras de ZXing en una aplicación MonoDroid. Veo que las aplicaciones normales de Android (java) tienen IntentIntegration.java e IntentResult.java para incluir en su proyecto para ayudar. Me preguntaba si alguien ha portado los de .NET (no los vi portados en el proyecto csharp.)? También me estoy preguntando si alguien ha implementado ZXing de otra manera para llegar a trabajar con su aplicación? Si alguien se ha integrado con MonoDroid, ¿qué se debe hacer para iniciar un análisis en un controlador de clic de botón?

Además, si alguien tiene algún otro escáner de código de barras de 3 personas que podría implementarse en su lugar, coloque esas sugerencias en los comentarios.

La primera pregunta es, ¿realmente necesita portar esos archivos? Todos los derechos reservados

Puede incluir código fuente de Java en un proyecto Mono para Android; Simplemente establezca la acción Build en AndroidJavaSource y la fuente se compilará en el .apk resultante. Esto también se puede hacer con archivos .jar .

Luego viene la cuestión de invocar el código Java de C # .

En el caso de IntentIntegration.java e IntentResult.java , eso puede ser suficiente, ya que esos tipos no admiten la herencia (son final ). Por supuesto, usar JNIEnv para invocar métodos en ellos sería un PITA, pero se puede hacer:

 // Untested code, provided for demo purposes: // Handle of the Java class we're invoking IntPtr IntentResult = JNIEnv.FindClass("com/google/zxing/integration/android/IntentIntegrator"); // Handle of the method to invoke IntPtr IntentResult_initiateScan = JNIEnv.GetMethodID(IntentResult, "initiateScan", "(Landroid/app/Activity;)Landroid/app/AlertDialog;"); // method signature can be obtained from `javap -s` // Invoke the method; return value is an AlertDialog instance IntPtr rAlertDialog = JNIEnv.CallStaticObjectMethod ( IntentResult, IntentResult_initiateScan, new JValue (someActivity)); // ...and construct a nice managed wrapper over the Java instance. AlertDialog alertDialog = new AlertDialog (rAlertDialog); 

Además, el IntentIntegrator mención de que la actividad proporcionada debe reemplazar el método Activity.OnActivityResult .

Todo lo dicho, portar IntentIntegrator.java no debería ser tan difícil, ya que la mayoría de ellos es un contenedor sobre Activity.StartActivityForResult con una intención adecuada y la construcción de un AlertDialog (que puede o no necesitar).

Ahora tenemos puertos ZXing para MonoTouch y Monodroid . https://github.com/Redth/ZXing.Net.Mobile

  • Mono para Android - Arquitectura soportada - Drop x86?
  • Mono.Data.Sqlite.SqliteConnection.SetConfig lanza una biblioteca utilizada incorrectamente excepción
  • Resource.Designer.cs: "Recurso ... no contiene una definición para ..."
  • Depuración de un dispositivo "remoto" Android con Xamarin?
  • Cuadro de mensaje para android mono
  • Necesita un ejemplo de tomar una imagen con MonoDroid y MVVMCross
  • Xamarin no muestra la imagen de formularios: Android
  • ¿Qué tema utiliza el diseñador de Xamarin para Mono para Android?
  • Cómo configurar un título personalizado con Xamarin / Monodroid
  • Cómo instalar dos actividades como una aplicación en Xamarin Android C #
  • Reproducir video en Android usando Xamarin
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.