Android生成二维码支付,可以使用第三方库Zxing来实现。
首先,在Module的build.gradle文件中添加以下依赖:
```
implementation 'com.google.zxing:core:3.3.0'
implementation 'me.dm7.barcodescanner:zxing:1.9.13'
```
然后,在布局文件中添加一个SurfaceView和一个Button:
```xml
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> android:id="@+id/scanner_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/>
```
接下来,在MainActivity中添加以下代码:
```java
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.NonNull;
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;
public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private static final int CAMERA_PERMISSION_REQUEST_CODE = 200;
private ZXingScannerView scannerView;
private Button btn_scan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
scannerView = findViewById(R.id.scanner_view);
btn_scan = findViewById(R.id.btn_scan);
btn_scan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 扫描二维码
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
scannerView.setResultHandler(MainActivity.this);
scannerView.startCamera();
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE);
}
}
});
}
@Override
public void onResume() {
super.onResume();
scannerView.setResultHandler(this);
scannerView.startCamera();
}
@Override
public void onPause() {
super.onPause();
scannerView.stopCamera();
}
@Override
public void handleResult(Result rawResult) {
// 获取扫描结果
String result = rawResult.getText();
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
// 在此处处理扫描结果,并进行相应的支付处理
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
scannerView.setResultHandler(this);
scannerView.startCamera();
} else {
Toast.makeText(this, "Camera permission denied", Toast.LENGTH_SHORT).show();
}
}
}
}
```
以上代码中,首先在onCreate方法中初始化scannerView和btn_scan,并为btn_scan设置点击,点击按钮后请求拍照权限并开始扫描二维码。
然后实现ZXingScannerView.ResultHandler接口,这样在扫描到二维码后就会回调handleResult方法,可以在该方法中处理扫描结果。
最后,在onResume方法中重新设置扫描结果处理器,确保每次扫描结果都会回调handleResult方法;在onPause方法中停止相机预览,避免造成资源浪费。
需要注意的是,在AndroidManifest.xml文件中添加以下权限:
```xml
```
另外,需要获取用户的相机权限,可以通过ActivityCompat.requestPermissions进行请求,并在onRequestPermissionsResult回调方法中处理权限请求结果。
以上就是Android生成二维码支付的步骤,希望对你有帮助!