Android Open Source - voc Capture Activity Handler






From Project

Back to project page voc.

License

The source code is released under:

GNU General Public License

If you think the Android project voc listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2008 ZXing authors//  ww  w.  ja  v  a2s . c o m
 *
 * 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 transmission.thirdlib.capture;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.CheckBox;
import com.google.zxing.BarcodeFormat;
import net.bluetoothviewer.R;
import transmission.LocalProfile;
import transmission.thirdlib.manager.CameraManager;
import userinterface.BluetoothViewer;
import userinterface.GuideActivity;

import java.util.Collection;

/**
 * This class handles all the messaging which comprises the state machine for
 * capture.
 * 
 * @author dswitkin@google.com (Daniel Switkin)
 */
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 final CameraManager cameraManager;
  public static String qr_result;
  public static int flag; // activity from which it is returning

    public String getqr () {
        return qr_result;
    }


  private enum State {
    PREVIEW, SUCCESS, DONE
  }

  CaptureActivityHandler(CaptureActivity activity,
      Collection<BarcodeFormat> decodeFormats, String characterSet,
      CameraManager cameraManager) {
    this.activity = activity;
    decodeThread = new DecodeThread(activity, decodeFormats, characterSet,
        new ViewfinderResultPointCallback(activity.getViewfinderView()));
    decodeThread.start();
    state = State.SUCCESS;

    // Start ourselves capturing previews and decoding.
    this.cameraManager = cameraManager;
    cameraManager.startPreview();
    restartPreviewAndDecode();
  }

  @Override
  public void handleMessage(Message message) {
    switch (message.what) {
    case R.id.auto_focus:
      // Log.d(TAG, "Got auto-focus message");
      // When one auto focus pass finishes, start another. This is the
      // closest thing to
      // continuous AF. It does seem to hunt a bit, but I'm not sure what
      // else to do.
      if (state == State.PREVIEW) {
        cameraManager.requestAutoFocus(this, R.id.auto_focus);
      }
      break;
    case R.id.restart_preview:
      Log.d(TAG, "Got restart preview message");
      restartPreviewAndDecode();
      break;
    case R.id.decode_succeeded:
      Log.d(TAG, "Got decode succeeded message");
      state = State.SUCCESS;
      Bundle bundle = message.getData();
      @SuppressWarnings("unused")
      Bitmap barcode = bundle == null ? null : (Bitmap) bundle
          .getParcelable(DecodeThread.BARCODE_BITMAP);
      qr_result = message.obj.toString();
      Log.d(TAG, "QR Result: " + qr_result);
      //Intent myIntent = new Intent(activity.getApplicationContext(),
      //    BluetoothViewer.class);
      //myIntent.putExtra("qrcod e", qr_result);
      //myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      //activity.startActivity(myIntent);
            //Intent myIntent = new Intent(activity.getApplicationContext(),
             //       GuideActivity.class);
            //myIntent.putExtra("qrcode e", qr_result);
            //activity.startActivity(myIntent);
            activity.saveqr(qr_result);
            activity.finish();
      break;
    case R.id.decode_failed:
      // We're decoding as fast as possible, so when one decode fails,
      // start another.
      state = State.PREVIEW;
      cameraManager.requestPreviewFrame(decodeThread.getHandler(),
          R.id.decode);
      break;
    case R.id.return_scan_result:
      Log.d(TAG, "Got return scan result message");
      activity.setResult(Activity.RESULT_OK, (Intent) message.obj);
      activity.finish();
      break;
    case R.id.launch_product_query:
      Log.d(TAG, "Got product query message");
      String url = (String) message.obj;
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
      activity.startActivity(intent);
      break;
    }
  }

  public void quitSynchronously() {
    state = State.DONE;
    cameraManager.stopPreview();
    Message quit = Message.obtain(decodeThread.getHandler(), R.id.quit);
    quit.sendToTarget();
    try {
      // Wait at most half a second; should be enough time, and onPause()
      // will timeout quickly
      decodeThread.join(500L);
    }
    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.requestPreviewFrame(decodeThread.getHandler(),
          R.id.decode);
      cameraManager.requestAutoFocus(this, R.id.auto_focus);
      activity.drawViewfinder();
    }
  }

}




Java Source Code List

cleanup.DrawGraph.java
cleanup.Instructions.java
cleanup.PositionService.java
cleanup.QRcodeFromFile.java
cleanup.QRcodeParse.java
cleanup.SaveQRFile.java
display.DynamicPlotDataSource.java
display.DynamicPlotSeries.java
processing.LinearRegression.java
processing.SensorCurve.java
transmission.BluetoothChatService.java
transmission.LocalProfile.java
transmission.thirdlib.capture.CaptureActivityHandler.java
transmission.thirdlib.capture.CaptureActivity.java
transmission.thirdlib.capture.DecodeFormatManager.java
transmission.thirdlib.capture.DecodeHandler.java
transmission.thirdlib.capture.DecodeThread.java
transmission.thirdlib.capture.FinishListener.java
transmission.thirdlib.capture.InactivityTimer.java
transmission.thirdlib.capture.IntentSource.java
transmission.thirdlib.capture.Intents.java
transmission.thirdlib.capture.PlanarYUVLuminanceSource.java
transmission.thirdlib.capture.PreferencesActivity.java
transmission.thirdlib.capture.ViewfinderResultPointCallback.java
transmission.thirdlib.capture.ViewfinderView.java
transmission.thirdlib.manager.AutoFocusCallback.java
transmission.thirdlib.manager.CameraConfigurationManager.java
transmission.thirdlib.manager.CameraManager.java
transmission.thirdlib.manager.PreviewCallback.java
userinterface.BluetoothViewer.java
userinterface.ConfigActivity.java
userinterface.DeviceListActivity.java
userinterface.GuideActivity.java
userinterface.HistoryActivity.java
userinterface.SlidingDrawerActivity.java
userinterface.Welcome.java