使用安卓实现一个二维码扫描功能(基于Android Studio)

时间:2024-03-05 13:27:28

  二维码扫描使用很广泛,在这里记录二维码扫描的功能,需要导入第三方的类库。

 

步骤一:在项目中导入第三方的类库,导入方法:往Android Studio中导入第三方类库文件这篇博客中有详细记录

 

步骤二:定义一个xml界面布局:一个按钮用于启动二维码扫描功能,一个TextView用于显示从二维码中获得的数据

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">



    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="二维码扫描"
        />


    <TextView
        android:id="@+id/te"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="123"
        />


</LinearLayout>

 

步骤三: 在MainActivity.java中调用第三方中的类库里的类

public class MainActivity extends AppCompatActivity {
    Button btn;
    TextView te;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.btn);
        te = (TextView) findViewById(R.id.te);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA)
                        != PackageManager.PERMISSION_GRANTED) {
                    //申请WRITE_EXTERNAL_STORAGE权限
                    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA},
                            1);}//这一块红色的是开启手机里的相机权限,安卓6.0以后的系统需要,否则会报错
                Intent intent = new Intent(MainActivity.this, CaptureActivity.class);//黄色是第三方类库里面的类
                startActivityForResult(intent,0);
            }
        });
    }

//    这个方法是用来获取从另一个界面传回的值的,有不明白这个方法的作用和Intent类的使用的可以看另外一篇博客安卓的组件载体Intent
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==RESULT_OK){
            String s = data.getStringExtra("result");//这个绿色的result是在第三方类库里面定义的key
            te.setText(s);
        }
    }
}

 

 

由于所有打开相机的权限和其他操作都放在第三方类库里面了,所以这里只要调用这个第三方类库里的类就好了