我正在尝试将Zstar二维码扫描仪与我的android webview应用程序集成。我成功导入了一个zstar项目并部署了它。扫描仪工作正常,没有任何问题。现在我正在尝试将此扫描仪与我的webview集成。
我正在研究的方案是,“当用户打开应用程序时,它应该启动webview,在webview中会有一个名为“扫描”的链接,单击该链接时,它应该向本机java代码“Zxing scanner function”发送意图,以启动扫描仪并关闭webview。扫描完成后,解码的数据应该传递到webview,扫描仪页面应该关闭,webview应该重新打开。
这是我到目前为止制定的代码
主活动。Java
package com.androiddvlpr.zxingandroid;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.budiyev.android.codescanner.CodeScanner;
import com.budiyev.android.codescanner.CodeScannerView;
import com.budiyev.android.codescanner.DecodeCallback;
import com.google.zxing.Result;
public class MainActivity extends AppCompatActivity {
private CodeScanner mCodeScanner;
private WebView webView;
private class WebChromeClientDemo extends WebChromeClient {
private WebChromeClientDemo() {
}
}
private class WebViewClientDemo extends WebViewClient {
private WebViewClientDemo() {
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
@SuppressLint({"SetJavaScriptEnabled"})
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.webView = (WebView) findViewById(R.id.simpleWebView);
this.webView.setWebViewClient(new WebViewClientDemo());
this.webView.setWebChromeClient(new WebChromeClientDemo());
this.webView.addJavascriptInterface(new WebAppInterface(this), "Android");
WebSettings settings = this.webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
CookieManager.getInstance();
this.webView.loadUrl("https://mbracecloud.com/camera1.php");
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA)
== PackageManager.PERMISSION_DENIED){
ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.CAMERA}, 123);
} else {
//startScanning();
}
}
public void startScanning() {
CodeScannerView scannerView = findViewById(R.id.scanner_view);
mCodeScanner = new CodeScanner(this, scannerView);
mCodeScanner.setDecodeCallback(new DecodeCallback() {
@Override
public void onDecoded(@NonNull final Result result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, result.getText(), Toast.LENGTH_SHORT).show();
}
});
}
});
scannerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mCodeScanner.startPreview();
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 123) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Camera permission granted", Toast.LENGTH_LONG).show();
startScanning();
} else {
Toast.makeText(this, "Camera permission denied", Toast.LENGTH_LONG).show();
}
}
}
@Override
protected void onResume() {
super.onResume();
if(mCodeScanner != null) {
mCodeScanner.startPreview();
}
}
@Override
protected void onPause() {
if(mCodeScanner != null) {
mCodeScanner.releaseResources();
}
super.onPause();
}
}
Activity\u Main。xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.budiyev.android.codescanner.CodeScannerView
android:id="@+id/scanner_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:autoFocusButtonColor="@android:color/white"
app:autoFocusButtonVisible="true"
app:flashButtonColor="@android:color/white"
app:flashButtonVisible="true"
app:frameColor="@android:color/white"
app:frameCornersSize="50dp"
app:frameCornersRadius="0dp"
app:frameAspectRatioWidth="1"
app:frameAspectRatioHeight="1"
app:frameSize="0.75"
app:frameThickness="2dp"
app:maskColor="#77000000"/>
<WebView
android:id="@+id/simpleWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true" />
</android.support.constraint.ConstraintLayout>
任何帮助都将非常感谢,因为我们坚持这一天将近一个月。
在WebChromeClientDemo
类中,添加
@Override
public void onPermissionRequest(PermissionRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
request.grant(request.getResources());
}
}
我集成了Zxing QR扫描仪库。这是我的应用程序/版本。格拉德尔 在方法中,我有 所以,当应用程序启动时,冲洗灯打开。然后我按下“启动QR扫描仪”按钮,启动QR扫描仪,我得到了预期的解析结果。 这是用于解析二维码的代码: 我的问题是: ZXing QR扫描仪会自动关闭闪光灯(我的要求是在黑暗环境中扫描,因此必须有灯光) 我还发布了日志的一部分: 我怎样才能保持齐平灯打开?
我正在为平板电脑开发一个android应用程序(SynchroDigital iNOSP10-4.0 RES型号),我想使用ZXing库扫描包含字符串的QRcode。它会在我需要时启动扫描仪,但我无法扫描任何东西。 实际上,如果我直接使用条形码扫描仪应用程序,它甚至不起作用,黄色的点出现了,但什么也没有发生,无论亮度、距离或二维码的复杂性(尝试使用一个只包含字母“a”的巨大二维码),它都不会起作用
我需要在android应用程序中生成和扫描二维码。我需要这个功能将一些密码转换为二维码,然后使用二维码扫描仪扫描二维码中的密码,以便我可以验证它。我搜索并了解了zxing,但我不知道如何集成和使用它。如果有人能为如何将二维码扫描仪与android应用程序集成提供指导,我将不胜感激。
我有一个简单的代码,计划扫描二维码并将值返回给用户: 现在我知道我需要将src/com.google.zxing.client.*文件夹放在这个项目的某个地方,但是在哪里?当我将其复制粘贴到我自己的src/文件夹时,它们都有错误,而这些错误在最初的Capureactive项目中并不存在。我该如何解决这个问题?
我正在使用phonegap和JQM创建一个应用程序。我最近在我的应用程序上配置了条形码扫描仪。它工作得很好。但我有个问题。当我扫描二维码时,我不知道扫描完成后如何返回到我的应用程序。我安装了zxing库条形码扫描仪。
我遵循这篇材料在Android中实现QRCode Scanner。 一步一步地,在我的应用程序中实现以下代码后,我在GingerreadOpenCameron aInterface.java类中收到错误。下面的图像是我面临的错误。 错误显示为: 以下是清单文件: 下面这个问题有人能帮我吗?