天天看點

Android第七期 - 二維碼掃描與生成圖

    首先是MainActivity.java部分:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

<code>package</code> <code>com.qrcode;</code>

<code>import</code> <code>com.google.zxing.WriterException;</code>

<code>import</code> <code>com.zxing.activity.CaptureActivity;</code>

<code>import</code> <code>com.zxing.encoding.EncodingHandler;</code>

<code>import</code> <code>android.app.Activity;</code>

<code>import</code> <code>android.content.Intent;</code>

<code>import</code> <code>android.graphics.Bitmap;</code>

<code>import</code> <code>android.os.Bundle;</code>

<code>import</code> <code>android.view.View;</code>

<code>import</code> <code>android.view.View.OnClickListener;</code>

<code>import</code> <code>android.widget.Button;</code>

<code>import</code> <code>android.widget.EditText;</code>

<code>import</code> <code>android.widget.ImageView;</code>

<code>import</code> <code>android.widget.TextView;</code>

<code>import</code> <code>android.widget.Toast;</code>

<code>public</code> <code>class</code> <code>MainActivity </code><code>extends</code> <code>Activity {</code>

<code>    </code><code>private</code> <code>TextView resultTextView;</code>

<code>    </code><code>private</code> <code>EditText qrStrEditText;</code>

<code>    </code><code>private</code> <code>ImageView qrImgImageView;</code>

<code>    </code> 

<code>    </code><code>@Override</code>

<code>    </code><code>public</code> <code>void</code> <code>onCreate(Bundle savedInstanceState) {</code>

<code>        </code><code>super</code><code>.onCreate(savedInstanceState);</code>

<code>        </code><code>setContentView(R.layout.main);</code>

<code>        </code> 

<code>        </code><code>resultTextView = (TextView) </code><code>this</code><code>.findViewById(R.id.tv_scan_result);</code>

<code>        </code><code>qrStrEditText = (EditText) </code><code>this</code><code>.findViewById(R.id.et_qr_string);</code>

<code>        </code><code>qrImgImageView = (ImageView) </code><code>this</code><code>.findViewById(R.id.iv_qr_image);</code>

<code>        </code><code>Button scanBarCodeButton = (Button) </code><code>this</code><code>.findViewById(R.id.btn_scan_barcode);</code>

<code>        </code><code>scanBarCodeButton.setOnClickListener(</code><code>new</code> <code>OnClickListener() {</code>

<code>            </code> 

<code>            </code><code>@Override</code>

<code>            </code><code>public</code> <code>void</code> <code>onClick(View v) {</code>

<code>                    </code> 

<code>                </code><code>Intent openCameraIntent = </code><code>new</code> <code>Intent(MainActivity.</code><code>this</code><code>,CaptureActivity.</code><code>class</code><code>);</code>

<code>                </code><code>startActivityForResult(openCameraIntent, </code><code>0</code><code>);</code>

<code>            </code><code>}</code>

<code>        </code><code>});</code>

<code>        </code><code>Button generateQRCodeButton = (Button) </code><code>this</code><code>.findViewById(R.id.btn_add_qrcode);</code>

<code>        </code><code>generateQRCodeButton.setOnClickListener(</code><code>new</code> <code>OnClickListener() {</code>

<code>                </code><code>try</code> <code>{</code>

<code>                    </code><code>String contentString = qrStrEditText.getText().toString();</code>

<code>                    </code><code>if</code> <code>(!contentString.equals(</code><code>""</code><code>)) {</code>

<code>                        </code> 

<code>                        </code><code>Bitmap qrCodeBitmap = EncodingHandler.createQRCode(contentString, </code><code>350</code><code>);</code>

<code>                        </code><code>qrImgImageView.setImageBitmap(qrCodeBitmap);</code>

<code>                    </code><code>}</code><code>else</code> <code>{</code>

<code>                        </code><code>Toast.makeText(MainActivity.</code><code>this</code><code>, </code><code>"Text can not be empty"</code><code>, Toast.LENGTH_SHORT).show();</code>

<code>                    </code><code>}</code>

<code>                </code><code>} </code><code>catch</code> <code>(WriterException e) {</code>

<code>                    </code><code>// TODO Auto-generated catch block</code>

<code>                    </code><code>e.printStackTrace();</code>

<code>                </code><code>}</code>

<code>    </code><code>}</code>

<code>    </code><code>protected</code> <code>void</code> <code>onActivityResult(</code><code>int</code> <code>requestCode, </code><code>int</code> <code>resultCode, Intent data) {</code>

<code>        </code><code>super</code><code>.onActivityResult(requestCode, resultCode, data);</code>

<code>        </code><code>if</code> <code>(resultCode == RESULT_OK) {</code>

<code>            </code><code>Bundle bundle = data.getExtras();</code>

<code>            </code><code>String scanResult = bundle.getString(</code><code>"result"</code><code>);</code>

<code>            </code><code>resultTextView.setText(scanResult);</code>

<code>        </code><code>}</code>

<code>}</code>

    下面就是構成拍攝頁面的部分由于很多都是繼承的代碼,這裡我就不粘貼了,給大家一個圖看一下,下面放出整理後的代碼。

    最後别忘了給權限部分:

<code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"utf-8"</code><code>?&gt;</code>

<code>&lt;</code><code>manifest</code> <code>xmlns:android</code><code>=</code><code>"http://schemas.android.com/apk/res/android"</code>

<code>      </code><code>package</code><code>=</code><code>"com.qrcode"</code>

<code>      </code><code>android:versionCode</code><code>=</code><code>"1"</code>

<code>      </code><code>android:versionName</code><code>=</code><code>"1.0"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>uses-sdk</code> <code>android:minSdkVersion</code><code>=</code><code>"7"</code> <code>/&gt;</code>

<code>    </code><code>&lt;</code><code>uses-permission</code> <code>android:name</code><code>=</code><code>"android.permission.VIBRATE"</code> <code>/&gt;  </code><code>&lt;!-- 震動權限 --&gt;</code>

<code>    </code><code>&lt;</code><code>uses-permission</code> <code>android:name</code><code>=</code><code>"android.permission.CAMERA"</code> <code>/&gt;</code>

<code>    </code><code>&lt;</code><code>uses-feature</code> <code>android:name</code><code>=</code><code>"android.hardware.camera"</code> <code>/&gt;        </code><code>&lt;!-- 使用照相機權限 --&gt;</code>

<code>    </code><code>&lt;</code><code>uses-feature</code> <code>android:name</code><code>=</code><code>"android.hardware.camera.autofocus"</code> <code>/&gt;   </code><code>&lt;!-- 自動聚焦權限 --&gt;</code>

<code>    </code><code>&lt;</code><code>application</code> <code>android:icon</code><code>=</code><code>"@drawable/icon"</code> <code>android:label</code><code>=</code><code>"@string/app_name"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>activity</code> <code>android:name</code><code>=</code><code>".MainActivity"</code>

<code>                  </code><code>android:label</code><code>=</code><code>"@string/app_name"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>intent-filter</code><code>&gt;</code>

<code>                </code><code>&lt;</code><code>action</code> <code>android:name</code><code>=</code><code>"android.intent.action.MAIN"</code> <code>/&gt;</code>

<code>                </code><code>&lt;</code><code>category</code> <code>android:name</code><code>=</code><code>"android.intent.category.LAUNCHER"</code> <code>/&gt;</code>

<code>            </code><code>&lt;/</code><code>intent-filter</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>activity</code><code>&gt;</code>

<code>        </code><code>&lt;!-- 隐藏鍵盤 --&gt;</code><code>&lt;!-- 全屏 --&gt;</code>

<code>        </code><code>&lt;</code><code>activity</code>

<code>            </code><code>android:configChanges</code><code>=</code><code>"orientation|keyboardHidden"</code>    

<code>            </code><code>android:name</code><code>=</code><code>"com.zxing.activity.CaptureActivity"</code>

<code>            </code><code>android:screenOrientation</code><code>=</code><code>"portrait"</code>

<code>            </code><code>android:theme</code><code>=</code><code>"@android:style/Theme.NoTitleBar.Fullscreen"</code>    

<code>            </code><code>android:windowSoftInputMode</code><code>=</code><code>"stateAlwaysHidden"</code> <code>&gt;</code>

<code>    </code><code>&lt;/</code><code>application</code><code>&gt;</code>

<code>&lt;/</code><code>manifest</code><code>&gt;</code>

    效果圖:

<a href="http://s3.51cto.com/wyfs02/M02/37/E3/wKioL1OxFb_zt_-4AADkx6NL6no606.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/37/E4/wKiom1OxFfDw3dm4AAKwiP5PSkk617.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/37/E3/wKioL1OxFcHiHesEAAHGfpqHA5k023.jpg" target="_blank"></a>

<a href="http://down.51cto.com/data/2364587" target="_blank">附件:http://down.51cto.com/data/2364587</a>

本文轉自 吳雨聲 51CTO部落格,原文連結:http://blog.51cto.com/liangxiao/1432467,如需轉載請自行聯系原作者

繼續閱讀