Java QR扫描仪视图按钮
我是安罗伊德开发公司的大三学生。 我已经实现了一个用于读取二维码的库。我需要在扫描仪的视图中添加一个按钮以切换到另一个屏幕。但不能在扫描仪的活动中执行此操作。错误,错误,错误。你能帮助我吗? 对不起我的英语 扫描器的活动Java QR扫描仪视图按钮,java,android,android-activity,Java,Android,Android Activity,我是安罗伊德开发公司的大三学生。 我已经实现了一个用于读取二维码的库。我需要在扫描仪的视图中添加一个按钮以切换到另一个屏幕。但不能在扫描仪的活动中执行此操作。错误,错误,错误。你能帮助我吗? 对不起我的英语 扫描器的活动 package com.example.qr_readerexample; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; im
package com.example.qr_readerexample;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.PointF;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import com.dlazaro66.qrcodereaderview.QRCodeReaderView;
import com.dlazaro66.qrcodereaderview.QRCodeReaderView.OnQRCodeReadListener;
import static com.example.qr_readerexample.R.layout.content_decoder;
public class DecoderActivity extends AppCompatActivity
implements ActivityCompat.OnRequestPermissionsResultCallback, OnQRCodeReadListener{
private static final int MY_PERMISSION_REQUEST_CAMERA = 0;
private ViewGroup mainLayout;
private TextView resultTextView;
private QRCodeReaderView qrCodeReaderView;
private CheckBox flashlightCheckBox;
private CheckBox enableDecodingCheckBox;
private PointsOverlayView pointsOverlayView;
private Button btnActTwo;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_decoder);
mainLayout = (ViewGroup) findViewById(R.id.main_layout);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED) {
initQRCodeReaderView();
} else {
requestCameraPermission();
}
}
@Override protected void onResume() {
super.onResume();
if (qrCodeReaderView != null) {
qrCodeReaderView.startCamera();
}
}
@Override protected void onPause() {
super.onPause();
if (qrCodeReaderView != null) {
qrCodeReaderView.stopCamera();
}
}
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode != MY_PERMISSION_REQUEST_CAMERA) {
return;
}
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Snackbar.make(mainLayout, "Camera permission was granted.", Snackbar.LENGTH_SHORT).show();
initQRCodeReaderView();
} else {
Snackbar.make(mainLayout, "Camera permission request was denied.", Snackbar.LENGTH_SHORT)
.show();
}
}
// Called when a QR is decoded
// "text" : the text encoded in QR
// "points" : points where QR control points are placed
@Override public void onQRCodeRead(String text, PointF[] points) {
resultTextView.setText(text);
pointsOverlayView.setPoints(points);
}
private void requestCameraPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
Snackbar.make(mainLayout, "Camera access is required to display the camera preview.",
Snackbar.LENGTH_INDEFINITE).setAction("OK", new View.OnClickListener() {
@Override public void onClick(View view) {
ActivityCompat.requestPermissions(DecoderActivity.this, new String[] {
Manifest.permission.CAMERA
}, MY_PERMISSION_REQUEST_CAMERA);
}
}).show();
} else {
Snackbar.make(mainLayout, "Permission is not available. Requesting camera permission.",
Snackbar.LENGTH_SHORT).show();
ActivityCompat.requestPermissions(this, new String[] {
Manifest.permission.CAMERA
}, MY_PERMISSION_REQUEST_CAMERA);
}
}
private void initQRCodeReaderView() {
View content = getLayoutInflater().inflate(content_decoder, mainLayout, true);
qrCodeReaderView = (QRCodeReaderView) content.findViewById(R.id.qrdecoderview);
flashlightCheckBox = (CheckBox) content.findViewById(R.id.flashlight_checkbox);
enableDecodingCheckBox = (CheckBox) content.findViewById(R.id.enable_decoding_checkbox);
pointsOverlayView = (PointsOverlayView) content.findViewById(R.id.points_overlay_view);
qrCodeReaderView.setAutofocusInterval(2000L);
qrCodeReaderView.setOnQRCodeReadListener(this);
qrCodeReaderView.setBackCamera();
flashlightCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
qrCodeReaderView.setTorchEnabled(isChecked);
}
});
enableDecodingCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
qrCodeReaderView.setQRDecodingEnabled(isChecked);
}
});
qrCodeReaderView.startCamera();
还有我的纽扣
Button btnActTwo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnActTwo = (Button) findViewById(R.id.btnActTwo);
btnActTwo.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnActTwo:
Intent intent = new Intent(this, ActivityTwo.class);
startActivity(intent);
break;
default:
break;
}
}
扫描仪布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DecoderActivity"
>
<com.dlazaro66.qrcodereaderview.QRCodeReaderView
android:id="@+id/qrdecoderview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
/>
<com.example.qr_readerexample.PointsOverlayView
android:id="@+id/points_overlay_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<CheckBox
android:id="@+id/flashlight_checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#99000000"
android:checked="false"
android:padding="16dp"
android:text="Вкл/Выкл Вспышку"
android:textColor="#ffffff"
android:textSize="14sp"
android:layout_marginBottom="18dp"
android:layout_above="@+id/btnActTwo"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<CheckBox
android:background="#99000000"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Вкл/Выкл Чтение штрих-кода"
android:textSize="14sp"
android:padding="16dp"
android:textColor="#ffffff"
android:id="@+id/enable_decoding_checkbox"
android:checked="true"
android:layout_above="@+id/flashlight_checkbox"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:id="@+id/btnActTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:background="#99000000"
android:text="@string/constructions"
android:textColor="#ffffff" />
</RelativeLayout>
按钮BTNACTWO是我的按钮。欢迎使用StackOverflow。给我们看一份关于你的错误的日志。请参阅:发布扫描仪活动的布局文件添加扫描仪的布局