/* * Copyright (C) 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.fanxin.huangfangyi.main.widget.zxing.decoding; import android.os.Handler; import android.os.Message; import com.fanxin.huangfangyi.main.widget.zxing.activity.CaptureActivity; import com.fanxin.huangfangyi.main.widget.zxing.camera.CameraManager; import com.fanxin.huangfangyi.main.widget.zxing.view.ViewfinderResultPointCallback; import com.google.zxing.BarcodeFormat; import java.util.Vector; /** * This class handles all the messaging which comprises the state machine for capture. */ public final class CaptureActivityHandler extends Handler { private static final String TAG = CaptureActivityHandler.class.getSimpleName(); private final CaptureActivity activity; private final DecodeThread decodeThread; private State state; private enum State { PREVIEW, SUCCESS, DONE } public CaptureActivityHandler(CaptureActivity activity, Vector<BarcodeFormat> decodeFormats, String characterSet) { this.activity = activity; decodeThread = new DecodeThread(activity, decodeFormats, characterSet, new ViewfinderResultPointCallback(activity.getViewfinderView())); decodeThread.start(); state = State.SUCCESS; // Start ourselves capturing previews and decoding. CameraManager.get().startPreview(); restartPreviewAndDecode(); } @Override public void handleMessage(Message message) { switch (message.what) { } } public void quitSynchronously() { state = State.DONE; CameraManager.get().stopPreview(); Message quit = null; quit.sendToTarget(); try { decodeThread.join(); } catch (InterruptedException e) { // continue } // Be absolutely sure we don't send any queued up messages // removeMessages(R.id.decode_succeeded); // removeMessages(R.id.decode_failed); } private void restartPreviewAndDecode() { if (state == State.SUCCESS) { state = State.PREVIEW; // CameraManager.get().requestPreviewFrame(decodeThread.getHandler(), R.id.decode); // CameraManager.get().requestAutoFocus(this, R.id.auto_focus); activity.drawViewfinder(); } } }