QRコードスキャナーというアプリを経由してバーコードを読み取ることもできる。
QRコードスキャナーの呼び出しにはインテントを使用する。
QRコードスキャナーの呼び出し
- QRコードスキャナーをインテントで呼び出す。
- QRコードスキャナーが端末にインストールされていなければ、AndroidMarketを起動する。
package net.kuttya.barcodescansample; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class BarcodeScanSampleActivity extends Activity { // インテントリクエストコード private static final int REQUEST_SCAN = 0; private static String resultStr; private TextView textResult; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 読み取り結果表示領域 textResult = (TextView)findViewById(R.id.result); } public void clickEventScan(View v) { // バーコードスキャナの呼び出し callBarcodeScanner(); } private void callBarcodeScanner() { Intent intentScan = new Intent("com.google.zxing.client.android.SCAN"); try { startActivityForResult(intentScan, REQUEST_SCAN); } catch(ActivityNotFoundException e) { // バーコードスキャナが端末にインストールされていなければ、 // AndroidMarketを起動する。 Uri uri = Uri.parse("market://details?id=com.google.zxing.client.android"); Intent intentMarket = new Intent(Intent.ACTION_VIEW,uri); try { startActivity(intentMarket); } catch(ActivityNotFoundException ee) { } } } @Override protected void onActivityResult(int request, int result, Intent intent) { switch(request) { case REQUEST_SCAN: if(result == Activity.RESULT_OK) { resultStr = intent.getStringExtra("SCAN_RESULT"); textResult.setText(resultStr); } break; default: break; } } }
- 直接関係しないがレイアウトは次の通り
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/scan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clickEventScan" android:text="scan start" /> <TextView android:id="@+id/result" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
0 件のコメント:
コメントを投稿