Android開發學習之路-二維碼學習

來源:互聯網
上載者:User

標籤:

這個月裝逼有點少了,為什麼呢,因為去考軟體射雞師了,快到兒童節了,趕緊寫篇博紀念一下逝去的青春,唔,請忽略這句話。

 

二維碼其實有很多種,但是我們常見的使用的是一種叫做QRCode的二維碼,像下面這樣的,可以放心的掃,這隻是我的部落客頁連結啦:

關於QR碼編碼的二維碼,我們要知道幾個特點:

1. 掃描時可以從各個角度去掃,也就是旋轉多少度都沒關係,不信嗎?下次去肯德基買單試試咯。

2. 二維碼有容錯率,容錯率越大,產生的二維碼也就越複雜,但是越不容易出錯,並且,當二維碼被遮擋的時候也越容易掃描出來。這裡我上傳的二維碼容錯為30%,可以從左上方開始掃描,大概掃描到範圍的時候就可以識別出來了:

3. 二維碼的字元內容是有限制的,並且內容越多,二維碼越複雜。如果想你的二維碼容易被一些像素低的手機掃描出來,就盡量不要太複雜。

注意:二維碼產生可以通過各種網站來完成,只需要輸入內容即可得到。

 

既然二維碼產生了,我們就要知道怎麼用手機來掃描然後得到二維碼代表的內容,這裡介紹一個最簡單的第三方庫:barcodescaner

我們通過這個庫,可以直接編寫一個用於拍攝並識別的活動,然後通過活動返回的結果進行結果處理,具體的步驟如下:

1. 添加依賴

compile ‘me.dm7.barcodescanner:zxing:1.8.4‘

2. 建立一個活動,代碼如下所示:

public class ScannerActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {    private ZXingScannerView mZXingScannerView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        mZXingScannerView = new ZXingScannerView(this); // 將ZXingScannerView作為布局        setContentView(mZXingScannerView);    }    @Override    protected void onResume() {        super.onResume();        mZXingScannerView.setResultHandler(this); // 設定處理結果回調        mZXingScannerView.startCamera(); // 開啟網路攝影機    }    @Override    protected void onPause() {        super.onPause();        mZXingScannerView.stopCamera(); // 活動失去焦點的時候關閉網路攝影機    }    @Override    public void handleResult(Result result) { // 實現回調介面,將資料回傳並結束活動        Intent data = new Intent();        data.putExtra("text", result.getText());        setResult(RESULT_OK, data);        finish();    }}

3. 在主活動中開啟這個活動,並處理傳回的資料:

public class HomeActivity extends AppCompatActivity {    private TextView mTextView;    private WebView mWebView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_home);        mTextView = (TextView) findViewById(R.id.tv);        mWebView = (WebView) findViewById(R.id.wv);    }    public void scanCode(View view){        startActivityForResult(new Intent(this, ScannerActivity.class), 1);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (resultCode == RESULT_OK){            mTextView.setText(data.getStringExtra("text")); // 顯示識別到的文字            mWebView.loadUrl(data.getStringExtra("text")); // 將識別的內容當作網址載入到WebView        }    }}

4. 添加網路攝影機和訪問網路許可權:

<uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.INTERNET"/>

 

使用這個工具類的方法非常簡單,只需要將一個ZXingScannerView作為整個活動的布局,然後設定解析成功的回調介面,實現回調的方法將資料回傳個主活動即可。

當然,如果是需要一個自訂掃描介面的效果,就沒有這麼簡單了。

 

Android開發學習之路-二維碼學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.