編輯:關於Android編程
相關閱讀:
Android開發框架之自定義ZXing二維碼掃描界面並解決取景框拉伸問題
此項目源碼地址:請點擊這裡
看一下zxing的項目結構,我這裡直接拿過來用的
看一下掃碼的activity:
package com.fanyafeng.barcode.activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.fanyafeng.barcode.R; import com.fanyafeng.barcode.BaseActivity; import com.fanyafeng.barcode.util.ImageUtil; import com.fanyafeng.barcode.zxing.activity.CaptureActivity; import com.fanyafeng.barcode.zxing.activity.CodeUtils; //需要搭配baseactivity,這裡默認為baseactivity,並且默認Baseactivity為包名的根目錄 public class ScanCodeActivity extends BaseActivity { /** * 掃描跳轉Activity RequestCode */ public static final int REQUEST_CODE = 111; /** * 選擇系統圖片Request Code */ public static final int REQUEST_IMAGE = 112; /** * 請求CAMERA權限碼 */ public static final int REQUEST_CAMERA_PERM = 101; private TextView tvResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_scan_code); //這裡默認使用的是toolbar的左上角標題,如果需要使用的標題為中心的采用下方注釋的代碼,將此注釋掉即可 title = getString(R.string.title_activity_scan_code); initView(); initData(); } //初始化UI空間 private void initView() { tvResult = (TextView) findViewById(R.id.tvResult); } //初始化數據 private void initData() { } @Override public void onClick(View v) { super.onClick(v); switch (v.getId()) { case R.id.btnScan: Intent intent = new Intent(getApplication(), CaptureActivity.class); startActivityForResult(intent, REQUEST_CODE); // 本地掃描,識別相冊中的二維碼 // Intent intent = new Intent(Intent.ACTION_GET_CONTENT); // intent.addCategory(Intent.CATEGORY_OPENABLE); // intent.setType("image/*"); // startActivityForResult(intent, REQUEST_IMAGE); break; } } @Override protected void onActivityResult(final int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /** * 處理二維碼掃描結果 */ if (requestCode == REQUEST_CODE) { //處理掃描結果(在界面上顯示) if (null != data) { Bundle bundle = data.getExtras(); if (bundle == null) { return; } if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) { String result = bundle.getString(CodeUtils.RESULT_STRING); Toast.makeText(this, "解析結果:" + result, Toast.LENGTH_LONG).show(); tvResult.setText(result); } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) { Toast.makeText(ScanCodeActivity.this, "解析二維碼失敗", Toast.LENGTH_LONG).show(); } } } /** * 選擇系統圖片並解析 */ else if (requestCode == REQUEST_IMAGE) { if (data != null) { Uri uri = data.getData(); try { CodeUtils.analyzeBitmap(ImageUtil.getImageAbsolutePath(this, uri), new CodeUtils.AnalyzeCallback() { @Override public void onAnalyzeSuccess(Bitmap mBitmap, String result) { Toast.makeText(ScanCodeActivity.this, "解析結果:" + result, Toast.LENGTH_LONG).show(); tvResult.setText(result); } @Override public void onAnalyzeFailed() { Toast.makeText(ScanCodeActivity.this, "解析二維碼失敗", Toast.LENGTH_LONG).show(); } }); } catch (Exception e) { e.printStackTrace(); } } } else if (requestCode == REQUEST_CAMERA_PERM) { Toast.makeText(this, "從設置頁面返回...", Toast.LENGTH_SHORT).show(); } } }
注釋中有本地二維碼的識別
以上所述是小編給大家介紹的Android利用ZXing掃描二維碼的實例代碼解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!
使用SoundPool播放音效 如果應用程序經常播放密集、急促而又短暫的音效(如游戲音效)那麼使用MediaPlayer顯得有些不太適合了。因為MediaPlayer
本篇使用到的Android Studio版本為1.0, Eclipse ADT版本22.3.0。 主要介紹兩種導入方式: 先用Eclipse導出為Gradle build
在使用eclipse進行安卓java的編程的時候,有時候我們會遇到這樣的問題:那就是無故彈出aapt.exe停止工作的提示,雖然程序不會崩潰,但是這個提示經常彈出很是煩人
說到工程模式,好多非技術流的玩家都很頭疼。手機工程模式給人的印象就是生硬的黑白屏,全屏的英文和代碼命令,就像視窗重新回到了DOS系統,雖然好奇但又怕手機變磚