読者です 読者をやめる 読者になる 読者になる

あきちきのひまつぶし

メーカー系SE2年目の凡人が、技術とかグルメとか旅行とか・・・。

Android で 簡単なQRコードリーダーを作る

めも Android

インターンシップで作ったアプリは

  1. QRコードを読み込む
  2. そのコードの情報をサーバーに投げる(WebAPI + JSON
  3. 投げた値を基に情報が帰ってくる
  4. それを枠に表示させる
  5. 情報を改変し、更新を行う

という感じ。簡単にいえばやることは

  • QRコードリーダーの実装
  • アクティビティ間での変数の扱い
  • ネットワーク接続とJSONJavaで扱う処理

ってところ?割と簡単な上に、JSONは今やTwitterでも使うので知っておいて困る事は無い。QRコードの実装から簡単にメモしていこうかと思う。

「ZXing」ライブラリを使う、2.0もしくは2.1が扱いやすい。libsにcore.jarとjavase.jarをぶち込み、「Javaのビルド・パス」からこの2つを指定して使う。ソースは多分そこらじゅうに落ちてるけどGitHubかどっかに貼っておく。

  • アクティビティ間の変数渡し

QRコードで読んだ値を、次のアクティビティにぶっ飛ばすには色々手段はあるけどIntentにKeywordとしてくっつけるのが大変便利

Intent intentw = new Intent(QRActivity.this, ResultActivity.class);

            intentw.putExtra("keyword", result.getText().toString());

startActivity(intentw);

これで、QRActivityからResultActivityにkeywordという名前でresultを送る事ができる。

これをResultActivityでゲットするには

String c = intent.getStringExtra("keyword");

とすれば、cにQRで読んだResultが格納される。大変便利。色々渡す為のコードが落ちてるとおもうけど、多分アクティビティを跨ぐならこれが一番便利で短い。

  • ネットワーク接続とJSONJavaで扱う処理

なんか、GSONとかっていうライブラリがあるらしいけど、全然知らずに適当に考えてやっちゃった。

            URL url = new URL("http:// **** .com/" + c);

            HttpURLConnection http = (HttpURLConnection)url.openConnection();

            http.setRequestMethod("GET");

            http.connect();

            InputStream in = http.getInputStream();

            byte b[] = new byte[1024];// get byte //

            in.read(b);

            in.close();

            http.disconnect();

 

// byte to String //

            String data = new String(b);

// String to JSONObject //

            JSONObject jsonObject = new JSONObject(data);

            String A = jsonObject.get("A").toString();

            String B = jsonObject.get("B").toString();

            String C = jsonObject.get("C").toString();

上から説明するとURLを生成(cはQRで読み取った値)→URLに接続→GETメソッドで接続→表示されるものをin.readでbyte bに全部格納→接続を切る

→byteをStringに直す→StringをJSONObjectに直す→それぞれのパラメータを取り出す→A,B,CにQRで読み取った値cによってサーバーから返されたA,B,Cの情報が格納される。→HAPPY!!!

 

(多分GSONとか使った方が早い)

今はTwitterアプリでも作りたいなーとか思いつつインターンで今度は仮想サーバーを立てて色々やるのでそれ勉強したりしています。これからもJavaで自分が躓いたところをブログに書いていこうと思うから、困った人がいたら是非チェックしてほしい。

 

検索ワードは多分コレ↓

JSON,Android,Java,外部変数,アクティビティ,QRコード

 

広告を非表示にする
Copyright (C) 2013-2017 lapisizm All Rights Reserved.