首頁(yè) 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門(mén) / 進(jìn)階 / 社區(qū)互助

新手 | 你問(wèn)我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 16422|回復(fù): 0
上一主題 下一主題
[教程]

二維碼簡(jiǎn)化

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
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);          }      };     
   
   
簡(jiǎn)化過(guò)的包結(jié)構(gòu)圖:
 
  
 簡(jiǎn)化后的ZXing 更加方便我們了解ZXing項(xiàng)目 是如何解碼的。只要仔細(xì)查看源碼,進(jìn)行單點(diǎn)跟蹤調(diào)試,相信大家很容易能理解。
   

上一篇:Android開(kāi)發(fā)筆記第四篇(應(yīng)用解析)
下一篇:Android游戲開(kāi)發(fā)之處理按鍵的響應(yīng)方式(二十二)

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書(shū) | 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-11-13 06:05 , Processed in 0.051776 second(s), 14 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表