8 changed files with 318 additions and 2 deletions
-
3app/build.gradle
-
55app/src/main/java/com/ouxuan/oxface/DebugActivity.java
-
123app/src/main/java/com/ouxuan/oxface/device/HuaWeiScanManager.java
-
83app/src/main/java/com/ouxuan/oxface/device/HuaWeiScanManagerUsageExample.java
-
35app/src/main/res/layout/activity_debug.xml
-
15build.gradle
-
4oxplugin_padface/build.gradle
-
2settings.gradle
@ -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); |
|||
} |
|||
} |
|||
} |
@ -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"); |
|||
} |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue