- 首先我们需要下载最新版本的 ,非常感谢 xuyisheng的封装。
- 下载完毕后,我们在Android中需要导入的Module是libzxing
- 导入到我们的工程中
找到我们下载后的工程,然后选择,ModuleName名字不要改,如下:
导入后,就成了下面这样了,如下:
接下来我们需要给app添加依赖,如下:
接下来我们需要给app添加依赖,如下:
打开app目录下的src下面的AndroidMainifest.xml,添加权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
MainActivity的代码如下:
package com.example.myapplication;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.huawei.anyoffice.sdk.SDKContext;
import com.huawei.anyoffice.sdk.SDKContextOption;
import com.huawei.anyoffice.sdk.log.Log;
import com.huawei.anyoffice.sdk.login.LoginAgent;
import com.huawei.anyoffice.sdk.login.LoginParam;
import com.huawei.anyoffice.sdk.network.NetChangeCallback;
import com.huawei.anyoffice.sdk.network.NetStatusManager;
import com.xys.libzxing.zxing.activity.CaptureActivity;
import org.json.JSONObject;
import java.io.File;
import java.net.InetSocketAddress;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class MainActivity extends FragmentActivity {
private Button btn;
private TextView tv;
private WebView view;
private String user;
private String result;
//工程对应tag标识
private String TAG = "MyApplication";
private static final int TIME_OUT_PROGRESS = 30;
private static final int TIME_OUT_MILLIS = 5*1000;
//隧道状态回调的处理
private NetChangeCallback callback = new NetChangeCallback() {
@Override
public void onNetChanged(int oldState, int newState, int errorCode) {
Log.e(TAG, String.format("oldState:%d, newState:%d, errorCode:%d, ", oldState, newState, errorCode));
}
};
//js调用安卓,必须加@JavascriptInterface注释的方法才可以被js调用
@JavascriptInterface
public String androidMethod() {
return "{\"fullName\":\"张三\",\"departmentName\":\"科技处\"}";
}
// 打开扫描界面扫描条形码或二维码
@JavascriptInterface
public void openCarema(){
Intent openCameraIntent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(openCameraIntent, 0);
}
// 将扫描到的结果返回一下
@JavascriptInterface
public String getResult(){
return result;
}
// 获取扫描结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
String scanResult = bundle.getString("result");
this.result = scanResult;
view.loadUrl("file:///android_asset/"+result);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// user = login();
view = (WebView) findViewById(R.id.view);
view.clearCache(true);
view.getSettings().setDomStorageEnabled(true);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
view.getSettings().setAppCachePath(appCachePath);
view.getSettings().setAllowFileAccess(true);
view.getSettings().setAppCacheEnabled(true);
view.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
view.getSettings().setJavaScriptEnabled(true);
// view.loadUrl("file:///android_asset/demo.html");
view.loadUrl("http://192.168.0.106:9090");
view.addJavascriptInterface(this, "androidObject");
}
我写的这个Demo大家可以下载下来看看