二維碼掃描使用很廣泛,在這里記錄二維碼掃描的功能,需要導入第三方的類庫。
步驟一:在項目中導入第三方的類庫,導入方法:往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); } } }
由於所有打開相機的權限和其他操作都放在第三方類庫里面了,所以這里只要調用這個第三方類庫里的類就好了
