zxing 集成到 monodroid 应用程序中

2024-01-22

我正在尝试将 ZXing 的条形码扫描仪集成到 MonoDroid 应用程序中。我看到普通的 Android (java) 应用程序有IntentIntegration.java 和 IntentResult.java http://code.google.com/p/zxing/source/browse/trunk/android-integration/src/com/google/zxing/#zxing/integration/android纳入他们的项目以提供帮助。我想知道是否有人将它们移植到.NET(我没有看到它们移植到 csharp 项目中。)?我还想知道是否有人以另一种方式实现了 ZXing 来使用他们的应用程序?如果有人与 MonoDroid 集成,需要做什么才能在按钮单击处理程序中启动扫描?

另外,如果有人有任何其他可以实施的 3 方条形码扫描仪,请在评论中提出这些建议。


第一个问题是,您真的需要移植这些文件吗? :-)

您可以将 Java 源代码包含到 Mono for Android 项目中;只需将构建操作设置为AndroidJavaSource并且源代码将被编译到生成的 .apk 中。这也可以通过以下方式完成.jar files.

那么问题来了从 C# 调用 Java 代码 http://mono-android.net/Documentation/API_Design#Jave_Native_Interface_Support.

如果是IntentIntegration.java and IntentResult.java, that may就足够了,因为这些类型不支持继承(它们是final)。授予,使用JNIEnv http://docs.mono-android.net/index.aspx?link=T%3aAndroid.Runtime.JNIEnv调用它们的方法将是 PITA,但可以这样做:

// 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);

此外,IntentIntegrator文档提到提供的 Activity 必须覆盖Activity.OnActivityResult http://docs.mono-android.net/index.aspx?link=M%3aAndroid.App.Activity.OnActivityResult(System.Int32%2cAndroid.App.Result%2cAndroid.Content.Intent) method.

综上所述,移植IntentIntegrator.java不应该that困难,因为大部分都是包装Activity.StartActivityForResult http://docs.mono-android.net/index.aspx?link=M%3aAndroid.App.Activity.StartActivityForResult(Android.Content.Intent%2cSystem.Int32)具有适当的意图和构建AlertDialog(您可能需要也可能不需要)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zxing 集成到 monodroid 应用程序中 的相关文章

随机推荐

  • 如何更改多处理模块使用的序列化方法?

    如何更改Python使用的序列化方法multiprocessing图书馆 特别是 默认的序列化方法使用pickle具有该版本 Python 的默认 pickle 协议版本的库 默认的pickle协议在Python 2 7中是版本2 在Pyt
  • 为什么是24位寄存器?

    在我的工作中 我处理不同的微控制器 微处理器和 DSP 处理器 其中许多都有 24 位寄存器和计数器 我知道如何使用它们 这不是我的问题 我的问题是为什么他们有 24 位寄存器 为什么不把它做成32位的呢 据我所知 这不是大小的问题 因为寄
  • 根据另一个参考数组从一个数组中选择密切匹配

    我有一个数组A和一个参考数组B 尺寸为A至少和B e g A 2 100 300 793 1300 1500 1810 2400 B 4 305 789 1234 1890 B实际上是指定时间信号中峰值的位置 并且A包含稍后时间的峰值位置
  • 序列化代码示例中的无限循环

    看看下面的代码here https web archive org web 20151025040111 http blogs msdn com 80 b sowmy archive 2006 03 26 561188 aspx 它是关于在
  • 如何使用 Jest 运行单个测试?

    我在文件 fix order test js 中有一个 适用于嵌套子项 的测试 运行以下命令会运行文件中的所有测试 jest fix order test 如何只运行一个测试 下面的代码不起作用 因为它搜索指定的正则表达式的文件 jest
  • Windows:检测右 alt 是否在当前布局中生成 Ctrl+Alt (AltGr)

    Windows 中的某些键盘布局 例如 US QWERTY 将右 Alt 视为常规 Alt 键 而其他键盘布局 例如 US International 将其视为 AltGr 并在按下时同时生成 Ctrl 和 Alt 键 Microsoft
  • 通过身份验证从 https 下载文件

    我有一个 Python 2 6 脚本 可以从 Web 服务器下载文件 我希望这个脚本传递用户名和密码 用于在获取文件之前进行身份验证 并且我将它们作为 url 的一部分传递 如下所示 import urllib2 response urll
  • android 中如何导航到另一个页面?

    我是安卓新手 请告诉我如何在 android 中导航到新页面 提前致谢 编辑 如何从现有活动开始新活动 在 Android 中 导航到另一个页面意味着您必须启动另一个 Activity 要开始新活动 请使用此 Intent intent n
  • 使用 postgres 表序列而不是共享 hibernate_sequence

    当我对表执行任何操作时 它总是显示错误 Hibernate select nextval hibernate sequence 2019 07 20 16 15 44 877 WARN 58376 nio 9000 exec 1 o h e
  • 按修改日期而不是发布日期对 Jekyll 帖子进行排序?

    对于经常更新帖子的人来说 有必要根据帖子从新到旧进行排序最后修改日期而不是 Jekyll 默认按发布日期排序 似乎没有简单的方法可以实现这一点 我已经阅读并测试了几乎所有的方法 这是有效的 部分符合预期 用过这个宝石https github
  • 在linux中安装jdk 1.7时出错[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 当我使用以下命令在 Oracle Linux 中安装 jdk 1 7 时 rpm ivh jdk 7u9 linux i586 rpm 但是我收到以下
  • 使用正则表达式捕获两个单词之间的文本

    我正在尝试使用 CSharp 中的正则表达式获取两个关键字之间的文本 虽然我已经找到了一个具有相同标题的主题 但该主题是关于查找方括号之间的文本 这相当容易 因为您可以使用
  • 为什么 SQLAlchemy count() 比原始查询慢得多?

    我正在使用 SQLAlchemy 和 MySQL 数据库 我想计算表中的行数 大约 300k SQL炼金术count http docs sqlalchemy org ru latest orm query html sqlalchemy
  • 警告:在此函数中使用未初始化的“”[-Wuninitialized]

    以下程序编译时没有警告 O0 include
  • GitHub Action:如何从表达式求值中获取值并将其分配给环境变量

    环境表达式通常直接赋值 如下例所示 name set up env var env TAG v1 2 3 run echo TAG 但是如何从 shell 脚本评估中获取值呢 例如 在我的终端中 我可以通过以下方式获取当前标签git des
  • CMake rpm 在 /etc/init.d 中安装文件

    我想安装一个文件 etc init d 目录 我已经写了代码 INSTALL FILES CMAKE SOURCE DIR app script appd DESTINATION etc init d appd 但是当我使用 cmake 运
  • Facebook SDK 4.5 iOS 9

    我遇到了新 FBSDK 的问题 每当我尝试调用登录方法 logInWithReadPermissions 时 我都会收到以下错误消息 错误 canOpenUrl url fbauth2 失败错误 null 我的配置 plist 文件遵循 i
  • 使用GPU加速BigInteger计算

    我几乎完成了处理一些非常大的整数 大约 2 的 100 000 000 次方 的算法 由于该算法不是内存密集型的 因此需要在内存充足的 16 核服务器上编写几个小时的高度并行代码 我使用 NET 4 中的 BigInteger 类 算法的细
  • ASP.Net Core 中的动态路由

    我需要提供一个路由机制 其中路由是在运行时从用户帐户创建生成的 例如http mysite username home 我认为这可以通过路由来完成 但我不确定从哪里开始使用 ASP Net Core 我在网上看到了一些 MVC 5 的示例
  • zxing 集成到 monodroid 应用程序中

    我正在尝试将 ZXing 的条形码扫描仪集成到 MonoDroid 应用程序中 我看到普通的 Android java 应用程序有IntentIntegration java 和 IntentResult java http code go