Browse Source

add huawei scan in test

dev
MTing 4 days ago
parent
commit
503c37b700
  1. 3
      app/build.gradle
  2. 55
      app/src/main/java/com/ouxuan/oxface/DebugActivity.java
  3. 123
      app/src/main/java/com/ouxuan/oxface/device/HuaWeiScanManager.java
  4. 83
      app/src/main/java/com/ouxuan/oxface/device/HuaWeiScanManagerUsageExample.java
  5. 35
      app/src/main/res/layout/activity_debug.xml
  6. 15
      build.gradle
  7. 4
      oxplugin_padface/build.gradle
  8. 2
      settings.gradle

3
app/build.gradle

@ -88,6 +88,9 @@ dependencies {
// orbbec_module-debug.aar的依赖flatDir方式
implementation(name: 'orbbec_module-debug', ext: 'aar')
//
implementation "com.huawei.hms:scanplus:2.12.0.301"
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'

55
app/src/main/java/com/ouxuan/oxface/DebugActivity.java

@ -22,6 +22,7 @@ import com.baidu.idl.face.main.finance.listener.SdkInitListener;
import com.baidu.idl.face.main.finance.manager.FaceSDKManager;
import com.ouxuan.oxface.device.DeviceUtils;
import com.ouxuan.oxface.device.HuaWeiScanManager;
import com.ouxuan.oxface.network.utils.NetworkUtils;
import com.ouxuan.oxface.utils.AutoStartManager;
import com.ouxuan.oxface.utils.BootSimulationHelper;
@ -198,6 +199,15 @@ public class DebugActivity extends Activity {
checkDeviceConfig();
}
});
// 华为扫码测试按钮
Button btnTestHuaWeiScan = findViewById(R.id.btnTestHuaWeiScan);
btnTestHuaWeiScan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
testHuaWeiScan();
}
});
}
/**
@ -518,6 +528,26 @@ public class DebugActivity extends Activity {
}
/**
* 测试华为扫码功能
*/
private void testHuaWeiScan() {
logMessage("触发华为扫码测试...");
HuaWeiScanManager.doScan(this, new HuaWeiScanManager.ScanResultListener() {
@Override
public void onScanSuccess(String scanResult) {
logMessage("华为扫码成功: " + scanResult);
showToast("扫码成功: " + scanResult);
}
@Override
public void onScanFailed(int errorCode, String errorMsg) {
logMessage("华为扫码失败 - 错误码: " + errorCode + ", 错误信息: " + errorMsg);
showToast("扫码失败: " + errorMsg);
}
});
}
/**
* 在日志输出区域添加消息
* @param message 要添加的消息
*/
@ -552,4 +582,29 @@ public class DebugActivity extends Activity {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 处理华为扫码结果
boolean handled = HuaWeiScanManager.handleScanResult(requestCode, resultCode, data, new HuaWeiScanManager.ScanResultListener() {
@Override
public void onScanSuccess(String scanResult) {
logMessage("华为扫码成功: " + scanResult);
showToast("扫码成功: " + scanResult);
}
@Override
public void onScanFailed(int errorCode, String errorMsg) {
logMessage("华为扫码失败 - 错误码: " + errorCode + ", 错误信息: " + errorMsg);
showToast("扫码失败: " + errorMsg);
}
});
if (!handled) {
// 如果没有处理扫码结果可以在这里处理其他ActivityResult
logMessage("未处理扫码结果,继续处理其他ActivityResult");
}
}
}

123
app/src/main/java/com/ouxuan/oxface/device/HuaWeiScanManager.java

@ -0,0 +1,123 @@
package com.ouxuan.oxface.device;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import com.huawei.hms.hmsscankit.ScanUtil;
import com.huawei.hms.ml.scan.HmsScan;
import com.huawei.hms.ml.scan.HmsScanAnalyzerOptions;
/**
* 华为统一扫码管理器
* 用于调起华为扫码功能并处理扫码结果
*/
public class HuaWeiScanManager {
private static final String TAG = "HuaWeiScanManager";
// 请求码
public static final int REQUEST_CODE_SCAN = 1003;
// 扫码结果监听器
public interface ScanResultListener {
/**
* 扫码成功回调
* @param scanResult 扫码结果
*/
void onScanSuccess(String scanResult);
/**
* 扫码失败回调
* @param errorCode 错误码
* @param errorMsg 错误信息
*/
void onScanFailed(int errorCode, String errorMsg);
}
/**
* 执行调起华为扫码功能
* @param activity 当前Activity
* @param listener 扫码结果监听器
*/
public static void doScan(Activity activity, ScanResultListener listener) {
Log.d(TAG, "执行调起华为扫码功能");
try {
// 创建扫码选项
HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator()
.setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE)
.setPhotoMode(false)
.setShowGuide(true)
.setViewType(1)
.create();
// 调用ScanUtil.startScan方法
ScanUtil.startScan(activity, REQUEST_CODE_SCAN, options);
} catch (Exception e) {
Log.e(TAG, "调起华为扫码功能失败: " + e.getMessage(), e);
if (listener != null) {
listener.onScanFailed(-1, "调起扫码功能失败: " + e.getMessage());
}
}
}
/**
* 处理扫码结果
* 需要在Activity的onActivityResult方法中调用此方法
*
* @param requestCode 请求码
* @param resultCode 结果码
* @param data 返回数据
* @param listener 扫码结果监听器
* @return 是否处理了扫码结果
*/
public static boolean handleScanResult(int requestCode, int resultCode, Intent data, ScanResultListener listener) {
if (requestCode == REQUEST_CODE_SCAN) {
if (resultCode == Activity.RESULT_OK && data != null) {
// 获取扫码结果
HmsScan scanResult = data.getParcelableExtra(ScanUtil.RESULT);
if (scanResult != null && listener != null) {
listener.onScanSuccess(scanResult.originalValue);
Log.d(TAG, "扫码成功: " + scanResult.originalValue);
return true;
} else {
if (listener != null) {
listener.onScanFailed(-2, "扫码结果为空");
}
Log.w(TAG, "扫码结果为空");
return true;
}
} else {
if (listener != null) {
listener.onScanFailed(resultCode, "扫码取消或失败");
}
Log.w(TAG, "扫码取消或失败, resultCode: " + resultCode);
return true;
}
}
return false;
}
/**
* 简化版扫码方法不使用监听器
* @param activity 当前Activity
*/
public static void doScan(Activity activity) {
Log.d(TAG, "执行调起华为扫码功能(简化版)");
try {
// 创建扫码选项
HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator()
.setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE)
.setPhotoMode(false)
.setShowGuide(true)
.setViewType(1)
.create();
// 调用ScanUtil.startScan方法
ScanUtil.startScan(activity, REQUEST_CODE_SCAN, options);
} catch (Exception e) {
Log.e(TAG, "调起华为扫码功能失败: " + e.getMessage(), e);
}
}
}

83
app/src/main/java/com/ouxuan/oxface/device/HuaWeiScanManagerUsageExample.java

@ -0,0 +1,83 @@
package com.ouxuan.oxface.device;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.ouxuan.oxface.device.HuaWeiScanManager;
/**
* HuaWeiScanManager使用示例
* 展示如何在Activity中使用HuaWeiScanManager进行扫码
*/
public class HuaWeiScanManagerUsageExample extends Activity {
private static final String TAG = "ScanUsageExample";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_scan_example);
// 调用扫码功能示例
startScan();
}
/**
* 启动扫码
*/
private void startScan() {
HuaWeiScanManager.doScan(this, new HuaWeiScanManager.ScanResultListener() {
@Override
public void onScanSuccess(String scanResult) {
Log.d(TAG, "扫码成功: " + scanResult);
Toast.makeText(HuaWeiScanManagerUsageExample.this, "扫码结果: " + scanResult, Toast.LENGTH_LONG).show();
// 处理扫码结果
handleScanResult(scanResult);
}
@Override
public void onScanFailed(int errorCode, String errorMsg) {
Log.e(TAG, "扫码失败, 错误码: " + errorCode + ", 错误信息: " + errorMsg);
Toast.makeText(HuaWeiScanManagerUsageExample.this, "扫码失败: " + errorMsg, Toast.LENGTH_LONG).show();
}
});
}
/**
* 处理扫码结果
* @param scanResult 扫码结果
*/
private void handleScanResult(String scanResult) {
// 在这里处理扫码结果
// 例如解析二维码内容跳转页面等
Log.d(TAG, "处理扫码结果: " + scanResult);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 处理扫码结果
boolean handled = HuaWeiScanManager.handleScanResult(requestCode, resultCode, data, new HuaWeiScanManager.ScanResultListener() {
@Override
public void onScanSuccess(String scanResult) {
Log.d(TAG, "扫码成功: " + scanResult);
Toast.makeText(HuaWeiScanManagerUsageExample.this, "扫码结果: " + scanResult, Toast.LENGTH_LONG).show();
handleScanResult(scanResult);
}
@Override
public void onScanFailed(int errorCode, String errorMsg) {
Log.e(TAG, "扫码失败, 错误码: " + errorCode + ", 错误信息: " + errorMsg);
Toast.makeText(HuaWeiScanManagerUsageExample.this, "扫码失败: " + errorMsg, Toast.LENGTH_LONG).show();
}
});
if (!handled) {
// 如果没有处理扫码结果可以在这里处理其他ActivityResult
Log.d(TAG, "未处理扫码结果,继续处理其他ActivityResult");
}
}
}

35
app/src/main/res/layout/activity_debug.xml

@ -213,6 +213,41 @@
</LinearLayout>
<!-- 第六行按钮 - 新增华为扫码测试按钮 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="8dp">
<Button
android:id="@+id/btnTestHuaWeiScan"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="华为扫码测试"
android:layout_marginEnd="4dp"
android:textSize="12sp" />
<!-- 占位按钮,保持布局对称 -->
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="invisible"
android:layout_marginStart="4dp"
android:layout_marginEnd="4dp" />
<!-- 占位按钮,保持布局对称 -->
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="invisible"
android:layout_marginStart="4dp" />
</LinearLayout>
</LinearLayout>
</ScrollView>

15
build.gradle

@ -3,6 +3,7 @@ buildscript {
repositories {
google()
mavenCentral()
maven { url 'https://developer.huawei.com/repo/' } // HMS仓库
}
dependencies {
classpath 'com.android.tools.build:gradle:8.7.2'
@ -11,6 +12,20 @@ buildscript {
}
}
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://developer.huawei.com/repo/' } // HMS仓库
maven { url "https://jitpack.io" }
flatDir {
dirs '../facelibrary/libs'
dirs '../app/libs'
dirs 'app/libs'
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

4
oxplugin_padface/build.gradle

@ -81,8 +81,8 @@ dependencies {
}
//
// implementation "com.huawei.hms:scan:2.12.0.301"
// implementation "com.huawei.hms:scanplus:2.12.0.301"
api "com.huawei.hms:scan:2.12.0.301"
api "com.huawei.hms:scanplus:2.12.0.301"
//SDK
implementation project(':facelibrary')

2
settings.gradle

@ -11,6 +11,7 @@ dependencyResolutionManagement {
google()
mavenCentral()
maven { url "https://jitpack.io" }
maven { url 'https://developer.huawei.com/repo/' } // HMS仓库
flatDir {
dirs '../facelibrary/libs'
dirs '../app/libs'
@ -24,3 +25,4 @@ include ':app'
include ':facelibrary'
include ':financelibrary'
include ':datalibrary'
include ':oxplugin_padface'
Loading…
Cancel
Save