ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 18403|回复: 0
上一主题 下一主题
[教程]

二维码简化

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-28 16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
92Xml代码       
   
Xml代码       
   
Java代码       
   
Java代码       
   
Java代码       
   
Java代码       
   
Java代码       
   
Java代码       
   
Java代码       
   
public class CaptureActivity extends Activity implements Callback {        private CaptureActivityHandler handler;      private ViewfinderView viewfinderView;      private boolean hasSurface;      private Vector<BarcodeFormat> decodeFormats;      private String characterSet;      private TextView txtResult;      private InactivityTimer inactivityTimer;      private MediaPlayer mediaPlayer;      private boolean playBeep;      private static final float BEEP_VOLUME = 0.10f;      private boolean vibrate;        /** Called when the activity is first created. */      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);          //初始化 CameraManager          CameraManager.init(getApplication());            viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view);          txtResult = (TextView) findViewById(R.id.txtResult);          hasSurface = false;          inactivityTimer = new InactivityTimer(this);      }        @Override      protected void onResume() {          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;      }        @Override      protected void onPause() {          super.onPause();          if (handler != null) {              handler.quitSynchronously();              handler = null;          }          CameraManager.get().closeDriver();      }        @Override      protected void onDestroy() {          inactivityTimer.shutdown();          super.onDestroy();      }        private void initCamera(SurfaceHolder surfaceHolder) {          try {              CameraManager.get().openDriver(surfaceHolder);          } catch (IOException ioe) {              return;          } catch (RuntimeException e) {              return;          }          if (handler == null) {              handler = new CaptureActivityHandler(this, decodeFormats,                      characterSet);          }      }        @Override      public void surfaceChanged(SurfaceHolder holder, int format, int width,              int height) {        }        @Override      public void surfaceCreated(SurfaceHolder holder) {          if (!hasSurface) {              hasSurface = true;              initCamera(holder);          }        }        @Override      public void surfaceDestroyed(SurfaceHolder holder) {          hasSurface = false;        }        public ViewfinderView getViewfinderView() {          return viewfinderView;      }        public Handler getHandler() {          return handler;      }        public void drawViewfinder() {          viewfinderView.drawViewfinder();        }        public void handleDecode(Result obj, Bitmap barcode) {          inactivityTimer.onActivity();          viewfinderView.drawResultBitmap(barcode);           playBeepSoundAndVibrate();          txtResult.setText(obj.getBarcodeFormat().toString() + ":"                  + obj.getText());      }        private void initBeepSound() {          if (playBeep && mediaPlayer == null) {              // The volume on STREAM_SYSTEM is not adjustable, and users found it              // too loud,              // so we now play on the music stream.              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;              }          }      }        private static final long VIBRATE_DURATION = 200L;        private void playBeepSoundAndVibrate() {          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() {          public void onCompletion(MediaPlayer mediaPlayer) {              mediaPlayer.seekTo(0);          }      };     
   
   
简化过的包结构图:
 
  
 简化后的ZXing 更加方便我们了解ZXing项目 是如何解码的。只要仔细查看源码,进行单点跟踪调试,相信大家很容易能理解。
   

上一篇:Android开发笔记第四篇(应用解析)
下一篇:Android游戏开发之处理按键的响应方式(二十二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2025-7-30 01:51 , Processed in 0.073038 second(s), 15 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2025 ZNDS.Com

快速回复 返回顶部 返回列表