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.
- Android TextureView sólo dibuja cuando OnSurfaceTextureUpdated se llama
- Los atributos personalizados de monodroid / xamarin están vacíos usando ObtainStyledAttributes
- Mono para Android: ListView Eliminar elementos NotifyDataSet modificado
- ¿Hay algún almacenamiento seguro en Android a través de Monodroid fuera de la caja?
- Desarrollo de iOS y Android en Windows
- Subiendo la aplicación MonoDroid a Android Market
- ¿Cuál es la contraparte de iOS 'QLPreviewController o UIDocumentInteractionController en Android?
- Xamarin Android: Mantenga el control con Alert Dialog hasta que se haga clic en un botón
- Visual Studio Android Emulator no ejecutará la aplicación
- ¿Por qué mi proyecto MonoDroid / Xamarin.Android de repente me da un "java" salió con código 1. "error?
- ParseInstallation.SaveAsync () que causa UnhandledException en formularios Xamarin Android
- System.ObjectModel Advertencia Xamarin no se ejecuta en Android
- C # barra de progreso circular xamarin - Android
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).
Sólo pasó a tropezar con este enlace que parece muy apropos: http://mono-for-android.1047100.n5.nabble.com/Algo-Positivo-para-Report-Barcode-Scan-td4919739.html
Ahora tenemos puertos ZXing
para MonoTouch
y Monodroid
. https://github.com/Redth/ZXing.Net.Mobile
- Android: SQLite, cursor.moveToNext () siempre devuelve false
- Dibujar en un lienzo con demora – "hacer onDraw () reducir la velocidad"