/*
* 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.google.zxing.client.android;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.Result;
import com.google.zxing.ResultMetadataType;
import com.google.zxing.ResultPoint;
import com.google.zxing.client.android.camera.CameraManager;
import com.google.zxing.client.android.history.HistoryManager;
import com.google.zxing.client.android.result.ResultButtonListener;
import com.google.zxing.client.android.result.ResultHandler;
import com.google.zxing.client.android.result.ResultHandlerFactory;
import com.google.zxing.client.android.share.ShareActivity;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.AssetFileDescriptor;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.text.ClipboardManager;
import android.util.Log;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
/**
* The barcode reader activity itself. This is loosely based on the CameraPreview
* example included in the Android SDK.
*
* @author dswitkin@google.com (Daniel Switkin)
* @author Sean Owen
*/
public final class CaptureActivity extends Activity implements SurfaceHolder.Callback {
private static final String TAG = CaptureActivity.class.getSimpleName();
private static final int SHARE_ID = Menu.FIRST;
private static final int HISTORY_ID = Menu.FIRST + 1;
private static final int SETTINGS_ID = Menu.FIRST + 2;
private static final int HELP_ID = Menu.FIRST + 3;
private static final int ABOUT_ID = Menu.FIRST + 4;
private static final long INTENT_RESULT_DURATION = 1500L;
private static final long BULK_MODE_SCAN_DELAY_MS = 1000L;
private static final float BEEP_VOLUME = 0.10f;
private static final long VIBRATE_DURATION = 200L;
private static final String PACKAGE_NAME = "com.google.zxing.client.android";
private static final String PRODUCT_SEARCH_URL_PREFIX = "http://www.google";
private static final String PRODUCT_SEARCH_URL_SUFFIX = "/m/products/scan";
private static final String ZXING_URL = "http://zxing.appspot.com/scan";
private static final String RETURN_CODE_PLACEHOLDER = "{CODE}";
private static final String RETURN_URL_PARAM = "ret";
private static final Set<ResultMetadataType> DISPLAYABLE_METADATA_TYPES;
static {
DISPLAYABLE_METADATA_TYPES = new HashSet<ResultMetadataType>(5);
DISPLAYABLE_METADATA_TYPES.add(ResultMetadataType.ISSUE_NUMBER);
DISPLAYABLE_METADATA_TYPES.add(ResultMetadataType.SUGGESTED_PRICE);
DISPLAYABLE_METADATA_TYPES.add(ResultMetadataType.ERROR_CORRECTION_LEVEL);
DISPLAYABLE_METADATA_TYPES.add(ResultMetadataType.POSSIBLE_COUNTRY);
}
private enum Source {
NATIVE_APP_INTENT,
PRODUCT_SEARCH_LINK,
ZXING_LINK,
NONE
}
private CaptureActivityHandler handler;
private ViewfinderView viewfinderView;
private TextView statusView;
private View resultView;
private MediaPlayer mediaPlayer;
private Result lastResult;
private boolean hasSurface;
private boolean playBeep;
private boolean vibrate;
private boolean copyToClipboard;
private Source source;
private String sourceUrl;
private String returnUrlTemplate;
private Vector<BarcodeFormat> decodeFormats;
private String characterSet;
private String versionName;
private HistoryManager historyManager;
private InactivityTimer inactivityTimer;
/**
* 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);
}
};
private final DialogInterface.OnClickListener aboutListener =
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.zxing_url)));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivity(intent);
}
};
ViewfinderView getViewfinderView() {
return viewfinderView;
}
public Handler getHandler() {
return handler;
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.capture);
CameraManager.init(getApplication());
viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view);
resultView = findViewById(R.id.result_view);
statusView = (TextView) findViewById(R.id.status_view);
handler = null;
lastResult = null;
hasSurface = false;
historyManager = new HistoryManager(this);
historyManager.trimHistory();
inactivityTimer = new InactivityTimer(this);
showHelpOnFirstLaunch();
}
@Override
protected void onResume() {
super.onResume();
resetStatusView();
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
if (hasSurface) {
// The activity was paused but not stopped, so the surface still exists. Therefore
// surfaceCreated() won't be called, so init the camera here.
initCamera(surfaceHolder);
} else {
// Install the callback and wait for surfaceCreated() to init the camera.
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
Intent intent = getIntent();
String action = intent == null ? null : intent.getAction();
String dataString = intent == null ? null : intent.getDataString();
if (intent != null && action != null) {
if (action.equals(Intents.Scan.ACTION)) {
// Scan the formats the intent requested, and return the result to the calling activity.
source = Source.NATIVE_APP_INTENT;
decodeFormats = DecodeFormatManager.parseDecodeFormats(intent);
} else if (dataString != null && dataString.contains(PRODUCT_SEARCH_URL_PREFIX) &&
dataString.contains(PRODUCT_SEARCH_URL_SUFFIX)) {
// Scan only products and send the result to mobile Product Search.
source = Source.PRODUCT_SEARCH_LINK;
sourceUrl = dataString;
decodeFormats = DecodeFormatManag
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
QR.rar_DEMO_二维码识别_扫描二维码java_条码demo_条码识别 (221个子文件)
resources.ap_ 138KB
QR.apk 342KB
jarlist.cache 119B
proguard.cfg 1KB
CaptureActivity.class 24KB
ResultHandler.class 15KB
QRCodeEncoder.class 11KB
HistoryManager.class 9KB
SearchBookContentsActivity.class 9KB
WifiActivity.class 9KB
EncodeActivity.class 9KB
CameraConfigurationManager.class 7KB
CameraManager.class 7KB
ShareActivity.class 7KB
AndroidHttpClient.class 6KB
AddressBookResultHandler.class 6KB
HelpActivity.class 5KB
SearchBookContentsActivity$NetworkThread.class 5KB
R$string.class 5KB
WifiReceiver.class 5KB
FlashlightManager.class 5KB
CaptureActivityHandler.class 4KB
ViewfinderView.class 4KB
LoadPackagesAsyncTask.class 4KB
DecodeHandler.class 4KB
HistoryClickListener.class 4KB
DecodeFormatManager.class 4KB
CalendarResultHandler.class 4KB
PreferencesActivity.class 3KB
DecodeThread.class 3KB
BrowseBookListener.class 3KB
PlanarYUVLuminanceSource.class 3KB
EncodeActivity$1.class 3KB
ResultHandlerFactory.class 3KB
BookmarkPickerActivity.class 2KB
AppPickerActivity.class 2KB
SMSResultHandler.class 2KB
WifiResultHandler.class 2KB
SearchBookContentsListItem.class 2KB
TelResultHandler.class 2KB
LocaleManager.class 2KB
R$id.class 2KB
PreviewCallback.class 2KB
AndroidHttpClient$2.class 2KB
SearchBookContentsAdapter.class 2KB
Killer.class 2KB
ProductResultHandler.class 2KB
ISBNResultHandler.class 2KB
EmailAddressResultHandler.class 2KB
InactivityTimer.class 2KB
URIResultHandler.class 2KB
EncodeActivity$2.class 2KB
EncodeThread.class 2KB
HelpActivity$HelpClient.class 2KB
ShareActivity$4.class 2KB
TextResultHandler.class 2KB
NetworkUtil.class 2KB
DBHelper.class 2KB
ISBNResultHandler$2.class 2KB
AutoFocusCallback.class 2KB
ProductResultHandler$2.class 2KB
GeoResultHandler.class 2KB
WifiActivity$NetworkType.class 1KB
CaptureActivity$Source.class 1KB
ShareActivity$2.class 1KB
CaptureActivityHandler$State.class 1KB
ShareActivity$3.class 1KB
SearchBookContentsActivity$1.class 1KB
CaptureActivity$2.class 1KB
ResultHandler$1.class 1KB
ProductResultHandler$1.class 1KB
R$color.class 1KB
ISBNResultHandler$1.class 1KB
ShareActivity$1.class 1KB
HelpActivity$3.class 1KB
LoadPackagesAsyncTask$ByFirstStringComparator.class 1KB
SearchBookContentsResult.class 1KB
NetworkSetting.class 1KB
FinishListener.class 1KB
Killer$1$1.class 1KB
AndroidHttpClient$1.class 1KB
Killer$1.class 1KB
SearchBookContentsActivity$3.class 1KB
InactivityTimer$DaemonThreadFactory.class 959B
HelpActivity$1.class 953B
ResultButtonListener.class 941B
SearchBookContentsActivity$2.class 937B
CaptureActivity$1.class 903B
Intents$Scan.class 888B
R.class 866B
ViewfinderResultPointCallback.class 853B
HelpActivity$2.class 826B
R$layout.class 780B
Contents.class 758B
Intents.class 710B
Contents$Type.class 692B
Intents$Encode.class 643B
Intents$SearchBookContents.class 622B
Intents$WifiConnect.class 622B
R$drawable.class 560B
共 221 条
- 1
- 2
- 3
钱亚锋
- 粉丝: 86
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 四数之和(java代码).docx
- 701837906919458TapScanner v3.0.10 (Pro).apk
- 青岛大学人工智能实验二 利用α-β搜索的博弈树算法编写一字棋游戏
- ### 1、项目介绍 本项目Scrapy进行数据爬取,并使用Django框架+PyEcharts实现可视化大屏 效果如下:
- # 微信小程序-健康菜谱 基于微信小程序的一个查找检索菜谱的应用 ### 效果 !动态图(./res/gif/demo
- zabbix-get命令包资源
- 289ssm-mysql-jsp 计算机课程实验管理系统.zip(可运行源码+数据库文件+文档)
- 毕业设计,基于PyQt5实现的可视化界面的Python车牌自动识别系统源码
- 20-天天果园项目.rar
- 26-朴素贝叶斯分类.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0