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 件のコメント:
コメントを投稿