下面是一个使用Android Kotlin的示例代码,用于扫描QR码并将用户发送到应用程序:
首先,确保在build.gradle
文件中添加了zxing
库的依赖项:
implementation 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:3.4.0'
然后,在你的Activity中,添加以下代码:
import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.google.zxing.Result
import me.dm7.barcodescanner.zxing.ZXingScannerView
class MainActivity : AppCompatActivity(), ZXingScannerView.ResultHandler {
private val CAMERA_PERMISSION_REQUEST_CODE = 200
private lateinit var scannerView: ZXingScannerView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
scannerView = ZXingScannerView(this)
setContentView(scannerView)
// 检查相机权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.CAMERA),
CAMERA_PERMISSION_REQUEST_CODE
)
}
}
override fun onResume() {
super.onResume()
scannerView.setResultHandler(this)
scannerView.startCamera()
}
override fun onPause() {
super.onPause()
scannerView.stopCamera()
}
override fun handleResult(result: Result) {
val intent = Intent(this, ResultActivity::class.java)
intent.putExtra("result", result.text)
startActivity(intent)
scannerView.resumeCameraPreview(this)
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
scannerView.setResultHandler(this)
scannerView.startCamera()
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
}
}
在上面的代码中,我们创建了一个ZXingScannerView
实例并将其设置为Activity的布局。然后,我们检查相机权限,并在获得权限后开始相机预览。
handleResult
方法用于处理扫描到的QR码结果。在这个示例中,我们将结果放入Intent
中,并启动一个ResultActivity
来显示结果。
最后,我们还需要在AndroidManifest.xml
文件中添加ResultActivity
的声明:
在ResultActivity
中,你可以根据需要进一步处理扫描结果。
希望这个示例能帮到你!