import com.narutohuo.xindazhou.qrcode.factory.QRCodeManagerFactory
import com.narutohuo.xindazhou.qrcode.api.QRCodeManager
val qrCodeManager: QRCodeManager = QRCodeManagerFactory.getInstance()
qrCodeManager.scanQRCode(this) { response ->
if (response.success) {
// 扫码成功
val qrCodeContent = response.data
} else {
// 扫码失败或取消
val error = response.errorMessage
}
}
import com.narutohuo.xindazhou.qrcode.factory.QRCodeManagerFactory
import com.narutohuo.xindazhou.qrcode.api.QRCodeManager
import com.narutohuo.xindazhou.qrcode.model.QRCodeResponse
class MainActivity : AppCompatActivity() {
private val qrCodeManager: QRCodeManager = QRCodeManagerFactory.getInstance()
fun startScan() {
qrCodeManager.scanQRCode(this) { response ->
handleScanResult(response)
}
}
private fun handleScanResult(response: QRCodeResponse) {
if (response.success) {
val content = response.data
// 处理扫码结果
processQRCode(content)
} else {
// 处理错误
showError(response.errorMessage)
}
}
private fun processQRCode(content: String?) {
// 业务逻辑处理
}
private fun showError(message: String?) {
// 显示错误
}
}
注意:✅ 不需要实现 onActivityResult!内部已经自动处理了
interface QRCodeManager {
/**
* 扫描二维码
*
* @param activity Activity上下文(必须是 FragmentActivity 或 AppCompatActivity)
* @param callback 扫描结果回调,返回QRCodeResponse
*/
fun scanQRCode(activity: Activity, callback: (QRCodeResponse) -> Unit)
}
data class QRCodeResponse(
val success: Boolean, // 是否成功
val data: String? = null, // 二维码内容
val errorCode: Int? = null, // 错误码
val errorMessage: String? = null, // 错误消息
val timestamp: Long = System.currentTimeMillis() // 时间戳
)
AppCompatActivity 或 FragmentActivity(内部使用 Fragment 桥接 ActivityResultLauncher)2.12.0.3001.6.11.6.21.8.2import com.narutohuo.xindazhou.ble.factory.BLEServiceFactory
import com.narutohuo.xindazhou.ble.api.BLEService
val bleService: BLEService = BLEServiceFactory.create(context)
bleService.connect(device) { response ->
// 处理结果
}
import com.narutohuo.xindazhou.qrcode.factory.QRCodeManagerFactory
import com.narutohuo.xindazhou.qrcode.api.QRCodeManager
val qrCodeManager: QRCodeManager = QRCodeManagerFactory.getInstance()
qrCodeManager.scanQRCode(this) { response ->
// 处理结果
}
与BLE模块完全一致的调用方式! 🎉