第三十五枪(将二维码扫描和生成Demo引入项目实例)

网上有很多关于二维码扫码和二维码生成的Demo,你可能不想透彻的了解它是如何实现的,但是你必须要知道如何引入到你的项目之中,,我们研究一下如何将这些Demo引入到自己的项目之中。 我也写了一个Demo,看一下它的目录结构。

这些打红色箭头的部分都是必须要复制到你的项目之中的。引入到你的项目之后会有一些报错,你可以根据错误提示进行修改。 strings里面有一个字段要加入到你的项目之中

colors.xml中有一些你也要复制过去,还好他们都会报错提醒你。 下面我们看一下Demo的代码: 1.MainActivity.java:

package com.example.scancodedemo;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;{CODE=1;private Button mScanCode;private Button mCreateCode;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mCreateCode=(Button)findViewById(R.id.btn_create_code);mScanCode=(Button)findViewById(R.id.btn_scan_code);mCreateCode.setOnClickListener(this);mScanCode.setOnClickListener(this);}(View v) {switch (v.getId()) {case R.id.btn_create_code:Intent intent1=new Intent(MainActivity.this,CodeShowActivity.class);startActivity(intent1);break;case R.id.btn_scan_code:Intent intent=new Intent(MainActivity.this,MipcaActivityCapture.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivityForResult(intent, CODE);break;default:break;}}(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode) {case CODE:if(resultCode == Activity.RESULT_OK){Bundle bundle = data.getExtras();Toast.makeText(MainActivity.this, bundle.getString(“result”), Toast.LENGTH_SHORT).show();//result中保留了二维码的内容}break;default:break;}}}

2.MipcaActivity.java(二维码处理类):

package com.example.scancodedemo;import java.io.IOException;import java.util.Vector;import android.app.Activity;import android.content.Intent;import android.content.res.AssetFileDescriptor;import android.graphics.Bitmap;import android.media.AudioManager;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Bundle;import android.os.Handler;import android.os.Vibrator;import android.view.SurfaceHolder;import android.view.SurfaceHolder.Callback;import android.view.SurfaceView;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;import com.google.zxing.BarcodeFormat;import com.google.zxing.Result;import com.mining.app.zxing.camera.CameraManager;import com.mining.app.zxing.decoding.CaptureActivityHandler;import com.mining.app.zxing.decoding.InactivityTimer;import com.mining.app.zxing.view.ViewfinderView;/** * Initial the camera * @author Ryan.Tang */{private CaptureActivityHandler handler;private ViewfinderView viewfinderView;private boolean hasSurface;private Vector<BarcodeFormat> decodeFormats;private String characterSet;private InactivityTimer inactivityTimer;private MediaPlayer mediaPlayer;private boolean playBeep;BEEP_VOLUME = 0.10f;private boolean vibrate;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.scan_code_activity);//ViewUtil.addTopView(getApplicationContext(), this, R.string.scan_card);CameraManager.init(getApplication());viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view);Button mButtonBack = (Button) findViewById(R.id.button_back);mButtonBack.setOnClickListener(new OnClickListener() {(View v) {MipcaActivityCapture.this.finish();}});hasSurface = false;inactivityTimer = new InactivityTimer(this);}() {super.onResume();SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);SurfaceHolder surfaceHolder = surfaceView.getHolder();if (hasSurface) {initCamera(surfaceHolder);} else {surfaceHolder.addCallback(this);surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);}decodeFormats = null;characterSet = null;playBeep = true;AudioManager audioService = (AudioManager) getSystemService(AUDIO_SERVICE);if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) {playBeep = false;}initBeepSound();vibrate = true;}() {super.onPause();if (handler != null) {handler.quitSynchronously();handler = null;}CameraManager.get().closeDriver();}() {inactivityTimer.shutdown();super.onDestroy();}/**** @param result* @param barcode*/(Result result, Bitmap barcode) {inactivityTimer.onActivity();playBeepSoundAndVibrate();String resultString = result.getText();if (resultString.equals(“”)) {Toast.makeText(MipcaActivityCapture.this, “Scan failed!”, Toast.LENGTH_SHORT).show();}else {Intent resultIntent = new Intent();Bundle bundle = new Bundle();bundle.putString(“result”, resultString);bundle.putParcelable(“bitmap”, barcode);resultIntent.putExtras(bundle);this.setResult(RESULT_OK, resultIntent);}MipcaActivityCapture.this.finish();}(SurfaceHolder surfaceHolder) {try {CameraManager.get().openDriver(surfaceHolder);} catch (IOException ioe) {return;} catch (RuntimeException e) {return;}if (handler == null) {handler = new CaptureActivityHandler(this, decodeFormats,characterSet);}}(SurfaceHolder holder, int format, int width,int height) {}(SurfaceHolder holder) {if (!hasSurface) {hasSurface = true;initCamera(holder);}}(SurfaceHolder holder) {hasSurface = false;}public ViewfinderView getViewfinderView() {return viewfinderView;}public Handler getHandler() {return handler;}() {viewfinderView.drawViewfinder();}() {if (playBeep && mediaPlayer == null) {setVolumeControlStream(AudioManager.STREAM_MUSIC);mediaPlayer = new MediaPlayer();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.setOnCompletionListener(beepListener);AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.beep);try {mediaPlayer.setDataSource(file.getFileDescriptor(),file.getStartOffset(), file.getLength());file.close();mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME);mediaPlayer.prepare();} catch (IOException e) {mediaPlayer = null;}}}VIBRATE_DURATION = 200L;() {if (playBeep && mediaPlayer != null) {mediaPlayer.start();}if (vibrate) {Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);vibrator.vibrate(VIBRATE_DURATION);}}/*** When the beep has finished playing, rewind to queue up another one.*/private final OnCompletionListener beepListener = new OnCompletionListener() {(MediaPlayer mediaPlayer) {mediaPlayer.seekTo(0);}};}又或者是后天的,我们不断学习,努力进取的路途中辛苦寻到的武器。

第三十五枪(将二维码扫描和生成Demo引入项目实例)

相关文章:

你感兴趣的文章:

标签云: