Compare commits
115 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3c04718814 | |||
| 213f020a4f | |||
| 9c75630305 | |||
| c32a34e0e5 | |||
| 60a3a99acf | |||
| 4da6cedea6 | |||
| b513c28bf9 | |||
| da0338ad19 | |||
| fe1ae0c102 | |||
| d8648583f8 | |||
| c85a5ce188 | |||
| dd49d8b3be | |||
| 6cd9c7b3d3 | |||
| ea0c7ed83f | |||
| 069b556241 | |||
| b8c0bf7d45 | |||
| ddf0642984 | |||
| 45225545e0 | |||
| 7abfa72d11 | |||
| e2343191ef | |||
| 2b973f5dbc | |||
| dcbeb26d14 | |||
| 11ecd782e1 | |||
| 442365af77 | |||
| d86a7dfed2 | |||
| d281cb0a1a | |||
| cfddf30f0d | |||
| 4dd4d58295 | |||
| 10b1b29f82 | |||
| 9968f4915b | |||
| bba8496fb4 | |||
| 6afe954732 | |||
| 4b409dfd81 | |||
| ef569d6460 | |||
| 27dbe6a711 | |||
| c74750c3e6 | |||
| 0bc95038bb | |||
| 26b07ed902 | |||
| 4672cf50c8 | |||
| a29e5ad10f | |||
| 4a7de7a4f5 | |||
| b81197efe9 | |||
| 71eaecbb03 | |||
| e5ea3c6c4e | |||
| 0ef32b5bcf | |||
| ed54f5c44c | |||
| 8f5134fbae | |||
| 33905500ba | |||
| 1ae87643a3 | |||
| 6871011551 | |||
| b8a351985c | |||
| c04a600a91 | |||
| 40db627e6b | |||
| 1a63fbdeae | |||
| 522414fa30 | |||
| 2d09eca094 | |||
| c95c7e7ad9 | |||
| b8c1ebceab | |||
| 7a4fd34cff | |||
| 623cc0e79c | |||
| 0d57fdd5fb | |||
| b49642fa35 | |||
| ba81c4149b | |||
| c5687925ca | |||
| dae3221039 | |||
| f14acff90e | |||
| 16c5c92704 | |||
| e6324ee2b4 | |||
| 14e40e2d66 | |||
| 7b19c20e0d | |||
| cb32669b10 | |||
| 74b18fb861 | |||
| 39c164eb16 | |||
| 71e70ea26c | |||
| cac7dbb4d7 | |||
| d590c333a5 | |||
| 7bdd6f7428 | |||
| 4c242b8662 | |||
| ccbe0254e8 | |||
| c0490472b7 | |||
| f82223445f | |||
| 0b035e58a7 | |||
| b8e53c4d1e | |||
| efdb192aa6 | |||
| 3e74da3f7a | |||
| beec54a944 | |||
| 0d5a470f5d | |||
| 077b2fe80e | |||
| 0009a9c8b9 | |||
| 1c357625fb | |||
| 06088e84b2 | |||
| f778ac956b | |||
| b3c17e742a | |||
| c9de43f9d8 | |||
| d86b60c002 | |||
| 3bc9e73980 | |||
| 902f2c6f58 | |||
| 699e93db5b | |||
| 05cc7cd3a6 | |||
| 5b4bd9dfbc | |||
| 808a45d665 | |||
| d16d2766e9 | |||
| fcd5982861 | |||
| 9056458ea8 | |||
| bb5d984c0c | |||
| 259f961500 | |||
| 15af079cfe | |||
| 95031b3bcc | |||
| bf3a584344 | |||
| a12142d3c5 | |||
| 5908caea35 | |||
| 28a855c776 | |||
| bfa2ba413e | |||
| 12be735f40 | |||
| 7a44f8198c |
+8
-1
@@ -1,6 +1,13 @@
|
||||
language: android
|
||||
jdk: oraclejdk7
|
||||
|
||||
android:
|
||||
components:
|
||||
- extra-android-support
|
||||
- extra-android-m2repository
|
||||
- extra-google-m2repository
|
||||
licenses:
|
||||
- 'android-sdk-license-.+'
|
||||
- 'google-gdk-license-.+'
|
||||
script:
|
||||
- TERM=dumb ./gradlew build
|
||||
|
||||
|
||||
+36
@@ -1,3 +1,39 @@
|
||||
### 3.0.2 (2015-07-21)
|
||||
|
||||
* Add helper class for encoding barcodes.
|
||||
* Support custom layouts for CompoundBarcodeView.
|
||||
|
||||
### 3.0.1 (2015-06-10)
|
||||
|
||||
* Fix auto-focus stopping when enabling the torch.
|
||||
* Fix rendering of BarcodeView / CompoundBarcodeView in layout preview of Android Studio.
|
||||
* Add option to disable beep via IntentIntegrator.
|
||||
* Fix some memory leaks with RotationListener (affected some devices only).
|
||||
|
||||
### 3.0.0 (2015-05-17)
|
||||
|
||||
* First stable release of 3.0.
|
||||
|
||||
### 3.0.0-beta4 (2015-05-03)
|
||||
|
||||
* Extract functionality out of CaptureActivity into CompoundBarcodeView and CaptureManager.
|
||||
* Add sample with Lollipop Toolbar/Actionbar (using appcompat library).
|
||||
|
||||
### 3.0.0-beta3 (2015-05-03)
|
||||
|
||||
* Add preview of scanned image to the result.
|
||||
* For some warnings for "sending message to a Handler on a dead thread"
|
||||
|
||||
### 3.0.0-beta2 (2015-04-10)
|
||||
|
||||
* Use DecoderFactory instead of Decoder.
|
||||
* Fix some orientation issues.
|
||||
|
||||
### 3.0.0-beta1 (2015-04-05)
|
||||
|
||||
* Major rewrite, allowing the library to be embedded in other Activities. See the new README for
|
||||
details.
|
||||
|
||||
### 2.3.0 (2015-04-01)
|
||||
|
||||
* Fix issues with portrait orientation.
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
## Reporting an issue
|
||||
|
||||
Please include the following details when reporting a bug:
|
||||
|
||||
* Which version of the library are you using? (e.g. 3.0.0)
|
||||
* Which phone/tablet are you using, and which Android version does it run? (e.g. Samsung Galaxy S5,
|
||||
Android 5.0)
|
||||
* Does the same happen on other devices or an emulator?
|
||||
* Can you reproduce the error in the sample project included with the library? If not, can you
|
||||
provide your own sample project or sample code that produces this error?
|
||||
|
||||
If the app crashes, please include a stacktrace. Android Studio has a log window for this,
|
||||
otherwise you can use the `adb logcat` command-line tool.
|
||||
|
||||
|
||||
Please note that any issues with the actual barcode scanning process (e.g. a specific barcode
|
||||
doesn't scan, or a format is not supported), should be reported at
|
||||
https://github.com/zxing/zxing/issues.
|
||||
@@ -1,85 +1,53 @@
|
||||
# ZXing Android Minimal
|
||||
# ZXing Android Embedded
|
||||
|
||||
This is a port of the [ZXing Android Barcode Scanner application](https://github.com/zxing/zxing/) as an Android
|
||||
library project, for embedding in other Android applications. This is not affiliated with the official ZXing project.
|
||||
Barcode scanning library for Android, using [ZXing][2] for decoding.
|
||||
|
||||
Generally it is recommended to scan a barcode [via intents](https://github.com/zxing/zxing/wiki/Scanning-Via-Intent).
|
||||
There are however some cases in which it is not feasible:
|
||||
The project is loosly based on the [ZXing Android Barcode Scanner application][2], but is not affiliated with the official ZXing project.
|
||||
|
||||
* Your users cannot install the Barcode Scanner application.
|
||||
* You need to customise the barcode scanning logic.
|
||||
* You need to customise the UI.
|
||||
Features:
|
||||
|
||||
In these cases, this library may be more suitable.
|
||||
1. Can be used via Intents (little code required).
|
||||
2. Can be embedded in an Activity, for advanced customization of UI and logic.
|
||||
3. Scanning can be performed in landscape or portrait mode.
|
||||
4. Camera is managed in a background thread, for fast startup time.
|
||||
|
||||
## Version 3
|
||||
|
||||
Where [version 2][4] was essentially just a stripped-down version of the [Barcode Scanner application][2],
|
||||
version 3 is a rewrite of a large part of the codebase, making it more versatile and customizable.
|
||||
|
||||
With the rewrite, many APIs for UI customization were removed. Instead, it is now recommended
|
||||
to create a custom Activity using the lower-level components directly
|
||||
(see [Customization](#customization) for details).
|
||||
|
||||
Other notable changes:
|
||||
* The camera is now loaded in a background thread, making the activity start faster.
|
||||
* The camera preview and decoding now function correctly in any orientation.
|
||||
|
||||
## Adding aar dependency with Gradle
|
||||
|
||||
**Please note that the repository, group name and artifact names changed in 2.0.1.**
|
||||
From version 3 this is a single library, supporting Gingerbread and later versions of Android
|
||||
(API level 9+). If you need support for earlier Android versions, use [version 2][4].
|
||||
|
||||
Add the following to your build.gradle file:
|
||||
|
||||
```groovy
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
||||
maven {
|
||||
url "http://dl.bintray.com/journeyapps/maven"
|
||||
}
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Supports Android 4.0.3 and later (API level 15)
|
||||
compile 'com.journeyapps:zxing-android-embedded:2.3.0@aar'
|
||||
|
||||
// Supports Android 2.1 and later (API level 7), but not optimal for later Android versions.
|
||||
// If you only plan on supporting Android 4.0.3 and up, you don't need to include this.
|
||||
compile 'com.journeyapps:zxing-android-legacy:2.3.0@aar'
|
||||
|
||||
// Convenience library to launch the scanning Activities.
|
||||
// It automatically picks the best scanning library from the above two, depending on the
|
||||
// Android version and what is available.
|
||||
compile 'com.journeyapps:zxing-android-integration:2.3.0@aar'
|
||||
|
||||
// Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier.
|
||||
// This mostly affects encoding, but you should test if you plan to support these versions.
|
||||
// Older versions e.g. 2.2 may also work if you need support for older Android versions.
|
||||
compile 'com.journeyapps:zxing-android-embedded:3.0.2@aar'
|
||||
compile 'com.google.zxing:core:3.2.0'
|
||||
}
|
||||
```
|
||||
|
||||
### What's the difference between zxing-android-embedded and zxing-android-legacy?
|
||||
## Usage with Maven
|
||||
|
||||
The official ZXing Barcode Scanner application dropped support for older Android versions, and newer
|
||||
releases only support Android 4.0.3 and newer. If you install it on an older Android version from
|
||||
the Play Store, you will get an older version of the Barcode Scanner.
|
||||
Maven is not supported currently, but it is possible that the aar can be used. Pull requests are
|
||||
welcome.
|
||||
|
||||
In order to keep up to date with the latest changes and improvements from the official project, we
|
||||
need to do the same. However, many applications still need to support older Android versions.
|
||||
|
||||
To cater for these applications, we have two libraries:
|
||||
|
||||
1. zxing-android-embedded - This corresponds to the latest Barcode Scanner version.
|
||||
2. zxing-android-legacy - This corresponds to version 2.2 of the ZXing project -
|
||||
the latest version that supported Android 2.2.
|
||||
|
||||
`zxing-android-embedded` uses a `zxing` prefix for all its resources, while `zxing-android-legacy`
|
||||
uses a `zxinglegacy` prefix. It is therefore possible to include both of these in your application.
|
||||
If you include both, `IntentIntegrator` will automatically choose the best one.
|
||||
|
||||
If you only need to support Android 4.0.3 and newer, you only need the `zxing-android-embedded`
|
||||
library.
|
||||
|
||||
It is also possible to only use the `zxing-android-legacy` library, but it does not include the
|
||||
latest updates and bugfixes from the ZXing project.
|
||||
|
||||
|
||||
## Adding apklib dependency with Maven
|
||||
|
||||
Support for Maven apklib is dropped in version 1.2.0.
|
||||
|
||||
Use the [1.1.x branch](https://github.com/journeyapps/zxing-android-embedded/tree/1.1.x) if you need to use this from a Maven project.
|
||||
|
||||
## Usage
|
||||
## Usage with IntentIntegrator
|
||||
|
||||
Launch the intent with the default options:
|
||||
```java
|
||||
@@ -98,32 +66,62 @@ Customize options:
|
||||
IntentIntegrator integrator = new IntentIntegrator(this);
|
||||
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
|
||||
integrator.setPrompt("Scan a barcode");
|
||||
integrator.setResultDisplayDuration(0);
|
||||
integrator.setWide(); // Wide scanning rectangle, may work better for 1D barcodes
|
||||
integrator.setCameraId(0); // Use a specific camera of the device
|
||||
integrator.setBeepEnabled(false);
|
||||
integrator.initiateScan();
|
||||
```
|
||||
|
||||
See [IntentIntegrator](integration/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java) for more options.
|
||||
See [IntentIntegrator][5] for more options.
|
||||
|
||||
### Custom Layout
|
||||
### Changing the orientation
|
||||
|
||||
You can provide a custom layout for the capture activity. Note that you'll need to provide two
|
||||
different layouts if you are using both zxing-android-embedded and zxing-android-legacy.
|
||||
To change the orientation, create a new Activity extending CaptureActivity, and specify the
|
||||
orientation in your `AndroidManifest.xml`.
|
||||
|
||||
See [custom_capture_layout.xml](sample/src/main/res/layout/custom_capture_layout.xml) and
|
||||
[custom_legacy_capture_layout.xml](sample/src/main/res/layout/custom_legacy_capture_layout.xml) for
|
||||
examples.
|
||||
Sample:
|
||||
|
||||
```java
|
||||
public class CaptureActivityAnyOrientation extends CaptureActivity {
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
```xml
|
||||
<activity android:name=".CaptureActivityAnyOrientation"
|
||||
android:screenOrientation="fullSensor"
|
||||
android:stateNotNeeded="true"
|
||||
android:theme="@style/zxing_CaptureTheme"
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
|
||||
</activity>
|
||||
```
|
||||
|
||||
```java
|
||||
IntentIntegrator integrator = new IntentIntegrator(this);
|
||||
integrator.setCaptureLayout(R.layout.custom_layout);
|
||||
integrator.setLegacyCaptureLayout(R.layout.custom_legacy_layout);
|
||||
integrator.setCaptureActivity(CaptureActivityAnyOrientation.class);
|
||||
integrator.setOrientationLocked(false);
|
||||
integrator.initiateScan();
|
||||
```
|
||||
|
||||
For a cancel/back button, use the ids `@id/zxing_back_button` for zxing-android-embedded and
|
||||
`@id/zxinglegacy_back_button` for zxing-android-legacy.
|
||||
The previous API for `integrator.setOrientation()` was removed. It caused the Activity to be created
|
||||
in landscape orientation, then destroyed and re-created in the requested orientation, which creates
|
||||
a bad user experience. The only way around this is to specify the orientation in the manifest.
|
||||
|
||||
### Customization
|
||||
|
||||
For more control over the UI or scanning behaviour, some components may be used directly:
|
||||
|
||||
* BarcodeView: Handles displaying the preview and decoding of the barcodes.
|
||||
* CompoundBarcodeView: Combines BarcodeView with a viewfinder for feedback, as well as some status /
|
||||
prompt text.
|
||||
* CaptureManager: Manages the InactivityTimer, BeepManager, orientation lock, and returning of the
|
||||
barcode result.
|
||||
|
||||
These components can be used from any Activity.
|
||||
|
||||
Samples:
|
||||
* [ContinuousCaptureActivity][6]: continuously scan and display results (instead of a once-off scan).
|
||||
* [ToolbarCaptureActivity][8]: Same as the normal CaptureActivity, but with a Lollipop Toolbar.
|
||||
|
||||
## Building locally
|
||||
|
||||
@@ -146,6 +144,14 @@ You can then use your local version by specifying in your `build.gradle` file:
|
||||
|
||||
## License
|
||||
|
||||
[Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
||||
[Apache License 2.0][7]
|
||||
|
||||
|
||||
[1]: http://journeyapps.com
|
||||
[2]: https://github.com/zxing/zxing/
|
||||
[3]: https://github.com/zxing/zxing/wiki/Scanning-Via-Intent
|
||||
[4]: https://github.com/journeyapps/zxing-android-embedded/blob/2.x/README.md
|
||||
[5]: zxing-android-embedded/src/com/google/zxing/integration/android/IntentIntegrator.java
|
||||
[6]: sample/src/main/java/example/zxing/ContinuousCaptureActivity.java
|
||||
[7]: http://www.apache.org/licenses/LICENSE-2.0
|
||||
[8]: sample/src/main/java/example/zxing/ToolbarCaptureActivity.java
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
# Updating ZXing
|
||||
|
||||
This outlines the process to bring this library up to date with the latest changes from the official
|
||||
ZXing project.
|
||||
|
||||
## 1. zxing-android-complete
|
||||
|
||||
This is a "complete" version of the BarcodeScanner project, converted to a library. The first step
|
||||
is to update this.
|
||||
|
||||
1. Clone the zxing project from Github. The scripts assume that zxing-android-minimal and zxing
|
||||
are in the same folder.
|
||||
2. In `zxing-android-complete`, run `ruby update.rb`.
|
||||
3. Inspect the changes with `git diff`, and check that the changes make sense.
|
||||
4. Test that the project can compile and run. A simple way to test is to replace
|
||||
`compile(project(':zxing-android'))` with `compile(project(':zxing-android-complete'))` in
|
||||
[sample/build.gradle](sample/build.gradle), and test the sample project.
|
||||
5. Commit the changes.
|
||||
|
||||
See [zxing-android-complete/Readme.md](zxing-android-complete/Readme.md) for more details on the
|
||||
conversion process.
|
||||
|
||||
## 2. zxing-android
|
||||
|
||||
This is a stripped-down version of zxing-android-complete. Some of the work to produce the
|
||||
stripped-down version is automated, but some is manual.
|
||||
|
||||
The project contain two source folders and two resource folders. `src-orig` and `res-orig` contain
|
||||
sources and resources from zxing-android-complete that are either unmodified, or adapted
|
||||
automatically by the update script. `src` and `res` contains sources and resources that are manually
|
||||
adapted for the library.
|
||||
|
||||
1. Make sure zxing-android-complete is updated (see above).
|
||||
2. In `zxing-android`, run `ruby update.rb`.
|
||||
3. Inspect the changes with `git diff`, and check that the changes make sense.
|
||||
4. Inspect `zxing-android/res.patch` and `zxing-android/sources.patch`. This contains the diff
|
||||
between the files in our `res` and `src` folders, and the ones from zxing-android-complete.
|
||||
Use this, along with the changes between that were made in the zxing-android-complete project
|
||||
to these files, to manually update them.
|
||||
5. Manually update AndroidManifest.xml if required.
|
||||
6. Test!
|
||||
7. Commit and make a pull request.
|
||||
|
||||
Notes:
|
||||
|
||||
* Assets (used for the help section) are not covered by this conversion process at all. We need a
|
||||
better overall plan here on how to handle help files (Use the stock Barcode Scanner help files?
|
||||
Completely remove the help section?).
|
||||
+5
-2
@@ -10,14 +10,14 @@ buildscript {
|
||||
}
|
||||
|
||||
// Projects to be published to bintray
|
||||
def PUBLISH_PROJECTS = ['zxing-android', 'zxing-android-legacy', 'integration']
|
||||
def PUBLISH_PROJECTS = ['zxing-android-embedded']
|
||||
|
||||
subprojects {
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
|
||||
version = '2.3.0'
|
||||
version = '3.0.2'
|
||||
group = 'com.journeyapps'
|
||||
apply plugin: 'android-sdk-manager'
|
||||
|
||||
@@ -70,6 +70,9 @@ subprojects {
|
||||
}
|
||||
}
|
||||
|
||||
// To release, place bintray_user and bintray_key properties in ~/.gradle/gradle.properties,
|
||||
// and run ./gradlew clean assembleRelease bintrayUpload
|
||||
|
||||
if(project.hasProperty('bintray_user') && project.hasProperty('bintray_key')) {
|
||||
bintray {
|
||||
user = bintray_user
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
/build
|
||||
@@ -1,18 +0,0 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
ext.artifactId = 'zxing-android-integration'
|
||||
|
||||
android {
|
||||
compileSdkVersion project.androidTargetSdk
|
||||
buildToolsVersion project.androidBuildTools
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 8
|
||||
targetSdkVersion project.androidTargetSdk
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Optional dependency.
|
||||
provided 'com.android.support:support-v4:21.0.3'
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.embarkmobile.zxing.integration">
|
||||
|
||||
<application>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,494 +0,0 @@
|
||||
/*
|
||||
* Copyright 2009 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.integration.android;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.Fragment;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.Display;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>A utility class which helps ease integration with Barcode Scanner via {@link Intent}s. This is a simple
|
||||
* way to invoke barcode scanning and receive the result, without any need to integrate, modify, or learn the
|
||||
* project's source code.</p>
|
||||
*
|
||||
* <h2>Initiating a barcode scan</h2>
|
||||
*
|
||||
* <p>To integrate, create an instance of {@code IntentIntegrator} and call {@link #initiateScan()} and wait
|
||||
* for the result in your app.</p>
|
||||
*
|
||||
* <p>It does require that the Barcode Scanner (or work-alike) application is installed. The
|
||||
* {@link #initiateScan()} method will prompt the user to download the application, if needed.</p>
|
||||
*
|
||||
* <p>There are a few steps to using this integration. First, your {@link Activity} must implement
|
||||
* the method {@link Activity#onActivityResult(int, int, Intent)} and include a line of code like this:</p>
|
||||
*
|
||||
* <pre>{@code
|
||||
* public void onActivityResult(int requestCode, int resultCode, Intent intent) {
|
||||
* IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
|
||||
* if (scanResult != null) {
|
||||
* // handle scan result
|
||||
* }
|
||||
* // else continue with any other code you need in the method
|
||||
* ...
|
||||
* }
|
||||
* }</pre>
|
||||
*
|
||||
* <p>This is where you will handle a scan result.</p>
|
||||
*
|
||||
* <p>Second, just call this in response to a user action somewhere to begin the scan process:</p>
|
||||
*
|
||||
* <pre>{@code
|
||||
* IntentIntegrator integrator = new IntentIntegrator(yourActivity);
|
||||
* integrator.initiateScan();
|
||||
* }</pre>
|
||||
*
|
||||
* <p>Finally, you can use {@link #addExtra(String, Object)} to add more parameters to the Intent used
|
||||
* to invoke the scanner. This can be used to set additional options not directly exposed by this
|
||||
* simplified API.</p>
|
||||
*
|
||||
* <h2>Sharing text via barcode</h2>
|
||||
*
|
||||
* <p>Some code, particularly download integration, was contributed from the Anobiit application.</p>
|
||||
*
|
||||
* <h2>Enabling experimental barcode formats</h2>
|
||||
*
|
||||
* <p>Some formats are not enabled by default even when scanning with {@link #ALL_CODE_TYPES}, such as
|
||||
* PDF417. Use {@link #initiateScan(java.util.Collection)} with
|
||||
* a collection containing the names of formats to scan for explicitly, like "PDF_417", to use such
|
||||
* formats.</p>
|
||||
*
|
||||
* @author Sean Owen
|
||||
* @author Fred Lin
|
||||
* @author Isaac Potoczny-Jones
|
||||
* @author Brad Drehmer
|
||||
* @author gcstang
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public class IntentIntegrator {
|
||||
|
||||
public static final int REQUEST_CODE = 0x0000c0de; // Only use bottom 16 bits
|
||||
private static final String TAG = IntentIntegrator.class.getSimpleName();
|
||||
|
||||
// supported barcode formats
|
||||
public static final Collection<String> PRODUCT_CODE_TYPES = list("UPC_A", "UPC_E", "EAN_8", "EAN_13", "RSS_14");
|
||||
public static final Collection<String> ONE_D_CODE_TYPES =
|
||||
list("UPC_A", "UPC_E", "EAN_8", "EAN_13", "CODE_39", "CODE_93", "CODE_128",
|
||||
"ITF", "RSS_14", "RSS_EXPANDED");
|
||||
public static final Collection<String> QR_CODE_TYPES = Collections.singleton("QR_CODE");
|
||||
public static final Collection<String> DATA_MATRIX_TYPES = Collections.singleton("DATA_MATRIX");
|
||||
|
||||
public static final Collection<String> ALL_CODE_TYPES = null;
|
||||
|
||||
private final Activity activity;
|
||||
private android.app.Fragment fragment;
|
||||
private android.support.v4.app.Fragment supportFragment;
|
||||
|
||||
private final Map<String,Object> moreExtras = new HashMap<String,Object>(3);
|
||||
|
||||
private Collection<String> desiredBarcodeFormats;
|
||||
|
||||
private static final boolean HAVE_STANDARD_SCANNER;
|
||||
private static final boolean HAVE_LEGACY_SCANNER;
|
||||
|
||||
private static final String STANDARD_PACKAGE_NAME = "com.google.zxing.client.android";
|
||||
private static final String LEGACY_PACKAGE_NAME = "com.google.zxing.client.androidlegacy";
|
||||
|
||||
protected Class<?> getCaptureActivity() {
|
||||
try {
|
||||
return Class.forName(getScannerPackage() + ".CaptureActivity");
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new RuntimeException("Could not find CaptureActivity. Make sure one of the zxing-android libraries are loaded.", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static String getScannerPackage() {
|
||||
if(HAVE_STANDARD_SCANNER && Build.VERSION.SDK_INT >= 15) {
|
||||
return STANDARD_PACKAGE_NAME;
|
||||
} else if(HAVE_LEGACY_SCANNER) {
|
||||
return LEGACY_PACKAGE_NAME;
|
||||
} else {
|
||||
return STANDARD_PACKAGE_NAME;
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
boolean test1 = false;
|
||||
try {
|
||||
Class.forName(STANDARD_PACKAGE_NAME + ".CaptureActivity");
|
||||
test1 = true;
|
||||
} catch (ClassNotFoundException e) {
|
||||
// Ignore
|
||||
}
|
||||
HAVE_STANDARD_SCANNER = test1;
|
||||
|
||||
boolean test2 = false;
|
||||
try {
|
||||
Class.forName(LEGACY_PACKAGE_NAME + ".CaptureActivity");
|
||||
test2 = true;
|
||||
} catch (ClassNotFoundException e) {
|
||||
// Ignore
|
||||
}
|
||||
HAVE_LEGACY_SCANNER = test2;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param activity {@link Activity} invoking the integration
|
||||
*/
|
||||
public IntentIntegrator(Activity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fragment {@link Fragment} invoking the integration.
|
||||
* {@link #startActivityForResult(Intent, int)} will be called on the {@link Fragment} instead
|
||||
* of an {@link Activity}
|
||||
*/
|
||||
public static IntentIntegrator forSupportFragment(android.support.v4.app.Fragment fragment) {
|
||||
IntentIntegrator integrator = new IntentIntegrator(fragment.getActivity());
|
||||
integrator.supportFragment = fragment;
|
||||
return integrator;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fragment {@link Fragment} invoking the integration.
|
||||
* {@link #startActivityForResult(Intent, int)} will be called on the {@link Fragment} instead
|
||||
* of an {@link Activity}
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
public static IntentIntegrator forFragment(Fragment fragment) {
|
||||
IntentIntegrator integrator = new IntentIntegrator(fragment.getActivity());
|
||||
integrator.fragment = fragment;
|
||||
return integrator;
|
||||
}
|
||||
|
||||
public Map<String,?> getMoreExtras() {
|
||||
return moreExtras;
|
||||
}
|
||||
|
||||
public final IntentIntegrator addExtra(String key, Object value) {
|
||||
moreExtras.put(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the layout used for scanning in zxing-android.
|
||||
*
|
||||
* @param resourceId the layout resource id to use.
|
||||
*/
|
||||
public final IntentIntegrator setCaptureLayout(int resourceId) {
|
||||
addExtra("ZXING_CAPTURE_LAYOUT_ID_KEY", resourceId);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the layout used for scanning in zxing-android-legacy.
|
||||
*
|
||||
* @param resourceId the layout resource id to use.
|
||||
*/
|
||||
public final IntentIntegrator setLegacyCaptureLayout(int resourceId) {
|
||||
addExtra("ZXINGLEGACY_CAPTURE_LAYOUT_ID_KEY", resourceId);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a prompt to display on the capture screen, instead of using the default.
|
||||
*
|
||||
* @param prompt the prompt to display
|
||||
*/
|
||||
public final IntentIntegrator setPrompt(String prompt) {
|
||||
if (prompt != null) {
|
||||
addExtra("PROMPT_MESSAGE", prompt);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the duration that the result should be displayed after scanning.
|
||||
*
|
||||
* @param ms time to display the result in ms
|
||||
*/
|
||||
public final IntentIntegrator setResultDisplayDuration(long ms) {
|
||||
addExtra("RESULT_DISPLAY_DURATION_MS", ms);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the size of the scanning rectangle.
|
||||
*
|
||||
* @param desiredWidth the desired width in pixels
|
||||
* @param desiredHeight the desired height in pixels
|
||||
*/
|
||||
public final IntentIntegrator setScanningRectangle(int desiredWidth, int desiredHeight) {
|
||||
addExtra("SCAN_WIDTH", desiredWidth);
|
||||
addExtra("SCAN_HEIGHT", desiredHeight);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the activity orientation.
|
||||
*
|
||||
* Warning: This is experimental, and not tested on many devices yet. Please report any issues
|
||||
* on https://github.com/journeyapps/zxing-android-embedded/issues
|
||||
*
|
||||
* @param orientation one of the ActivityInfo.SCREEN_ORIENTATION_* constants
|
||||
*/
|
||||
public void setOrientation(int orientation) {
|
||||
addExtra("SCAN_ORIENTATION", orientation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use a wide scanning rectangle.
|
||||
*
|
||||
* May work better for 1D barcodes.
|
||||
*/
|
||||
public void setWide() {
|
||||
addExtra("SCAN_WIDE", true);
|
||||
|
||||
// For zxing-android-legacy, which doesn't support SCAN_WIDE
|
||||
WindowManager window = activity.getWindowManager();
|
||||
Display display = window.getDefaultDisplay();
|
||||
@SuppressWarnings("deprecation")
|
||||
int displayWidth = display.getWidth();
|
||||
@SuppressWarnings("deprecation")
|
||||
int displayHeight = display.getHeight();
|
||||
if (displayHeight > displayWidth) {
|
||||
// This is portrait dimensions, but the legacy barcode scanner is always in landscape mode.
|
||||
int temp = displayWidth;
|
||||
//noinspection SuspiciousNameCombination
|
||||
displayWidth = displayHeight;
|
||||
displayHeight = temp;
|
||||
}
|
||||
|
||||
int desiredWidth = displayWidth * 9 / 10;
|
||||
int desiredHeight = Math.min(displayHeight * 3 / 4, 400); // Limit to 400px
|
||||
setScanningRectangle(desiredWidth, desiredHeight);
|
||||
}
|
||||
|
||||
/**
|
||||
* Heuristics for whether or not the barcode scanning rectangle should be wide or not.
|
||||
*
|
||||
* Current heuristics make it wide if 1D barcode formats are scanned, and no QR codes.
|
||||
*
|
||||
* @param desiredBarcodeFormats the formats that will be scanned
|
||||
* @return true if it should be wide
|
||||
*/
|
||||
public static boolean shouldBeWide(Collection<String> desiredBarcodeFormats) {
|
||||
boolean scan1d = false;
|
||||
boolean scan2d = false;
|
||||
for (String format : desiredBarcodeFormats) {
|
||||
if(ONE_D_CODE_TYPES.contains(format)) {
|
||||
scan1d = true;
|
||||
}
|
||||
if(QR_CODE_TYPES.contains(format) || DATA_MATRIX_TYPES.contains(format)) {
|
||||
scan2d = true;
|
||||
}
|
||||
}
|
||||
|
||||
return scan1d && !scan2d;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make the scanning rectangle wide if only 1D barcodes are scanned.
|
||||
*
|
||||
* This must be called *after* setting the desired barcode formats.
|
||||
*
|
||||
* @return this
|
||||
*/
|
||||
public IntentIntegrator autoWide() {
|
||||
if(desiredBarcodeFormats != null && shouldBeWide(desiredBarcodeFormats)) {
|
||||
setWide();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the specified camera ID to scan barcodes.
|
||||
*
|
||||
* @param cameraId camera ID of the camera to use. A negative value means "no preference".
|
||||
* @return this
|
||||
*/
|
||||
public IntentIntegrator setCameraId(int cameraId) {
|
||||
if (cameraId >= 0) {
|
||||
addExtra("SCAN_CAMERA_ID", cameraId);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the desired barcode formats to scan.
|
||||
*
|
||||
* @param desiredBarcodeFormats names of {@code BarcodeFormat}s to scan for
|
||||
* @return this
|
||||
*/
|
||||
public IntentIntegrator setDesiredBarcodeFormats(Collection<String> desiredBarcodeFormats) {
|
||||
this.desiredBarcodeFormats = desiredBarcodeFormats;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiates a scan for all known barcode types with the default camera.
|
||||
*/
|
||||
public final void initiateScan() {
|
||||
startActivityForResult(createScanIntent(), REQUEST_CODE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an scan intent with the specified options.
|
||||
*
|
||||
* @return the intent
|
||||
*/
|
||||
public Intent createScanIntent() {
|
||||
Intent intentScan = new Intent(activity, getCaptureActivity());
|
||||
intentScan.setAction("com.google.zxing.client.android.SCAN");
|
||||
|
||||
// check which types of codes to scan for
|
||||
if (desiredBarcodeFormats != null) {
|
||||
// set the desired barcode types
|
||||
StringBuilder joinedByComma = new StringBuilder();
|
||||
for (String format : desiredBarcodeFormats) {
|
||||
if (joinedByComma.length() > 0) {
|
||||
joinedByComma.append(',');
|
||||
}
|
||||
joinedByComma.append(format);
|
||||
}
|
||||
intentScan.putExtra("SCAN_FORMATS", joinedByComma.toString());
|
||||
}
|
||||
|
||||
intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
|
||||
attachMoreExtras(intentScan);
|
||||
return intentScan;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiates a scan, only for a certain set of barcode types, given as strings corresponding
|
||||
* to their names in ZXing's {@code BarcodeFormat} class like "UPC_A". You can supply constants
|
||||
* like {@link #PRODUCT_CODE_TYPES} for example.
|
||||
*
|
||||
* @param desiredBarcodeFormats names of {@code BarcodeFormat}s to scan for
|
||||
*/
|
||||
public final void initiateScan(Collection<String> desiredBarcodeFormats) {
|
||||
setDesiredBarcodeFormats(desiredBarcodeFormats);
|
||||
initiateScan();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start an activity. This method is defined to allow different methods of activity starting for
|
||||
* newer versions of Android and for compatibility library.
|
||||
*
|
||||
* @param intent Intent to start.
|
||||
* @param code Request code for the activity
|
||||
* @see android.app.Activity#startActivityForResult(Intent, int)
|
||||
* @see android.app.Fragment#startActivityForResult(Intent, int)
|
||||
*/
|
||||
protected void startActivityForResult(Intent intent, int code) {
|
||||
if (fragment != null) {
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
fragment.startActivityForResult(intent, code);
|
||||
}
|
||||
} else if(supportFragment != null) {
|
||||
supportFragment.startActivityForResult(intent, code);
|
||||
} else {
|
||||
activity.startActivityForResult(intent, code);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected void startActivity(Intent intent) {
|
||||
if (fragment != null) {
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
fragment.startActivity(intent);
|
||||
}
|
||||
} else if(supportFragment != null) {
|
||||
supportFragment.startActivity(intent);
|
||||
} else {
|
||||
activity.startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Call this from your {@link Activity}'s
|
||||
* {@link Activity#onActivityResult(int, int, Intent)} method.</p>
|
||||
*
|
||||
* @param requestCode request code from {@code onActivityResult()}
|
||||
* @param resultCode result code from {@code onActivityResult()}
|
||||
* @param intent {@link Intent} from {@code onActivityResult()}
|
||||
* @return null if the event handled here was not related to this class, or
|
||||
* else an {@link IntentResult} containing the result of the scan. If the user cancelled scanning,
|
||||
* the fields will be null.
|
||||
*/
|
||||
public static IntentResult parseActivityResult(int requestCode, int resultCode, Intent intent) {
|
||||
if (requestCode == REQUEST_CODE) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
String contents = intent.getStringExtra("SCAN_RESULT");
|
||||
String formatName = intent.getStringExtra("SCAN_RESULT_FORMAT");
|
||||
byte[] rawBytes = intent.getByteArrayExtra("SCAN_RESULT_BYTES");
|
||||
int intentOrientation = intent.getIntExtra("SCAN_RESULT_ORIENTATION", Integer.MIN_VALUE);
|
||||
Integer orientation = intentOrientation == Integer.MIN_VALUE ? null : intentOrientation;
|
||||
String errorCorrectionLevel = intent.getStringExtra("SCAN_RESULT_ERROR_CORRECTION_LEVEL");
|
||||
return new IntentResult(contents,
|
||||
formatName,
|
||||
rawBytes,
|
||||
orientation,
|
||||
errorCorrectionLevel);
|
||||
}
|
||||
return new IntentResult();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static List<String> list(String... values) {
|
||||
return Collections.unmodifiableList(Arrays.asList(values));
|
||||
}
|
||||
|
||||
private void attachMoreExtras(Intent intent) {
|
||||
for (Map.Entry<String,Object> entry : moreExtras.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
Object value = entry.getValue();
|
||||
// Kind of hacky
|
||||
if (value instanceof Integer) {
|
||||
intent.putExtra(key, (Integer) value);
|
||||
} else if (value instanceof Long) {
|
||||
intent.putExtra(key, (Long) value);
|
||||
} else if (value instanceof Boolean) {
|
||||
intent.putExtra(key, (Boolean) value);
|
||||
} else if (value instanceof Double) {
|
||||
intent.putExtra(key, (Double) value);
|
||||
} else if (value instanceof Float) {
|
||||
intent.putExtra(key, (Float) value);
|
||||
} else if (value instanceof Bundle) {
|
||||
intent.putExtra(key, (Bundle) value);
|
||||
} else {
|
||||
intent.putExtra(key, value.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,7 +20,5 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile(project(':zxing-android')) { transitive = true }
|
||||
compile(project(':zxing-android-legacy')) { transitive = true }
|
||||
compile(project(':integration'))
|
||||
compile(project(':zxing-android-embedded')) { transitive = true }
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ public class MainActivity extends Activity {
|
||||
public void scanBarcodeCustomOptions(View view) {
|
||||
IntentIntegrator integrator = new IntentIntegrator(this);
|
||||
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
|
||||
integrator.autoWide();
|
||||
integrator.initiateScan();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||
<dimen name="activity_horizontal_margin">16dp</dimen>
|
||||
<dimen name="activity_vertical_margin">16dp</dimen>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="android:Theme">
|
||||
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
||||
+11
-4
@@ -19,8 +19,15 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile(project(':zxing-android')) { transitive = true }
|
||||
compile(project(':zxing-android-legacy')) { transitive = true }
|
||||
compile(project(':integration'))
|
||||
compile 'com.android.support:appcompat-v7:21.0.3'
|
||||
// If you use this from an external project, use the following instead:
|
||||
// compile 'com.journeyapps:zxing-android-embedded:<version>@aar'
|
||||
// compile 'com.google.zxing:core:3.2.0'
|
||||
compile(project(':zxing-android-embedded')) { transitive = true }
|
||||
compile 'com.android.support:appcompat-v7:22.0.0'
|
||||
|
||||
|
||||
// For development purposes only
|
||||
// https://github.com/square/leakcanary
|
||||
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
|
||||
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
|
||||
}
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/icon"
|
||||
android:label="@string/app_name" >
|
||||
android:label="@string/app_name"
|
||||
android:name=".SampleApplication">
|
||||
<activity
|
||||
android:name="example.zxing.MainActivity"
|
||||
android:label="@string/app_name"
|
||||
@@ -16,6 +17,35 @@
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".ContinuousCaptureActivity">
|
||||
|
||||
</activity>
|
||||
|
||||
<activity android:name=".AnyOrientationCaptureActivity"
|
||||
android:screenOrientation="fullSensor"
|
||||
android:stateNotNeeded="true"
|
||||
android:theme="@style/zxing_CaptureTheme"
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
|
||||
</activity>
|
||||
|
||||
<activity android:name=".ToolbarCaptureActivity"
|
||||
android:clearTaskOnLaunch="true"
|
||||
android:screenOrientation="sensorLandscape"
|
||||
android:stateNotNeeded="true"
|
||||
android:theme="@style/AppCompatCaptureTheme"
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".CustomScannerActivity"
|
||||
android:screenOrientation="fullSensor"
|
||||
android:stateNotNeeded="true"
|
||||
android:theme="@style/zxing_CaptureTheme"
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
</activity>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package example.zxing;
|
||||
|
||||
import com.journeyapps.barcodescanner.CaptureActivity;
|
||||
|
||||
/**
|
||||
* This Activity is exactly the same as CaptureActivity, but has a different orientation
|
||||
* setting in AndroidManifest.xml.
|
||||
*/
|
||||
public class AnyOrientationCaptureActivity extends CaptureActivity {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package example.zxing;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.google.zxing.ResultPoint;
|
||||
import com.journeyapps.barcodescanner.BarcodeCallback;
|
||||
import com.journeyapps.barcodescanner.BarcodeResult;
|
||||
import com.journeyapps.barcodescanner.CompoundBarcodeView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This sample performs continuous scanning, displaying the barcode and source image whenever
|
||||
* a barcode is scanned.
|
||||
*/
|
||||
public class ContinuousCaptureActivity extends Activity {
|
||||
private static final String TAG = ContinuousCaptureActivity.class.getSimpleName();
|
||||
private CompoundBarcodeView barcodeView;
|
||||
|
||||
private BarcodeCallback callback = new BarcodeCallback() {
|
||||
@Override
|
||||
public void barcodeResult(BarcodeResult result) {
|
||||
if (result.getText() != null) {
|
||||
barcodeView.setStatusText(result.getText());
|
||||
}
|
||||
//Added preview of scanned barcode
|
||||
ImageView imageView = (ImageView) findViewById(R.id.barcodePreview);
|
||||
imageView.setImageBitmap(result.getBitmapWithResultPoints(Color.YELLOW));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void possibleResultPoints(List<ResultPoint> resultPoints) {
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.continuous_scan);
|
||||
|
||||
barcodeView = (CompoundBarcodeView) findViewById(R.id.barcode_scanner);
|
||||
barcodeView.decodeContinuous(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
barcodeView.resume();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
|
||||
barcodeView.pause();
|
||||
}
|
||||
|
||||
public void pause(View view) {
|
||||
barcodeView.pause();
|
||||
}
|
||||
|
||||
public void resume(View view) {
|
||||
barcodeView.resume();
|
||||
}
|
||||
|
||||
public void triggerScan(View view) {
|
||||
barcodeView.decodeSingle(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
return barcodeView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
package example.zxing;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
|
||||
import com.journeyapps.barcodescanner.CaptureManager;
|
||||
import com.journeyapps.barcodescanner.CompoundBarcodeView;
|
||||
|
||||
/**
|
||||
* Custom Scannner Activity extending from Activity to display a custom layout form scanner view.
|
||||
*/
|
||||
public class CustomScannerActivity extends Activity implements
|
||||
CompoundBarcodeView.TorchListener {
|
||||
|
||||
private CaptureManager capture;
|
||||
private CompoundBarcodeView barcodeScannerView;
|
||||
private Button switchFlashlightButton;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_custom_scanner);
|
||||
|
||||
barcodeScannerView = (CompoundBarcodeView)findViewById(R.id.zxing_barcode_scanner);
|
||||
barcodeScannerView.setTorchListener(this);
|
||||
|
||||
switchFlashlightButton = (Button)findViewById(R.id.switch_flashlight);
|
||||
|
||||
// if the device does not have flashlight in its camera,
|
||||
// then remove the switch flashlight button...
|
||||
if (!hasFlash()) {
|
||||
switchFlashlightButton.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
capture = new CaptureManager(this, barcodeScannerView);
|
||||
capture.initializeFromIntent(getIntent(), savedInstanceState);
|
||||
capture.decode();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
capture.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
capture.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
capture.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
capture.onSaveInstanceState(outState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
return barcodeScannerView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the device's camera has a Flashlight.
|
||||
* @return true if there is Flashlight, otherwise false.
|
||||
*/
|
||||
private boolean hasFlash() {
|
||||
return getApplicationContext().getPackageManager()
|
||||
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
|
||||
}
|
||||
|
||||
public void switchFlashlight(View view) {
|
||||
if (getString(R.string.turn_on_flashlight).equals(switchFlashlightButton.getText())) {
|
||||
barcodeScannerView.setTorchOn();
|
||||
} else {
|
||||
barcodeScannerView.setTorchOff();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTorchOn() {
|
||||
switchFlashlightButton.setText(R.string.turn_off_flashlight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTorchOff() {
|
||||
switchFlashlightButton.setText(R.string.turn_on_flashlight);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package example.zxing;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.hardware.Camera;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -30,11 +30,11 @@ public class MainActivity extends ActionBarActivity {
|
||||
|
||||
public void scanBarcodeCustomLayout(View view) {
|
||||
IntentIntegrator integrator = new IntentIntegrator(this);
|
||||
integrator.setCaptureLayout(R.layout.custom_capture_layout);
|
||||
integrator.setLegacyCaptureLayout(R.layout.custom_legacy_capture_layout);
|
||||
integrator.setCaptureActivity(AnyOrientationCaptureActivity.class);
|
||||
integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
|
||||
integrator.autoWide();
|
||||
integrator.setOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
|
||||
integrator.setPrompt("Scan something");
|
||||
integrator.setOrientationLocked(false);
|
||||
integrator.setBeepEnabled(false);
|
||||
integrator.initiateScan();
|
||||
}
|
||||
|
||||
@@ -44,16 +44,32 @@ public class MainActivity extends ActionBarActivity {
|
||||
integrator.initiateScan();
|
||||
}
|
||||
|
||||
public void scanContinuous(View view) {
|
||||
Intent intent = new Intent(this, ContinuousCaptureActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void scanToolbar(View view) {
|
||||
new IntentIntegrator(this).setCaptureActivity(ToolbarCaptureActivity.class).initiateScan();
|
||||
}
|
||||
|
||||
public void scanCustomScanner(View view) {
|
||||
new IntentIntegrator(this).setCaptureActivity(CustomScannerActivity.class).initiateScan();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
|
||||
if(result != null) {
|
||||
if(result.getContents() == null) {
|
||||
Log.d("MainActivity", "Cancelled scan");
|
||||
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
|
||||
} else {
|
||||
Log.d("MainActivity", "Scanned");
|
||||
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
} else {
|
||||
Log.d("MainActivity", "Weird");
|
||||
// This is important, otherwise the result will not be passed to the fragment
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package example.zxing;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
import com.squareup.leakcanary.LeakCanary;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class SampleApplication extends Application {
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
LeakCanary.install(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package example.zxing;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
import com.journeyapps.barcodescanner.CaptureManager;
|
||||
import com.journeyapps.barcodescanner.CompoundBarcodeView;
|
||||
|
||||
/**
|
||||
* Sample Activity extending from ActionBarActivity to display a Toolbar.
|
||||
*/
|
||||
public class ToolbarCaptureActivity extends ActionBarActivity {
|
||||
private CaptureManager capture;
|
||||
private CompoundBarcodeView barcodeScannerView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.capture_appcompat);
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
|
||||
toolbar.setTitle("Scan Barcode");
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
barcodeScannerView = (CompoundBarcodeView)findViewById(R.id.zxing_barcode_scanner);
|
||||
|
||||
capture = new CaptureManager(this, barcodeScannerView);
|
||||
capture.initializeFromIntent(getIntent(), savedInstanceState);
|
||||
capture.decode();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
capture.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
capture.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
capture.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
capture.onSaveInstanceState(outState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
onBackPressed();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
return barcodeScannerView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:zxing_view="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context="example.zxing.CustomScannerActivity">
|
||||
|
||||
<com.journeyapps.barcodescanner.CompoundBarcodeView
|
||||
android:id="@+id/zxing_barcode_scanner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
zxing_view:zxing_scanner_layout="@layout/custom_barcode_scanner">
|
||||
</com.journeyapps.barcodescanner.CompoundBarcodeView>
|
||||
|
||||
<Button
|
||||
android:id="@+id/switch_flashlight"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/turn_on_flashlight"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:onClick="switchFlashlight"/>
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -1,38 +1,62 @@
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
android:orientation="vertical"
|
||||
tools:context="example.zxing.MainActivity">
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/scan_barcode"
|
||||
android:onClick="scanBarcode"/>
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/custom_layout"
|
||||
android:onClick="scanBarcodeCustomLayout"/>
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/front_camera"
|
||||
android:onClick="scanBarcodeFrontCamera"/>
|
||||
|
||||
|
||||
<fragment
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin">
|
||||
|
||||
android:name="example.zxing.MainActivity$ScanFragment" tools:layout="@layout/fragment_scan" />
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/scan_barcode"
|
||||
android:onClick="scanBarcode"/>
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/any_orientation"
|
||||
android:onClick="scanBarcodeCustomLayout"/>
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/front_camera"
|
||||
android:onClick="scanBarcodeFrontCamera"/>
|
||||
|
||||
<fragment
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
android:name="example.zxing.MainActivity$ScanFragment" tools:layout="@layout/fragment_scan" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/custom_activity"
|
||||
android:onClick="scanContinuous"/>
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/toolbar_activity"
|
||||
android:onClick="scanToolbar"/>
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/custom_scanner"
|
||||
android:onClick="scanCustomScanner"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</ScrollView>
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
android:id="@+id/my_awesome_toolbar"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:theme="@style/ThemeOverlay.AppCompat.ActionBar"/>
|
||||
|
||||
<com.journeyapps.barcodescanner.CompoundBarcodeView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:id="@+id/zxing_barcode_scanner"/>
|
||||
</LinearLayout>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.journeyapps.barcodescanner.CompoundBarcodeView
|
||||
android:id="@+id/barcode_scanner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_above="@+id/buttonsLayout"
|
||||
android:layout_alignParentTop="true">
|
||||
|
||||
</com.journeyapps.barcodescanner.CompoundBarcodeView>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:id="@+id/buttonsLayout"
|
||||
android:layout_toLeftOf="@+id/centerHorizont">
|
||||
|
||||
<Button
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Pause"
|
||||
android:onClick="pause" />
|
||||
|
||||
<Button
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Resume"
|
||||
android:onClick="resume" />
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:id="@+id/centerHorizont" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/centerHorizont"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@id/buttonsLayout"
|
||||
android:id="@+id/barcodePreview" />
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:zxing_finder="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<com.journeyapps.barcodescanner.BarcodeView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/zxing_barcode_surface"/>
|
||||
|
||||
<com.journeyapps.barcodescanner.ViewfinderView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/zxing_viewfinder_view"
|
||||
zxing_finder:zxing_possible_result_points="@color/zxing_custom_possible_result_points"
|
||||
zxing_finder:zxing_result_view="@color/zxing_custom_result_view"
|
||||
zxing_finder:zxing_viewfinder_laser="@color/zxing_custom_viewfinder_laser"
|
||||
zxing_finder:zxing_viewfinder_mask="@color/zxing_custom_viewfinder_mask"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/zxing_status_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:background="@color/zxing_transparent"
|
||||
android:text="@string/zxing_msg_default_status"
|
||||
android:textColor="@color/zxing_status_text"/>
|
||||
|
||||
</merge>
|
||||
@@ -1,221 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<SurfaceView android:id="@+id/zxing_preview_view"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"/>
|
||||
|
||||
<com.google.zxing.client.android.ViewfinderView
|
||||
android:id="@+id/zxing_viewfinder_view"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"/>
|
||||
|
||||
<LinearLayout android:id="@+id/zxing_result_view"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:background="@color/zxing_result_view"
|
||||
android:visibility="gone"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:padding="@dimen/zxing_standard_padding">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:gravity="right|center_vertical">
|
||||
|
||||
<ImageView android:id="@+id/zxing_barcode_image_view"
|
||||
android:layout_width="160dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxWidth="160dip"
|
||||
android:maxHeight="160dip"
|
||||
android:layout_marginBottom="@dimen/zxing_half_padding"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="centerInside"
|
||||
tools:ignore="ContentDescription"/>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/zxing_msg_default_format"
|
||||
android:textColor="@color/zxing_result_minor_text"
|
||||
android:textStyle="bold"
|
||||
android:paddingRight="@dimen/zxing_half_padding"/>
|
||||
|
||||
<TextView android:id="@+id/zxing_format_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxing_result_minor_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/zxing_msg_default_type"
|
||||
android:textColor="@color/zxing_result_minor_text"
|
||||
android:textStyle="bold"
|
||||
android:paddingRight="@dimen/zxing_half_padding"/>
|
||||
|
||||
<TextView android:id="@+id/zxing_type_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxing_result_minor_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/zxing_msg_default_time"
|
||||
android:textColor="@color/zxing_result_minor_text"
|
||||
android:textStyle="bold"
|
||||
android:paddingRight="@dimen/zxing_half_padding"/>
|
||||
|
||||
<TextView android:id="@+id/zxing_time_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxing_result_minor_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView android:id="@+id/zxing_meta_text_view_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/zxing_msg_default_meta"
|
||||
android:textColor="@color/zxing_result_minor_text"
|
||||
android:textStyle="bold"
|
||||
android:paddingRight="@dimen/zxing_half_padding"/>
|
||||
|
||||
<TextView android:id="@+id/zxing_meta_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxing_result_minor_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView android:id="@+id/zxing_contents_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxing_result_text"
|
||||
android:textColorLink="@color/zxing_result_text"
|
||||
android:textSize="22sp"
|
||||
android:paddingLeft="12dip"
|
||||
android:autoLink="web"
|
||||
android:textIsSelectable="true"/>
|
||||
|
||||
<TextView android:id="@+id/zxing_contents_supplement_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxing_result_text"
|
||||
android:textColorLink="@color/zxing_result_text"
|
||||
android:paddingLeft="12dip"
|
||||
android:autoLink="web"
|
||||
android:textIsSelectable="true"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout android:id="@+id/zxing_result_button_view"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center">
|
||||
|
||||
<Button style="@style/zxing_ResultButton"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<Button style="@style/zxing_ResultButton"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<Button style="@style/zxing_ResultButton"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<Button style="@style/zxing_ResultButton"
|
||||
android:visibility="gone"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView android:id="@+id/zxing_status_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:background="@color/zxing_transparent"
|
||||
android:text="@string/zxing_msg_default_status"
|
||||
android:textColor="@color/zxing_status_text"/>
|
||||
|
||||
<Button android:id="@id/zxing_back_button"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:height="60dp"
|
||||
android:textAlignment="center"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:text="@string/zxing_button_cancel"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</merge>
|
||||
@@ -1,227 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
|
||||
<SurfaceView android:id="@+id/zxinglegacy_preview_view"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"/>
|
||||
|
||||
<com.google.zxing.client.androidlegacy.ViewfinderView
|
||||
android:id="@+id/zxinglegacy_viewfinder_view"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"/>
|
||||
|
||||
<LinearLayout android:id="@+id/zxinglegacy_result_view"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:background="@color/zxinglegacy_result_view"
|
||||
android:visibility="gone"
|
||||
android:baselineAligned="false">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:padding="@dimen/zxinglegacy_standard_padding">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:gravity="right|center_vertical">
|
||||
|
||||
<ImageView android:id="@+id/zxinglegacy_barcode_image_view"
|
||||
android:layout_width="160dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxWidth="160dip"
|
||||
android:maxHeight="160dip"
|
||||
android:layout_marginBottom="@dimen/zxinglegacy_half_padding"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="centerInside"/>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/zxinglegacy_msg_default_format"
|
||||
android:textColor="@color/zxinglegacy_result_minor_text"
|
||||
android:textStyle="bold"
|
||||
android:paddingRight="@dimen/zxinglegacy_half_padding"/>
|
||||
|
||||
<TextView android:id="@+id/format_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxinglegacy_result_minor_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/zxinglegacy_msg_default_type"
|
||||
android:textColor="@color/zxinglegacy_result_minor_text"
|
||||
android:textStyle="bold"
|
||||
android:paddingRight="@dimen/zxinglegacy_half_padding"/>
|
||||
|
||||
<TextView android:id="@+id/zxinglegacy_type_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxinglegacy_result_minor_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/zxinglegacy_msg_default_time"
|
||||
android:textColor="@color/zxinglegacy_result_minor_text"
|
||||
android:textStyle="bold"
|
||||
android:paddingRight="@dimen/zxinglegacy_half_padding"/>
|
||||
|
||||
<TextView android:id="@+id/zxinglegacy_time_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxinglegacy_result_minor_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView android:id="@+id/meta_text_view_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/zxinglegacy_msg_default_meta"
|
||||
android:textColor="@color/zxinglegacy_result_minor_text"
|
||||
android:textStyle="bold"
|
||||
android:paddingRight="@dimen/zxinglegacy_half_padding"/>
|
||||
|
||||
<TextView android:id="@+id/zxinglegacy_meta_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxinglegacy_result_minor_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView android:id="@+id/zxinglegacy_contents_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxinglegacy_result_text"
|
||||
android:textColorLink="@color/zxinglegacy_result_text"
|
||||
android:textSize="22sp"
|
||||
android:paddingLeft="12dip"
|
||||
android:autoLink="web"/>
|
||||
|
||||
<TextView android:id="@+id/zxinglegacy_contents_supplement_text_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/zxinglegacy_result_text"
|
||||
android:textColorLink="@color/zxinglegacy_result_text"
|
||||
android:paddingLeft="12dip"
|
||||
android:autoLink="web"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout android:id="@+id/zxinglegacy_result_button_view"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center">
|
||||
|
||||
<Button android:layout_width="0dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<Button android:layout_width="0dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<Button android:layout_width="0dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<Button android:layout_width="0dip"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:visibility="gone"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView android:id="@+id/zxinglegacy_status_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:background="@color/zxinglegacy_transparent"
|
||||
android:text="@string/zxinglegacy_msg_default_status"
|
||||
android:textColor="@color/zxinglegacy_status_text"/>
|
||||
|
||||
<Button android:id="@id/zxinglegacy_back_button"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:height="60dp"
|
||||
android:textAlignment="center"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:text="@string/zxinglegacy_button_cancel"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="AppCompatCaptureTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
|
||||
<item name="android:statusBarColor">#ffb341</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||
<dimen name="activity_horizontal_margin">16dp</dimen>
|
||||
<dimen name="activity_vertical_margin">16dp</dimen>
|
||||
|
||||
</resources>
|
||||
</resources>
|
||||
|
||||
@@ -3,8 +3,13 @@
|
||||
|
||||
<string name="app_name">ZXing Sample</string>
|
||||
<string name="scan_barcode">Scan Barcode</string>
|
||||
<string name="custom_layout">Custom Layout / Any Orientation</string>
|
||||
<string name="any_orientation">1D Any Orientation</string>
|
||||
<string name="scan_from_fragment">Scan from fragment</string>
|
||||
<string name="front_camera">Front Camera</string>
|
||||
<string name="custom_activity">Continuous Scan</string>
|
||||
<string name="toolbar_activity">Activity with Toolbar</string>
|
||||
<string name="custom_scanner">Custom Scanner Activity</string>
|
||||
<string name="turn_on_flashlight">Turn on Flashlight</string>
|
||||
<string name="turn_off_flashlight">Turn off Flashlight</string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat">
|
||||
|
||||
</style>
|
||||
|
||||
<style name="AppCompatCaptureTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="colorPrimary">#ffb341</item>
|
||||
<item name="colorPrimaryDark">#ffb341</item>
|
||||
<item name="colorAccent">#ffb341</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
+1
-4
@@ -1,6 +1,3 @@
|
||||
include ':zxing-android'
|
||||
include ':zxing-android-complete'
|
||||
include ':zxing-android-legacy'
|
||||
include ':integration'
|
||||
include ':zxing-android-embedded'
|
||||
include ':sample'
|
||||
include ':sample-nosupport'
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
target/
|
||||
*.iml
|
||||
bin/
|
||||
gen/
|
||||
libs/
|
||||
local.properties
|
||||
@@ -1,106 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.google.zxing.client.android"
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="22"/>
|
||||
|
||||
<!-- Don't require camera, as this requires a rear camera. This allows it to work on the Nexus 7 -->
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/>
|
||||
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
|
||||
<!-- TODO replace above two with next line after Android 4.2 -->
|
||||
<!-- <uses-feature android:name="android.hardware.camera.any"/> -->
|
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
|
||||
<uses-feature android:name="android.hardware.camera.flash" android:required="false"/>
|
||||
<uses-feature android:name="android.hardware.screen.landscape"/>
|
||||
<uses-feature android:name="android.hardware.wifi" android:required="false"/>
|
||||
<!-- This excludes Google TV, which is unfortunately included by virtue of not requiring a camera -->
|
||||
<uses-feature android:name="android.hardware.touchscreen"/>
|
||||
<!-- TODO make this not required again after android.hardware.camera.any is available -->
|
||||
|
||||
|
||||
|
||||
<application android:icon="@drawable/zxing_launcher_icon"
|
||||
android:logo="@drawable/zxing_launcher_icon"
|
||||
android:label="@string/zxing_app_name"
|
||||
android:allowBackup="true">
|
||||
<activity android:name=".CaptureActivity"
|
||||
android:screenOrientation="sensorLandscape"
|
||||
android:clearTaskOnLaunch="true"
|
||||
android:stateNotNeeded="true"
|
||||
android:theme="@style/zxing_CaptureTheme"
|
||||
android:windowSoftInputMode="stateAlwaysHidden">
|
||||
|
||||
|
||||
<!-- Allow web apps to launch Barcode Scanner by linking to http://zxing.appspot.com/scan. -->
|
||||
|
||||
<!-- We also support a Google Product Search URL. -->
|
||||
|
||||
<!-- And the UK version. -->
|
||||
|
||||
<!-- Support zxing://scan/?... like iPhone app -->
|
||||
|
||||
</activity>
|
||||
<activity android:name=".PreferencesActivity"
|
||||
android:label="@string/zxing_preferences_name"
|
||||
android:stateNotNeeded="true"/>
|
||||
<activity android:name=".encode.EncodeActivity"
|
||||
android:stateNotNeeded="true">
|
||||
|
||||
<!-- This allows us to handle the Share button in Contacts. -->
|
||||
|
||||
<!-- This allows us to handle sharing any plain text . -->
|
||||
|
||||
</activity>
|
||||
<activity android:name=".book.SearchBookContentsActivity"
|
||||
android:label="@string/zxing_sbc_name"
|
||||
android:stateNotNeeded="true"
|
||||
android:screenOrientation="sensorLandscape">
|
||||
|
||||
</activity>
|
||||
<activity android:name=".share.ShareActivity"
|
||||
android:stateNotNeeded="true"
|
||||
android:screenOrientation="user">
|
||||
|
||||
</activity>
|
||||
<activity android:name=".history.HistoryActivity"
|
||||
android:label="@string/zxing_history_title"
|
||||
android:stateNotNeeded="true"/>
|
||||
<activity android:name=".share.BookmarkPickerActivity"
|
||||
android:label="@string/zxing_bookmark_picker_name"
|
||||
android:stateNotNeeded="true"/>
|
||||
<activity android:name=".share.AppPickerActivity"
|
||||
android:label="@string/zxing_app_picker_name"
|
||||
android:stateNotNeeded="true"/>
|
||||
<activity android:name=".HelpActivity"
|
||||
android:label="@string/zxing_menu_help"
|
||||
android:screenOrientation="user"
|
||||
android:stateNotNeeded="true"/>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,16 +0,0 @@
|
||||
# zxing-android-complete
|
||||
|
||||
This is a complete copy of the ZXing Android application, converted to an Android library.
|
||||
|
||||
This is not intended to be used directly, but rather as a starting point to create a stripped-down
|
||||
version.
|
||||
|
||||
`ruby update.rb` script does roughly the following:
|
||||
|
||||
1. Copy the Java source code, resources and assets from the ZXing Android application.
|
||||
2. Prefix all resource files and names with `zxing_`.
|
||||
3. Replace switch statements on resource ids with if statements.
|
||||
4. Place assets in a `zxing` subfolder.
|
||||
5. Update references in the Java code to all the renamed resources and assets.
|
||||
6. Remove unwanted sections from AndroidManifest.xml.
|
||||
7. Set minSdkVersion to 7.
|
||||
-447
@@ -1,447 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2014 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.camera;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.hardware.Camera;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Utility methods for configuring the Android camera.
|
||||
*
|
||||
* @author Sean Owen
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
|
||||
public final class CameraConfigurationUtils {
|
||||
|
||||
private static final String TAG = "CameraConfiguration";
|
||||
|
||||
private static final Pattern SEMICOLON = Pattern.compile(";");
|
||||
|
||||
private static final int MIN_PREVIEW_PIXELS = 480 * 320; // normal screen
|
||||
private static final float MAX_EXPOSURE_COMPENSATION = 1.5f;
|
||||
private static final float MIN_EXPOSURE_COMPENSATION = 0.0f;
|
||||
private static final double MAX_ASPECT_DISTORTION = 0.15;
|
||||
private static final int MIN_FPS = 10;
|
||||
private static final int MAX_FPS = 20;
|
||||
private static final int AREA_PER_1000 = 400;
|
||||
|
||||
private CameraConfigurationUtils() {
|
||||
}
|
||||
|
||||
public static void setFocus(Camera.Parameters parameters,
|
||||
boolean autoFocus,
|
||||
boolean disableContinuous,
|
||||
boolean safeMode) {
|
||||
List<String> supportedFocusModes = parameters.getSupportedFocusModes();
|
||||
String focusMode = null;
|
||||
if (autoFocus) {
|
||||
if (safeMode || disableContinuous) {
|
||||
focusMode = findSettableValue("focus mode",
|
||||
supportedFocusModes,
|
||||
Camera.Parameters.FOCUS_MODE_AUTO);
|
||||
} else {
|
||||
focusMode = findSettableValue("focus mode",
|
||||
supportedFocusModes,
|
||||
Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE,
|
||||
Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO,
|
||||
Camera.Parameters.FOCUS_MODE_AUTO);
|
||||
}
|
||||
}
|
||||
// Maybe selected auto-focus but not available, so fall through here:
|
||||
if (!safeMode && focusMode == null) {
|
||||
focusMode = findSettableValue("focus mode",
|
||||
supportedFocusModes,
|
||||
Camera.Parameters.FOCUS_MODE_MACRO,
|
||||
Camera.Parameters.FOCUS_MODE_EDOF);
|
||||
}
|
||||
if (focusMode != null) {
|
||||
if (focusMode.equals(parameters.getFocusMode())) {
|
||||
Log.i(TAG, "Focus mode already set to " + focusMode);
|
||||
} else {
|
||||
parameters.setFocusMode(focusMode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void setTorch(Camera.Parameters parameters, boolean on) {
|
||||
List<String> supportedFlashModes = parameters.getSupportedFlashModes();
|
||||
String flashMode;
|
||||
if (on) {
|
||||
flashMode = findSettableValue("flash mode",
|
||||
supportedFlashModes,
|
||||
Camera.Parameters.FLASH_MODE_TORCH,
|
||||
Camera.Parameters.FLASH_MODE_ON);
|
||||
} else {
|
||||
flashMode = findSettableValue("flash mode",
|
||||
supportedFlashModes,
|
||||
Camera.Parameters.FLASH_MODE_OFF);
|
||||
}
|
||||
if (flashMode != null) {
|
||||
if (flashMode.equals(parameters.getFlashMode())) {
|
||||
Log.i(TAG, "Flash mode already set to " + flashMode);
|
||||
} else {
|
||||
Log.i(TAG, "Setting flash mode to " + flashMode);
|
||||
parameters.setFlashMode(flashMode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void setBestExposure(Camera.Parameters parameters, boolean lightOn) {
|
||||
int minExposure = parameters.getMinExposureCompensation();
|
||||
int maxExposure = parameters.getMaxExposureCompensation();
|
||||
float step = parameters.getExposureCompensationStep();
|
||||
if ((minExposure != 0 || maxExposure != 0) && step > 0.0f) {
|
||||
// Set low when light is on
|
||||
float targetCompensation = lightOn ? MIN_EXPOSURE_COMPENSATION : MAX_EXPOSURE_COMPENSATION;
|
||||
int compensationSteps = Math.round(targetCompensation / step);
|
||||
float actualCompensation = step * compensationSteps;
|
||||
// Clamp value:
|
||||
compensationSteps = Math.max(Math.min(compensationSteps, maxExposure), minExposure);
|
||||
if (parameters.getExposureCompensation() == compensationSteps) {
|
||||
Log.i(TAG, "Exposure compensation already set to " + compensationSteps + " / " + actualCompensation);
|
||||
} else {
|
||||
Log.i(TAG, "Setting exposure compensation to " + compensationSteps + " / " + actualCompensation);
|
||||
parameters.setExposureCompensation(compensationSteps);
|
||||
}
|
||||
} else {
|
||||
Log.i(TAG, "Camera does not support exposure compensation");
|
||||
}
|
||||
}
|
||||
|
||||
public static void setBestPreviewFPS(Camera.Parameters parameters) {
|
||||
setBestPreviewFPS(parameters, MIN_FPS, MAX_FPS);
|
||||
}
|
||||
|
||||
public static void setBestPreviewFPS(Camera.Parameters parameters, int minFPS, int maxFPS) {
|
||||
List<int[]> supportedPreviewFpsRanges = parameters.getSupportedPreviewFpsRange();
|
||||
Log.i(TAG, "Supported FPS ranges: " + toString(supportedPreviewFpsRanges));
|
||||
if (supportedPreviewFpsRanges != null && !supportedPreviewFpsRanges.isEmpty()) {
|
||||
int[] suitableFPSRange = null;
|
||||
for (int[] fpsRange : supportedPreviewFpsRanges) {
|
||||
int thisMin = fpsRange[Camera.Parameters.PREVIEW_FPS_MIN_INDEX];
|
||||
int thisMax = fpsRange[Camera.Parameters.PREVIEW_FPS_MAX_INDEX];
|
||||
if (thisMin >= minFPS * 1000 && thisMax <= maxFPS * 1000) {
|
||||
suitableFPSRange = fpsRange;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (suitableFPSRange == null) {
|
||||
Log.i(TAG, "No suitable FPS range?");
|
||||
} else {
|
||||
int[] currentFpsRange = new int[2];
|
||||
parameters.getPreviewFpsRange(currentFpsRange);
|
||||
if (Arrays.equals(currentFpsRange, suitableFPSRange)) {
|
||||
Log.i(TAG, "FPS range already set to " + Arrays.toString(suitableFPSRange));
|
||||
} else {
|
||||
Log.i(TAG, "Setting FPS range to " + Arrays.toString(suitableFPSRange));
|
||||
parameters.setPreviewFpsRange(suitableFPSRange[Camera.Parameters.PREVIEW_FPS_MIN_INDEX],
|
||||
suitableFPSRange[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void setFocusArea(Camera.Parameters parameters) {
|
||||
if (parameters.getMaxNumFocusAreas() > 0) {
|
||||
Log.i(TAG, "Old focus areas: " + toString(parameters.getFocusAreas()));
|
||||
List<Camera.Area> middleArea = buildMiddleArea(AREA_PER_1000);
|
||||
Log.i(TAG, "Setting focus area to : " + toString(middleArea));
|
||||
parameters.setFocusAreas(middleArea);
|
||||
} else {
|
||||
Log.i(TAG, "Device does not support focus areas");
|
||||
}
|
||||
}
|
||||
|
||||
public static void setMetering(Camera.Parameters parameters) {
|
||||
if (parameters.getMaxNumMeteringAreas() > 0) {
|
||||
Log.i(TAG, "Old metering areas: " + parameters.getMeteringAreas());
|
||||
List<Camera.Area> middleArea = buildMiddleArea(AREA_PER_1000);
|
||||
Log.i(TAG, "Setting metering area to : " + toString(middleArea));
|
||||
parameters.setMeteringAreas(middleArea);
|
||||
} else {
|
||||
Log.i(TAG, "Device does not support metering areas");
|
||||
}
|
||||
}
|
||||
|
||||
private static List<Camera.Area> buildMiddleArea(int areaPer1000) {
|
||||
return Collections.singletonList(
|
||||
new Camera.Area(new Rect(-areaPer1000, -areaPer1000, areaPer1000, areaPer1000), 1));
|
||||
}
|
||||
|
||||
public static void setVideoStabilization(Camera.Parameters parameters) {
|
||||
if (parameters.isVideoStabilizationSupported()) {
|
||||
if (parameters.getVideoStabilization()) {
|
||||
Log.i(TAG, "Video stabilization already enabled");
|
||||
} else {
|
||||
Log.i(TAG, "Enabling video stabilization...");
|
||||
parameters.setVideoStabilization(true);
|
||||
}
|
||||
} else {
|
||||
Log.i(TAG, "This device does not support video stabilization");
|
||||
}
|
||||
}
|
||||
|
||||
public static void setBarcodeSceneMode(Camera.Parameters parameters) {
|
||||
if (Camera.Parameters.SCENE_MODE_BARCODE.equals(parameters.getSceneMode())) {
|
||||
Log.i(TAG, "Barcode scene mode already set");
|
||||
return;
|
||||
}
|
||||
String sceneMode = findSettableValue("scene mode",
|
||||
parameters.getSupportedSceneModes(),
|
||||
Camera.Parameters.SCENE_MODE_BARCODE);
|
||||
if (sceneMode != null) {
|
||||
parameters.setSceneMode(sceneMode);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setZoom(Camera.Parameters parameters, double targetZoomRatio) {
|
||||
if (parameters.isZoomSupported()) {
|
||||
Integer zoom = indexOfClosestZoom(parameters, targetZoomRatio);
|
||||
if (zoom == null) {
|
||||
return;
|
||||
}
|
||||
if (parameters.getZoom() == zoom) {
|
||||
Log.i(TAG, "Zoom is already set to " + zoom);
|
||||
} else {
|
||||
Log.i(TAG, "Setting zoom to " + zoom);
|
||||
parameters.setZoom(zoom);
|
||||
}
|
||||
} else {
|
||||
Log.i(TAG, "Zoom is not supported");
|
||||
}
|
||||
}
|
||||
|
||||
private static Integer indexOfClosestZoom(Camera.Parameters parameters, double targetZoomRatio) {
|
||||
List<Integer> ratios = parameters.getZoomRatios();
|
||||
Log.i(TAG, "Zoom ratios: " + ratios);
|
||||
int maxZoom = parameters.getMaxZoom();
|
||||
if (ratios == null || ratios.isEmpty() || ratios.size() != maxZoom + 1) {
|
||||
Log.w(TAG, "Invalid zoom ratios!");
|
||||
return null;
|
||||
}
|
||||
double target100 = 100.0 * targetZoomRatio;
|
||||
double smallestDiff = Double.POSITIVE_INFINITY;
|
||||
int closestIndex = 0;
|
||||
for (int i = 0; i < ratios.size(); i++) {
|
||||
double diff = Math.abs(ratios.get(i) - target100);
|
||||
if (diff < smallestDiff) {
|
||||
smallestDiff = diff;
|
||||
closestIndex = i;
|
||||
}
|
||||
}
|
||||
Log.i(TAG, "Chose zoom ratio of " + (ratios.get(closestIndex) / 100.0));
|
||||
return closestIndex;
|
||||
}
|
||||
|
||||
public static void setInvertColor(Camera.Parameters parameters) {
|
||||
if (Camera.Parameters.EFFECT_NEGATIVE.equals(parameters.getColorEffect())) {
|
||||
Log.i(TAG, "Negative effect already set");
|
||||
return;
|
||||
}
|
||||
String colorMode = findSettableValue("color effect",
|
||||
parameters.getSupportedColorEffects(),
|
||||
Camera.Parameters.EFFECT_NEGATIVE);
|
||||
if (colorMode != null) {
|
||||
parameters.setColorEffect(colorMode);
|
||||
}
|
||||
}
|
||||
|
||||
public static Point findBestPreviewSizeValue(Camera.Parameters parameters, Point screenResolution) {
|
||||
|
||||
List<Camera.Size> rawSupportedSizes = parameters.getSupportedPreviewSizes();
|
||||
if (rawSupportedSizes == null) {
|
||||
Log.w(TAG, "Device returned no supported preview sizes; using default");
|
||||
Camera.Size defaultSize = parameters.getPreviewSize();
|
||||
if (defaultSize == null) {
|
||||
throw new IllegalStateException("Parameters contained no preview size!");
|
||||
}
|
||||
return new Point(defaultSize.width, defaultSize.height);
|
||||
}
|
||||
|
||||
// Sort by size, descending
|
||||
List<Camera.Size> supportedPreviewSizes = new ArrayList<>(rawSupportedSizes);
|
||||
Collections.sort(supportedPreviewSizes, new Comparator<Camera.Size>() {
|
||||
@Override
|
||||
public int compare(Camera.Size a, Camera.Size b) {
|
||||
int aPixels = a.height * a.width;
|
||||
int bPixels = b.height * b.width;
|
||||
if (bPixels < aPixels) {
|
||||
return -1;
|
||||
}
|
||||
if (bPixels > aPixels) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
|
||||
if (Log.isLoggable(TAG, Log.INFO)) {
|
||||
StringBuilder previewSizesString = new StringBuilder();
|
||||
for (Camera.Size supportedPreviewSize : supportedPreviewSizes) {
|
||||
previewSizesString.append(supportedPreviewSize.width).append('x')
|
||||
.append(supportedPreviewSize.height).append(' ');
|
||||
}
|
||||
Log.i(TAG, "Supported preview sizes: " + previewSizesString);
|
||||
}
|
||||
|
||||
double screenAspectRatio = (double) screenResolution.x / (double) screenResolution.y;
|
||||
|
||||
// Remove sizes that are unsuitable
|
||||
Iterator<Camera.Size> it = supportedPreviewSizes.iterator();
|
||||
while (it.hasNext()) {
|
||||
Camera.Size supportedPreviewSize = it.next();
|
||||
int realWidth = supportedPreviewSize.width;
|
||||
int realHeight = supportedPreviewSize.height;
|
||||
if (realWidth * realHeight < MIN_PREVIEW_PIXELS) {
|
||||
it.remove();
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean isCandidatePortrait = realWidth < realHeight;
|
||||
int maybeFlippedWidth = isCandidatePortrait ? realHeight : realWidth;
|
||||
int maybeFlippedHeight = isCandidatePortrait ? realWidth : realHeight;
|
||||
double aspectRatio = (double) maybeFlippedWidth / (double) maybeFlippedHeight;
|
||||
double distortion = Math.abs(aspectRatio - screenAspectRatio);
|
||||
if (distortion > MAX_ASPECT_DISTORTION) {
|
||||
it.remove();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (maybeFlippedWidth == screenResolution.x && maybeFlippedHeight == screenResolution.y) {
|
||||
Point exactPoint = new Point(realWidth, realHeight);
|
||||
Log.i(TAG, "Found preview size exactly matching screen size: " + exactPoint);
|
||||
return exactPoint;
|
||||
}
|
||||
}
|
||||
|
||||
// If no exact match, use largest preview size. This was not a great idea on older devices because
|
||||
// of the additional computation needed. We're likely to get here on newer Android 4+ devices, where
|
||||
// the CPU is much more powerful.
|
||||
if (!supportedPreviewSizes.isEmpty()) {
|
||||
Camera.Size largestPreview = supportedPreviewSizes.get(0);
|
||||
Point largestSize = new Point(largestPreview.width, largestPreview.height);
|
||||
Log.i(TAG, "Using largest suitable preview size: " + largestSize);
|
||||
return largestSize;
|
||||
}
|
||||
|
||||
// If there is nothing at all suitable, return current preview size
|
||||
Camera.Size defaultPreview = parameters.getPreviewSize();
|
||||
if (defaultPreview == null) {
|
||||
throw new IllegalStateException("Parameters contained no preview size!");
|
||||
}
|
||||
Point defaultSize = new Point(defaultPreview.width, defaultPreview.height);
|
||||
Log.i(TAG, "No suitable preview sizes, using default: " + defaultSize);
|
||||
return defaultSize;
|
||||
}
|
||||
|
||||
private static String findSettableValue(String name,
|
||||
Collection<String> supportedValues,
|
||||
String... desiredValues) {
|
||||
Log.i(TAG, "Requesting " + name + " value from among: " + Arrays.toString(desiredValues));
|
||||
Log.i(TAG, "Supported " + name + " values: " + supportedValues);
|
||||
if (supportedValues != null) {
|
||||
for (String desiredValue : desiredValues) {
|
||||
if (supportedValues.contains(desiredValue)) {
|
||||
Log.i(TAG, "Can set " + name + " to: " + desiredValue);
|
||||
return desiredValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
Log.i(TAG, "No supported values match");
|
||||
return null;
|
||||
}
|
||||
|
||||
private static String toString(Collection<int[]> arrays) {
|
||||
if (arrays == null || arrays.isEmpty()) {
|
||||
return "[]";
|
||||
}
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append('[');
|
||||
Iterator<int[]> it = arrays.iterator();
|
||||
while (it.hasNext()) {
|
||||
buffer.append(Arrays.toString(it.next()));
|
||||
if (it.hasNext()) {
|
||||
buffer.append(", ");
|
||||
}
|
||||
}
|
||||
buffer.append(']');
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
private static String toString(Iterable<Camera.Area> areas) {
|
||||
if (areas == null) {
|
||||
return null;
|
||||
}
|
||||
StringBuilder result = new StringBuilder();
|
||||
for (Camera.Area area : areas) {
|
||||
result.append(area.rect).append(':').append(area.weight).append(' ');
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
public static String collectStats(Camera.Parameters parameters) {
|
||||
return collectStats(parameters.flatten());
|
||||
}
|
||||
|
||||
public static String collectStats(CharSequence flattenedParams) {
|
||||
StringBuilder result = new StringBuilder(1000);
|
||||
|
||||
result.append("BOARD=").append(Build.BOARD).append('\n');
|
||||
result.append("BRAND=").append(Build.BRAND).append('\n');
|
||||
result.append("CPU_ABI=").append(Build.CPU_ABI).append('\n');
|
||||
result.append("DEVICE=").append(Build.DEVICE).append('\n');
|
||||
result.append("DISPLAY=").append(Build.DISPLAY).append('\n');
|
||||
result.append("FINGERPRINT=").append(Build.FINGERPRINT).append('\n');
|
||||
result.append("HOST=").append(Build.HOST).append('\n');
|
||||
result.append("ID=").append(Build.ID).append('\n');
|
||||
result.append("MANUFACTURER=").append(Build.MANUFACTURER).append('\n');
|
||||
result.append("MODEL=").append(Build.MODEL).append('\n');
|
||||
result.append("PRODUCT=").append(Build.PRODUCT).append('\n');
|
||||
result.append("TAGS=").append(Build.TAGS).append('\n');
|
||||
result.append("TIME=").append(Build.TIME).append('\n');
|
||||
result.append("TYPE=").append(Build.TYPE).append('\n');
|
||||
result.append("USER=").append(Build.USER).append('\n');
|
||||
result.append("VERSION.CODENAME=").append(Build.VERSION.CODENAME).append('\n');
|
||||
result.append("VERSION.INCREMENTAL=").append(Build.VERSION.INCREMENTAL).append('\n');
|
||||
result.append("VERSION.RELEASE=").append(Build.VERSION.RELEASE).append('\n');
|
||||
result.append("VERSION.SDK_INT=").append(Build.VERSION.SDK_INT).append('\n');
|
||||
|
||||
if (flattenedParams != null) {
|
||||
String[] params = SEMICOLON.split(flattenedParams);
|
||||
Arrays.sort(params);
|
||||
for (String param : params) {
|
||||
result.append(param).append('\n');
|
||||
}
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Über 1D-Barcodes (Strichcodes)</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>Die altbekannten Strichcodes, wie solche auf Produktverpackungen, werden auch eindimensionale Barcodes genannt. Es gibt einige verbreitete Arten, wie den UPC (Universal Product Code) und den EAN (European Article Number). Die meisten schauen so aus:</p>
|
||||
<p class="imgcenter"><img src="../images/big-1d.png"/></p>
|
||||
<p>Diese Strichcodes enthalten eine einmalige Nummer, welche ein Produkt, wie ein Buch oder eine CD, beschreiben. Man kann nach dieser Nummer im Internet suchen, um Preise oder Beurteilungen zu finden.</p>
|
||||
<p>Wenn man den Code eines Buches einscannt, kann man den Inhalt des Buches nach Wörtern oder Sätzen durchsuchen und alle Seiten finden, in denen dieses Wort vorkam:</p>
|
||||
<p class="imgcenter"><img src="../images/search-book-contents.jpg"/></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,28 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Über 2D-Barcodes</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>Der <strong>Barcode Scanner</strong> kann auch zweidimensionale Barcodes, wie den QR-Code und den DataMatrix-Code einlesen. Die Barcodes in diesem Beispiel enthalten einen Hyperlink auf die Projekt-Homepage von ZXing:</p>
|
||||
<p class="imgcenter">
|
||||
<img src="../images/big-qr.png"/>
|
||||
<img src="../images/big-datamatrix.png"/>
|
||||
<img src="../images/big-pdf417.png"/>
|
||||
<img src="../images/big-aztec.png"/>
|
||||
</p>
|
||||
<p>Ein QR-Code kann auch eine Visitenkarte mit Kontaktinformationen wie Telefonnummern und E-Mail-Adressen enthalten. Wird ein solcher Code eingescannt, dann wird eine Auswahl an Aktionen angezeigt:</p>
|
||||
<p class="imgcenter"><img src="../images/contact-results-screen.jpg"/></p>
|
||||
<p>Neben URLs und Kontaktdaten können QR-Codes auch folgendes enthalten:</p>
|
||||
<ul>
|
||||
<li>Kalendereinträge, die man dem Kalender hinzufügen kann</li>
|
||||
<li>Telefonnummern, die man anrufen oder abspeichern kann</li>
|
||||
<li>SMS-Nachrichten, die man verschicken kann</li>
|
||||
<li>E-Mail-Adressen, denen man eine Nachricht schreiben kann</li>
|
||||
<li>Geographische Koordinaten, die zu der man die Karte öffnen kann</li>
|
||||
<li>Einfachen Text, den man lesen oder in die Zwischenablage kopieren kann</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,23 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Barcode Scanner-Hilfe</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>Dies ist die offizielle Android App des Open-Source-Projekts ZXing:<br/>
|
||||
<a href="http://github.com/zxing/zxing">http://github.com/zxing/zxing</a></p>
|
||||
<p>Der <strong>Barcode Scanner</strong> verwendet die Kamera ihres Handys, um Barcodes zu lesen und Produktinformationen wie Preise und Bewertungen zu suchen.</p>
|
||||
<p class="imgcenter"><img src="../images/scan-example.png"/></p>
|
||||
<p>Er liest auch 2D-Barcodes wie den QR-Code und DataMatrix. Diese Barcodes können z.B. Links zu Webseiten enthalten oder Kontaktinformationen wie Telefonnummern und E-Mail-Adressen.</p>
|
||||
<ul class="touchable">
|
||||
<li><a href="whatsnew.html">Neues in dieser Version</a></li>
|
||||
<li><a href="scanning.html">Tipps fürs scannen</a></li>
|
||||
<li><a href="about1d.html">Mehr über 1D-Barcodes</a></li>
|
||||
<li><a href="about2d.html">Mehr über 2D-Barcodes</a></li>
|
||||
<li><a href="sharing.html">So erstellen Sie QR-Codes</a></li>
|
||||
<li><a href="license.html">Datenschutz-, Rechts- und Lizenzinformationen</a></li>
|
||||
</ul>
|
||||
<p>Übersetzt von Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,30 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Datenschutz-, Rechts- und Lizenzinformationen</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3>Datenschutz</h3>
|
||||
|
||||
<p><strong class="notranslate">Barcode Scanner</strong> sammelt, speichert oder übermittelt keine Informationen über seine Nutzer oder die Nutzung der Anwendung. Die Anwendung greift auf persönliche Daten wie Kontakte und Lesezeichen nur zu, um die Funktionalität der Anwendung zu implementieren, wie z.B. QR-Codes von Kontakten und Lesezeichen auf dem Bildschirm anzuzeigen.</p>
|
||||
|
||||
<p>Beachten Sie, dass diese Anwendung auf Dienste von Drittanbietern zugreift, dies sind Google Books, Google Produktsuche und Amazon. Dies geschieht, um weitere Informationen über ein Produkt nach einem Scan abzurufen und anzuzeigen. Diese Drittanbieter erhalten die eingescannten Daten und können diese auch loggen.
|
||||
Auch kann es notwendig sein, die Anfrage an einen Server zu schicken, der von dieser Anwendung betrieben wird, um die Anfrage für einen Drittanbieter passend zu machen, wie z.B. die Unterzeichnung der Anfrage. Neben dem Suchbegriff wird keine weitere Informationen zu den Anfragen hinzugefügt.</p>
|
||||
|
||||
<p>Beachten Sie auch, dass diese Anwendung auf Web-Sites und Anwendungen von Drittanbietern verlinkt, wie z.B. Google Produktsuche. Es werden keine anderen Informationen übertragen, als die eingescannten Daten. Diese Seiten und Anwendungen sind unabhängig und nicht mit dieser Anwendung verbunden, daher werden sie nicht von dieser Datenschutzerklärung abgedeckt.</p>
|
||||
|
||||
<h3>Warenzeichen</h3>
|
||||
|
||||
<p><span class="notranslate">Google, Google Books, Google Product Search,
|
||||
Barcode Scanner, ZXing, QR Code, Data Matrix, Aztec</span> sind Warenzeichen ihrer jeweiligen Eigentümer.</p>
|
||||
|
||||
<h3>Lizenz-und Urheberrecht</h3>
|
||||
|
||||
<p>Dieses Projekt basiert auf der <a class="notranslate" href="http://github.com/zxing/zxing">ZXing</a> Open-Source-Barcode-Scanning-Bibliothek und ist lizenziert unter den Bedingungen der <a class="notranslate" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a>:</p>
|
||||
|
||||
<p style="font-size:200%"><a class="notranslate" href="../html/apache-license.txt">Apache License 2.0</a></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Tipps fürs scannen</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>Der Scanner durchsucht kontinuierlich den rechteckigen Bereich auf dem Bildschirm. Dabei muss der Barcode vollständig im rechteckigen Sucher erscheinen:</p>
|
||||
<p class="imgcenter"><img src="../images/demo-yes.png" style="padding:5px"/><img src="../images/demo-no.png" style="padding:5px"/></p>
|
||||
<p>Für 1D-Barcodes, auch Strichcodes genannt, welche sich auf allen Handelsprodukten befinden, benötigt man ein Handy mit Autofokus. Ohne diesen können nur QR-Codes und DataMatrix-Codes eingescannt werden.</p>
|
||||
<p>Wenn ein Barcode eingelesen wurde, piepst das Handy und es wird das Ergebnis des Scans angezeigt, sowie eine Beschreibung des Barcode-Inhalts, und verschiedene Möglichkeiten wie weiter verfahren werden soll.</p>
|
||||
<p>Falls das Einscannen nicht richtig funktioniert, versuchen Sie das Handy ruhiger zu halten. Wenn das Bild unscharf ist, vergrößern oder verkleinern Sie den Abstand zum Barcode.</p>
|
||||
<ul class="touchable">
|
||||
<li><a href="about1d.html"> Über 1D-Barcodes </a></li>
|
||||
<li><a href="about2d.html"> Über 2D-Barcodes </a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>So erstellen Sie einen QR-Code</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>Der <strong>Barcode Scanner</strong> kann nicht nur QR-Codes einlesen, sondern auch selbst erzeugen und auf dem Bildschirm anzeigen. Diesen QR-Code können Sie dann einem Freund zeigen, der den Code mit seinen Handy einscannen kann.</p>
|
||||
<p class="imgcenter"><img src="../images/scan-from-phone.png"/></p>
|
||||
<p>Um diese Funktion zu nutzen, einfach auf dem Hauptbildschirm auf die Menü-Taste drücken, und auf <em>Senden</em> tippen. Dann wählen, ob Sie einen Kontakt, ein Lesezeichen, eine Anwendung oder den Inhalt der Zwischenablage senden wollen und der QR-Code wird automatisch generiert. Wenn Sie fertig sind, drücken Sie die Zurücktaste.</p>
|
||||
<p>Um QR-Codes auf Ihrem Computer zu erzeugen, testen Sie den ZXing QR Code Generator, er basiert auf dem selben Quelltext wie dieses Programm: <a href="http://zxing.appspot.com/generator/">http://zxing.appspot.com/generator/</a></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Neues in dieser Version von Barcode Scanner</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li> Die History-Funktion kann ausgeschaltet werden </li>
|
||||
<li> Bug-Fixes </li>
|
||||
</ul>
|
||||
<p>Übersetzt von Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>About 1D barcodes</title>
|
||||
<link rel="stylesheet" href="../style.css" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>Traditional barcodes, such as those printed on product packaging, are also known as one dimensional barcodes. There are several types commonly used, including UPC and EAN. Most look similar to this:</p>
|
||||
<p class="imgcenter"><img src="../images/big-1d.png"/></p>
|
||||
<p>These 1D barcodes contain a unique code which typically describes a product, like a CD or a book. You can look this code up on the internet to find prices, reviews, and more.</p>
|
||||
<p>If you scan a book, you can also search the contents of the book for a word or phrase, and find all the pages where it appears:</p>
|
||||
<p class="imgcenter"><img src="../images/search-book-contents.jpg"/></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,28 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>About 2D barcodes</title>
|
||||
<link rel="stylesheet" href="../style.css" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p><strong>Barcode Scanner</strong> also understands how to read two dimensional barcodes, like QR Codes and Data Matrix codes. For example, the codes below contain a hyperlink to the ZXing Project home page:</p>
|
||||
<p class="imgcenter">
|
||||
<img src="../images/big-qr.png"/>
|
||||
<img src="../images/big-datamatrix.png"/>
|
||||
<img src="../images/big-pdf417.png"/>
|
||||
<img src="../images/big-aztec.png"/>
|
||||
</p>
|
||||
<p>You can also represent contact information in a QR Code, and put it on a business card or web site. When you scan it, the results screen provides a choice of actions:</p>
|
||||
<p class="imgcenter"><img src="../images/contact-results-screen.jpg"/></p>
|
||||
<p>Besides URLs and contact info, QR Codes can also contain:</p>
|
||||
<ul>
|
||||
<li>Calendar events, which you can add to your Calendar</li>
|
||||
<li>Phone numbers, which you can dial</li>
|
||||
<li>SMS numbers, which you can text message</li>
|
||||
<li>Email addresses, which you can email</li>
|
||||
<li>Geographic coordinates, which you can open in Maps</li>
|
||||
<li>Plain text, which you can read, then share with a friend</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,23 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Barcode Scanner Help</title>
|
||||
<link rel="stylesheet" href="../style.css" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>The official Android app of the open source ZXing project:<br/>
|
||||
<a href="http://github.com/zxing/zxing">http://github.com/zxing/zxing</a></p>
|
||||
<p>Barcode Scanner uses the camera on your phone to read barcodes and look up product information such as prices and reviews.</p>
|
||||
<p class="imgcenter"><img src="../images/scan-example.png"/></p>
|
||||
<p>It also reads 2D barcodes such as QR Codes and Data Matrix. These can contain links to web sites, contact information such as phone numbers and email addresses, and more.</p>
|
||||
<ul class="touchable">
|
||||
<li><a href="whatsnew.html">What's new in this version</a></li>
|
||||
<li><a href="scanning.html">How to scan</a></li>
|
||||
<li><a href="about1d.html">About 1D barcodes</a></li>
|
||||
<li><a href="about2d.html">About 2D barcodes</a></li>
|
||||
<li><a href="sharing.html">How to create QR Codes</a></li>
|
||||
<li><a href="license.html">Privacy Policy, Legal and License Information</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,42 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Privacy Policy, Legal and License Information</title>
|
||||
<link rel="stylesheet" href="../style.css" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3>Privacy Policy</h3>
|
||||
|
||||
<p><strong class="notranslate">Barcode Scanner</strong> does not collect, store or transmit information about its
|
||||
users, nor usage of the application. The application accesses personal information such as contacts
|
||||
and bookmarks only in order to implement application functionality, such as sharing contacts and bookmarks
|
||||
by QR Codes on screen.</p>
|
||||
|
||||
<p>Note that this application accesses third-party services, including Google Books, Google Product Search and Amazon,
|
||||
in order to retrieve additional information following a scan. These third parties receive and may log these requests.
|
||||
Also, it may be necessary to send the request to a server operated by this application, in order to transform the
|
||||
request for use with the third-party service, such as signing the request.
|
||||
No additional information is added to the requests besides the query terms.</p>
|
||||
|
||||
<p>Also note that this application links to third-party web sites and applications. Again,
|
||||
no information other than query terms are passed on as part of these links. These sites and applications are
|
||||
separate from and not affiliated with this application, and are not covered by this Privacy Policy.</p>
|
||||
|
||||
<h3>Trademarks</h3>
|
||||
|
||||
<p><span class="notranslate">Google, Google Books, Google Product Search,
|
||||
Barcode Scanner, ZXing, QR Code, Data Matrix, Aztec</span>
|
||||
are all trademarks of their respective owners.</p>
|
||||
|
||||
<h3>License and Copyright</h3>
|
||||
|
||||
<p>This project is based on the <a href="http://github.com/zxing/zxing" class="notranslate">ZXing</a> open source barcode
|
||||
scanning library, and is licensed to you under the terms of the
|
||||
<a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="notranslate">Apache License 2.0</a>:</p>
|
||||
|
||||
<p style="font-size:200%"><a href="../html/apache-license.txt" class="notranslate">Apache License 2.0</a></p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>How to scan</title>
|
||||
<link rel="stylesheet" href="../style.css" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>Barcode Scanner continuously scans a square region shown on your screen -- just line up the phone so the barcode is completely inside the viewfinder rectangle:</p>
|
||||
<p class="imgcenter"><img src="../images/demo-yes.png" style="padding:5px"/><img src="../images/demo-no.png" style="padding:5px"/></p>
|
||||
<p>1D barcodes like those found on products require a phone with autofocus. Without it, only 2D formats like QR Codes and Data Matrix codes will be scannable.</p>
|
||||
<p>When a barcode is read, a beep sound will play and you'll see the results of the scan, a description of what the barcode contains, and options to take action on the contents.</p>
|
||||
<p>If you're having trouble scanning, make sure to hold the phone steady. If the camera is unable to focus, try moving the phone further or closer from the barcode.</p>
|
||||
<ul class="touchable">
|
||||
<li><a href="about1d.html">About 1D barcodes</a></li>
|
||||
<li><a href="about2d.html">About 2D barcodes</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>How to create QR Codes</title>
|
||||
<link rel="stylesheet" href="../style.css" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>In addition to scanning 2D barcodes, Barcode Scanner can also generate a QR Code and display it on your screen. Then you can show it to a friend, and let them scan the barcode with their phone:</p>
|
||||
<p class="imgcenter"><img src="../images/scan-from-phone.png"/></p>
|
||||
<p>To use this feature, press the Menu button from the main scanning screen, and tap Share. Then choose whether you want to share a contact, a bookmark, an application, or the contents of the clipboard. A QR Code will be generated automatically. When you're done, press Back or Home.</p>
|
||||
<p>To generate QR Codes from your computer, try the ZXing QR Code Generator: <a href="http://zxing.appspot.com/generator/">http://zxing.appspot.com/generator/</a></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>What's new in Barcode Scanner</title>
|
||||
<link rel="stylesheet" href="../style.css" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li>The History feature can be turned off</li>
|
||||
<li>Bug fixes</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,18 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Acerca de los códigos de barras 1D </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Códigos de barras tradicionales, tales como las impresas en el embalaje del producto,
|
||||
se conocen también como uno códigos de barras bidimensionales. Existen varios tipos de uso común,
|
||||
incluyendo UPC y EAN. La mayoría de aspecto similar a este: </p>
|
||||
<p class="imgcenter"><img src="../images/big-1d.png"/></p>
|
||||
<p> Estos códigos de barras 1D contiene un código único que generalmente describe un producto, como un CD o un libro.
|
||||
Usted puede ver este código en el Internet para encontrar precios, comentarios y más. </p>
|
||||
<p> Si digitaliza un libro, también puede buscar en el contenido del libro para una palabra o frase, y encontrar todas
|
||||
las páginas en las que aparece: </p>
|
||||
<p class="imgcenter"><img src="../images/search-book-contents.jpg"/></p>
|
||||
</html>
|
||||
@@ -1,30 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Acerca de los códigos de barras 2D </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p><strong> Barcode Scanner </strong> También entiende cómo leer dos códigos de barras bidimensionales,
|
||||
como los códigos QR y códigos Data Matrix. Por ejemplo, los códigos que siguen contienen un hipervínculo a la
|
||||
página principal de Project ZXing: </p>
|
||||
<p class="imgcenter">
|
||||
<img src="../images/big-qr.png"/>
|
||||
<img src="../images/big-datamatrix.png"/>
|
||||
<img src="../images/big-pdf417.png"/>
|
||||
<img src="../images/big-aztec.png"/>
|
||||
</p>
|
||||
<p> También puede representar la información de contacto en un código QR, y usarlo en una tarjeta
|
||||
de visita o en un sitio web. Cuando se escanea, la pantalla de resultados se ofrecen una serie de acciones: </p>
|
||||
<p class="imgcenter"><img src="../images/contact-results-screen.jpg"/></p>
|
||||
<p> Además de las direcciones URL y la información de contacto, los códigos QR también puede contener: </p>
|
||||
<ul>
|
||||
<li> Los eventos del calendario, que se pueden añadir a su calendario </li>
|
||||
<li> Los números de teléfono, que puede marcar </li>
|
||||
<li> SMS números, a los que puede enviar mensaje de texto </li>
|
||||
<li> Direcciones de correo electrónico, a los que se puede enviar por correo electrónico </li>
|
||||
<li> Coordenadas Geográficas, que se puede abrir en Mapas </li>
|
||||
<li> Texto sin formato, que se puede leer, compartir con un amigo </li>
|
||||
</ul>
|
||||
</html>
|
||||
@@ -1,24 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Ayuda de Barcode Scanner</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> La aplicación oficial de Android del proyecto de código abierto ZXing:<br/>
|
||||
<a href="http://github.com/zxing/zxing"> http://github.com/zxing/zxing </a></p>
|
||||
<p> Barcode Scanner utiliza la cámara de su móvil para leer códigos de barras y buscar información sobre
|
||||
los productos como los precios y las revisiones. </p>
|
||||
<p class="imgcenter"><img src="../images/scan-example.png"/></p>
|
||||
<p> También lee los códigos de barras 2D, como los Códigos QR y Data Matrix. Estos pueden contener enlaces
|
||||
a otros sitios web, información de contacto, como números de teléfono y direcciones de correo electrónico y mucho más. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="whatsnew.html"> ¿Qué hay de nuevo en esta versión? </a></li>
|
||||
<li><a href="scanning.html"> Cómo escanear </a></li>
|
||||
<li><a href="about1d.html"> Acerca de los códigos de barras 1D </a></li>
|
||||
<li><a href="about2d.html"> Acerca de los códigos de barras 2D </a></li>
|
||||
<li><a href="sharing.html"> Cómo crear códigos QR </a></li>
|
||||
<li><a href="license.html"> Política de Privacidad Información Legal y Licencia </a></li>
|
||||
</ul>
|
||||
</html>
|
||||
@@ -1,39 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Política de Privacidad Información Legal y Licencia </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3> Política de privacidad </h3>
|
||||
|
||||
<p><strong class="notranslate">Barcode Scanner</strong> no recogerá, almacenará ni transmitirá información sobre sus usuarios,
|
||||
ni de uso de la aplicación. La aplicación tiene acceso a información personal, como contactos y favoritos solo con el fin
|
||||
de implementar la funcionalidad de la aplicación, tales como el intercambio de contactos y favoritos de los códigos QR en
|
||||
la pantalla. </p>
|
||||
|
||||
<p> Tenga en cuenta que esta aplicación tiene acceso a servicios de terceros, como Google Books, Google Product Search
|
||||
y Amazon, con el fin de obtener información adicional después de una exploración. Estos terceros pueden recibir y
|
||||
registrar estas solicitudes. Además, puede ser necesario el envío de la solicitud a un servidor operado por esta
|
||||
aplicación, con el fin de transformar la solicitud para su uso con el servicio de terceros, tales como la firma de
|
||||
la solicitud. No hay información adicional añadida a las peticiones, además de los términos de la consulta. </p>
|
||||
|
||||
<p> También tenga en cuenta que los enlaces de esta solicitud a sitios web de terceros y aplicaciones. Una vez más,
|
||||
hay más información que los términos de consulta se transmiten como parte de estos enlaces. Estos sitios y aplicaciones
|
||||
son independientes y no afiliados a esta solicitud, y no están cubiertos por esta Política de Privacidad. </p>
|
||||
|
||||
<h3> Marcas comerciales </h3>
|
||||
|
||||
<p><span class="notranslate">Google, Google Books, Google Product Search,
|
||||
Barcode Scanner, ZXing, QR Code, Data Matrix, Aztec</span> son marcas comerciales de sus respectivos propietarios. </p>
|
||||
|
||||
<h3> Licencia y Derechos de Autor </h3>
|
||||
|
||||
<p> Este proyecto se basa en la <a class="notranslate" href="http://github.com/zxing/zxing">ZXing</a> código de barras
|
||||
de código abierto biblioteca de exploración, y está disponible para usted bajo los términos de la
|
||||
<a class="notranslate" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a> : </p>
|
||||
|
||||
<p style="font-size:200%"><a class="notranslate" href="../html/apache-license.txt">Apache License 2.0</a></p>
|
||||
</html>
|
||||
@@ -1,18 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Cómo escanear </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Barcode Scanner escanea continuamente una región cuadrada que aparece en su pantalla - Sólo basta introducir el código de barras es completamente dentro del rectángulo del visor: </p>
|
||||
<p class="imgcenter"><img src="../images/demo-yes.png" style="padding:5px"/><img src="../images/demo-no.png" style="padding:5px"/></p>
|
||||
<p> Códigos de barras 1D, como las que se encuentran en los productos requieren un teléfono con enfoque automático. Sin él, sólo los códigos QR y códigos Data Matrix serán susceptibles de ser analizados. </p>
|
||||
<p> Cuando un código de barras es leído, un sonido será reproducido y podrás ver los resultados del análisis, una descripción de lo que contiene el código de barras, y las distintas opciones ejecutar acciones. </p>
|
||||
<p> Si usted está teniendo problemas de escaneo, asegúrese de sujetar el teléfono estable. Si la cámara no puede enfocar, mueva el teléfono más lejos o más cerca del código de barras. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="about1d.html"> Acerca de los códigos de barras 1D </a></li>
|
||||
<li><a href="about2d.html"> Acerca de los códigos de barras 2D </a></li>
|
||||
</ul>
|
||||
</html>
|
||||
@@ -1,13 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Cómo crear códigos QR </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Además de escanear códigos de barras 2D, Barcode Scanner también puede generar un código QR y lo mostrará en la pantalla. A continuación, lo puede mostrar a un amigo, y dejar que escanear el código de barras con su teléfono: </p>
|
||||
<p class="imgcenter"><img src="../images/scan-from-phone.png"/></p>
|
||||
<p> Para utilizar esta función, presione el botón Menú en la pantalla de exploración principal y presione Compartir. A continuación, seleccione si desea compartir un contacto, un marcador, una aplicación o el contenido del portapapeles. Un código QR se generará automáticamente. Cuando haya terminado, pulse Atrás o Inicio. </p>
|
||||
<p> Para generar códigos QR desde su computadora, pruebe el generador ZXing Código QR: <a href="http://zxing.appspot.com/generator/"> http://zxing.appspot.com/generator/ </a></p>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> ¿Qué hay de nuevo en Barcode Scanner? </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li> La función de Historia se puede apagar </li>
|
||||
<li> Corrección de errores </li>
|
||||
</ul>
|
||||
<p>Traducido por Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> À propos des codes barres 1D </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Les codes barres traditionnels, tels que ceux imprimés sur l'emballage des produits commerciaux, sont appelés codes barres 1D. Il existe plusieurs types couramment utilisés, par exemple UPC et EAN. La plupart ressemblent à ceci : </p>
|
||||
<p class="imgcenter"><img src="../images/big-1d.png"/></p>
|
||||
<p> Ces codes barres 1D contiennent un code unique qui décrit typiquement un produit, comme un CD ou un livre. Vous pouvez chercher ce code sur Internet pour trouver les prix ou les critiques d'un article. </p>
|
||||
<p> Si vous scannez un livre, vous pouvez également chercher un mot ou une phrase dans le contenu du livre, et trouver toutes les pages où ils apparaissent : </p>
|
||||
<p class="imgcenter"><img src="../images/search-book-contents.jpg"/></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,26 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> À propos des codes barres 2D </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p><strong> Barcode Scanner </strong> permet aussi de lire les codes barres à deux dimensions, comme les codes QR et les codes Data Matrix. Par exemple, les codes ci-dessous contiennent un lien hypertexte vers la page d'accueil du projet ZXing : </p>
|
||||
<p class="imgcenter">
|
||||
<img src="../images/big-qr.png"/>
|
||||
<img src="../images/big-datamatrix.png"/>
|
||||
<img src="../images/big-pdf417.png"/>
|
||||
<img src="../images/big-aztec.png"/></p>
|
||||
<p> Il est également possible de fournir des informations de contact dans un code QR, et le mettre sur une carte de visite ou un site Web. Lorsque vous scannez, l'écran de résultat fournit un choix d'actions : </p>
|
||||
<p class="imgcenter"><img src="../images/contact-results-screen.jpg"/></p>
|
||||
<p> En plus d'une URL ou d'informations de contact, les codes QR peuvent aussi contenir : </p>
|
||||
<ul>
|
||||
<li> Des événements/invitations, que vous pouvez ajouter à votre agenda </li>
|
||||
<li> Des numéros de téléphone que vous pouvez appeler, ou à qui vous pouvez envoyer un SMS </li>
|
||||
<li> Des adresses e-mail, à qui vous pouvez écrire </li>
|
||||
<li> Des coordonnées géographiques, que vous pouvez ouvrir dans Maps </li>
|
||||
<li> Du texte, que vous pouvez lire, puis partager avec un ami </li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,23 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Aide Barcode Scanner </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> L'application officielle Android du projet open-source ZXing :<br/>
|
||||
<a href="http://github.com/zxing/zxing"> http://github.com/zxing/zxing </a></p>
|
||||
<p> Barcode Scanner utilise la caméra de votre téléphone pour lire des codes barres, et rechercher des informations produit, telles que les prix et les critiques. </p>
|
||||
<p class="imgcenter"><img src="../images/scan-example.png"/></p>
|
||||
<p> Il lit également les codes barres 2D tels que les codes QR et Data Matrix. Ceux-ci peuvent contenir des liens vers des sites Web, des informations de contact comme des numéros de téléphone et des adresses e-mail, et plus encore. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="whatsnew.html"> Quoi de neuf dans cette version </a></li>
|
||||
<li><a href="scanning.html"> Comment numériser </a></li>
|
||||
<li><a href="about1d.html"> À propos de codes à barres 1D </a></li>
|
||||
<li><a href="about2d.html"> À propos de codes-barres 2D </a></li>
|
||||
<li><a href="sharing.html"> Comment créer des codes QR </a></li>
|
||||
<li><a href="license.html"> Politique de confidentialité, Informations légales et licence </a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,30 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Politique de confidentialité, Informations légales et licence </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3> Politique de confidentialité </h3>
|
||||
|
||||
<p><strong class="notranslate">Barcode Scanner</strong> ne collecte pas, stocke pas ni ne transmet des informations sur ses utilisateurs, ni l'utilisation de l'application. L'application accède à des informations personnelles telles que les contacts et les signets seulement dans le but de mettre en œuvre des fonctionnalités de l'application, tels que le partage des contacts et des signets par les codes QR sur l'écran. </p>
|
||||
|
||||
<p> Notez que cette application accède à des services tiers, y compris Google Books, Google Recherche d'un produit et Amazon, afin de récupérer des informations supplémentaires à la suite d'une analyse. Ces tierces parties reçoivent ces demandes, et peuvent éventuellement les stocker. En outre, il peut être nécessaire d'envoyer la requête à un serveur exploité par cette application, afin de transformer la demande pour une utilisation avec le service tiers, tels que la signature de la demande. Aucune information supplémentaire n'est ajoutée aux demandes en dehors des termes de la requête. </p>
|
||||
|
||||
<p> A noter également que cette application fournit des liens vers des sites et des applications Web de tiers. Encore une fois, aucune information autre que les termes de requête ne sont transmis dans le cadre de ces liens. Ces sites et applications sont séparés et ne sont pas affiliés à cette application, et ne sont pas couverts par la présente Politique de confidentialité. </p>
|
||||
|
||||
<h3> Marques </h3>
|
||||
|
||||
<p><span class="notranslate">Google, Google Books, Google Product Search,
|
||||
Barcode Scanner, ZXing, QR Code, Data Matrix, Aztec</span> sont tous des marques de commerce de leurs propriétaires respectifs. </p>
|
||||
|
||||
<h3> Licence et droits d'auteur </h3>
|
||||
|
||||
<p> Ce projet est basé sur la bibliothèque open source de scanning de codes barres <a class="notranslate" href="http://github.com/zxing/zxing">ZXing</a>, et est publié sous <a class="notranslate" href="http://www.apache.org/licenses/LICENSE-2.0.html">Licence Apache 2.0</a> : </p>
|
||||
|
||||
<p style="font-size:200%"><a class="notranslate" href="../html/apache-license.txt">Licence Apache 2.0</a></p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Comment numériser </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Barcode Scanner scanne en permanence une zone carrée affichée sur votre écran -- tenez le téléphone droit, de sorte que le code barres soit droit et complètement à l'intérieur du rectangle du viseur : </p>
|
||||
<p class="imgcenter"><img src="../images/demo-yes.png" style="padding:5px"/><img src="../images/demo-no.png" style="padding:5px"/></p>
|
||||
<p> Les code barres 1D comme ceux qu'on trouve sur les produits nécessitent un téléphone avec autofocus. Sans autofocus, seuls les codes QR et les codes Data Matrix seront scannables. </p>
|
||||
<p> Quand un code barres est lu, un bip sonore est émis, et le résultat de l'analyse s'affiche : une description de ce que le code barres contient, et ce que vous pouvez faire à partir de ces données. </p>
|
||||
<p> Si vous rencontrez des problèmes pour scanner un code barres, assurez-vous de tenir le téléphone sans trop bouger. Si l'appareil photo n'arrive pas à fournir une image nette, essayez de déplacer le téléphone plus loin ou plus près du code barres. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="about1d.html"> À propos des codes barres 1D </a></li>
|
||||
<li><a href="about2d.html"> À propos des codes barres 2D </a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Comment créer des codes QR </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> En plus de scanner des codes barres, Barcode Scanner peut aussi créér un code QR et l'afficher sur votre écran. Ensuite, vous pouvez le montrer à un ami, pour qu'il le scanne avec son téléphone : </p>
|
||||
<p class="imgcenter"><img src="../images/scan-from-phone.png"/></p>
|
||||
<p> Pour utiliser cette fonction, appuyez sur la touche Menu depuis l'écran principal, puis appuyez sur Partager. Ensuite, choisissez si vous voulez partager un contact, un signet, une application ou le contenu du presse-papiers. Un code QR est généré automatiquement. Lorsque vous avez terminé, appuyez sur Retour. </p>
|
||||
<p> Pour générer les codes QR à partir de votre ordinateur, essayez le générateur de code QR ZXing: <a href="http://zxing.appspot.com/generator/"> http://zxing.appspot.com/generator/ </a></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Quoi de neuf dans Barcode Scanner </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li> La fonction Historique peut être désactivée </li>
|
||||
<li> Corrections de bugs </li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> A proposito di codici a barre 1D </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Codici a barre tradizionali, come quelle stampate sulla confezione del prodotto, sono noti anche come uno codici a barre bidimensionali. Ci sono diversi tipi di uso comune, tra cui UPC ed EAN. La maggior parte simile al seguente: </p>
|
||||
<p class="imgcenter"><img src="../images/big-1d.png"/></p>
|
||||
<p> Queste barre 1D contengono un codice unico che descrive tipicamente un prodotto, come un CD o un libro. È possibile cercare questo codice su internet per trovare i prezzi, recensioni e altro. </p>
|
||||
<p> Se si esegue la scansione di un libro, è anche possibile cercare i contenuti del libro per una parola o una frase, e trovare tutte le pagine in cui appare: </p>
|
||||
<p class="imgcenter"><img src="../images/search-book-contents.jpg"/></p>
|
||||
<p>Tradotto da Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,28 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> A proposito di codici a barre 2D </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p><strong> Barcode Scanner </strong> comprende anche come leggere due codici a barre bidimensionali, come i codici QR e codici Data Matrix. Per esempio, i seguenti codici contengono un collegamento ipertestuale alla pagina ZXing principale del progetto: </p>
|
||||
<p class="imgcenter">
|
||||
<img src="../images/big-qr.png"/>
|
||||
<img src="../images/big-datamatrix.png"/>
|
||||
<img src="../images/big-pdf417.png"/>
|
||||
<img src="../images/big-aztec.png"/>
|
||||
</p>
|
||||
<p> È anche possibile rappresentare le informazioni di contatto in un QR Code, e metterlo su un biglietto da visita o un sito web. Quando si esegue la scansione, la schermata dei risultati fornisce una serie di azioni: </p>
|
||||
<p class="imgcenter"><img src="../images/contact-results-screen.jpg"/></p>
|
||||
<p> Oltre URL e informazioni di contatto, i codici QR possono contenere anche: </p>
|
||||
<ul>
|
||||
<li> Eventi del Calendario, che è possibile aggiungere al vostro calendario </li>
|
||||
<li> I numeri di telefono, che possono essere digitati </li>
|
||||
<li> Numeri di SMS, che è possibile il testo del messaggio </li>
|
||||
<li> Indirizzi e-mail, che possono essere inviati per email </li>
|
||||
<li> Coordinate geografiche, che è possibile aprire in Mappe </li>
|
||||
<li> Testo semplice, che si può leggere, quindi condividere con un amico </li>
|
||||
</ul>
|
||||
<p>Tradotto da Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,23 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Barcode Scanner Aiuto </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> L'applicazione ufficiale di Android del progetto aperto ZXing fonte:<br/>
|
||||
<a href="http://github.com/zxing/zxing"> http://github.com/zxing/zxing </a></p>
|
||||
<p> Scanner di codici a barre utilizza la fotocamera del telefono per leggere codici a barre e ricercare informazioni sui prodotti, i prezzi e le recensioni. </p>
|
||||
<p class="imgcenter"><img src="../images/scan-example.png"/></p>
|
||||
<p> Legge anche codici a barre 2D, come i codici QR e Data Matrix. Questi possono contenere link a siti web, informazioni di contatto, quali numeri di telefono e indirizzi e-mail e altro ancora. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="whatsnew.html"> Cosa c'è di nuovo in questa versione </a></li>
|
||||
<li><a href="scanning.html"> Come eseguire la scansione </a></li>
|
||||
<li><a href="about1d.html"> A proposito di codici a barre 1D </a></li>
|
||||
<li><a href="about2d.html"> A proposito di codici a barre 2D </a></li>
|
||||
<li><a href="sharing.html"> Come creare codici QR </a></li>
|
||||
<li><a href="license.html"> Informazioni legali e di licenza </a></li>
|
||||
</ul>
|
||||
<p>Tradotto da Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,30 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Privacy, Informazioni legali e di licenza </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3> Politica sulla privacy </h3>
|
||||
|
||||
<p><strong class="notranslate">Barcode Scanner</strong> non raccogliere, memorizzare o trasmettere le informazioni sui suoi utenti, né utilizzo dell'applicazione. L'applicazione accede a informazioni personali come contatti e segnalibri solo al fine di implementare la funzionalità dell'applicazione, come la condivisione di contatti e segnalibri da codici QR sullo schermo. </p>
|
||||
|
||||
<p> Si noti che questa applicazione accede a servizi di terze parti, tra cui Google Libri, Google Product Search e Amazon, al fine di recuperare le informazioni aggiuntive a seguito di una scansione. Queste terze parti ricevono e possono registrare queste richieste. Inoltre, può essere necessario inviare la richiesta a un server gestito da questa applicazione, per trasformare la richiesta per l'utilizzo con il servizio di terze parti, come la firma della richiesta. Nessuna informazione aggiuntiva si aggiunge alle richieste oltre i termini di query. </p>
|
||||
|
||||
<p> Si noti inoltre che i collegamenti questa applicazione per i siti Web di terze parti e le applicazioni. Anche in questo caso, nessuna informazione diversa termini di query vengono passati come parte di questi link. Questi siti e le applicazioni sono distinte e non è affiliato con questa applicazione, e non sono coperti da questa Informativa sulla privacy. </p>
|
||||
|
||||
<h3> Marchi di fabbrica </h3>
|
||||
|
||||
<p><span class="notranslate">Google, Google Books, Google Product Search,
|
||||
Barcode Scanner, ZXing, QR Code, Data Matrix, Aztec</span> sono tutti marchi di fabbrica dei rispettivi proprietari. </p>
|
||||
|
||||
<h3> Licenza e Copyright </h3>
|
||||
|
||||
<p> Questo progetto si basa sulla <a class="notranslate" href="http://github.com/zxing/zxing">ZXing</a> barcode open source scansione biblioteca, e viene concesso in licenza sotto i termini della <a class="notranslate" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a> : </p>
|
||||
|
||||
<p style="font-size:200%"><a class="notranslate" href="../html/apache-license.txt">Apache License 2.0</a></p>
|
||||
|
||||
<p>Tradotto da Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Come eseguire la scansione </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Barcode Scanner analizza continuamente una regione quadrata mostrata sullo schermo - solo linea il telefono in modo che il codice a barre è completamente all'interno del rettangolo del mirino: </p>
|
||||
<p class="imgcenter"><img src="../images/demo-yes.png" style="padding:5px"/><img src="../images/demo-no.png" style="padding:5px"/></p>
|
||||
<p> Codici a barre 1D, come quelle che si trovano sui prodotti richiede un telefono con autofocus. Senza di essa, solo i codici QR e codici Data Matrix sarà leggibile. </p>
|
||||
<p> Quando un codice a barre viene letto, un bip si giocare e vedrete i risultati della scansione, una descrizione di ciò che il codice a barre contiene, e le opzioni per intervenire sui contenuti. </p>
|
||||
<p> Se hai dei problemi di scansione, assicurarsi di tenere il telefono fermo. Se la fotocamera non riesce a mettere a fuoco, provare a spostare il telefono lontano o più vicino dal codice a barre. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="about1d.html"> A proposito di codici a barre 1D </a></li>
|
||||
<li><a href="about2d.html"> A proposito di codici a barre 2D </a></li>
|
||||
</ul>
|
||||
<p>Tradotto da Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Come creare codici QR </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Oltre alla scansione di codici a barre 2D, Barcode Scanner può anche generare un codice QR e visualizzarla sullo schermo. Poi si può mostrare ad un amico, e far loro eseguire la scansione del codice a barre con il proprio telefono: </p>
|
||||
<p class="imgcenter"><img src="../images/scan-from-phone.png"/></p>
|
||||
<p> Per utilizzare questa funzione, premere il tasto Menu dalla schermata di scansione principale, e toccare Condividi. Quindi scegliere se si desidera condividere un contatto, un segnalibro, un'applicazione, o il contenuto degli appunti. Un codice a barre verrà generato automaticamente. Al termine, premere Indietro o Home. </p>
|
||||
<p> Per generare i codici QR dal tuo computer, provare il generatore di ZXing QR Code: <a href="http://zxing.appspot.com/generator/"> http://zxing.appspot.com/generator/ </a></p>
|
||||
<p>Tradotto da Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Cosa c'è di nuovo nella Barcode Scanner </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li> La funzione Cronologia può essere disattivata </li>
|
||||
<li> Correzioni di bug </li>
|
||||
</ul>
|
||||
<p>Tradotto da Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>一次元バーコードについて</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>商品のパッケージに印刷されているような従来のバーコードは一次元バーコードと呼ばれています。一次元バーコードにはいくつか種類があり、UPC, EANといったものは一般的によく使われます。通常は次のような外見をしています。</p>
|
||||
<p class="imgcenter"><img src="../images/big-1d.png"/></p>
|
||||
<p>通常これらの一次元バーコードにはCDや本といった商品を表す商品固有のコードが含まれています。このコードをインターネットで検索すると価格やレビューなどがわかります。</p>
|
||||
<p>本を読み取った場合、次のように本の中から単語やフレーズを検索でき、単語やフレーズが含まれる全てのページを一覧できます。</p>
|
||||
<p class="imgcenter"><img src="../images/search-book-contents.jpg"/></p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,28 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>二次元バーコードについて</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p><strong>QRコードスキャナー</strong>はQRコードやData Matrixといった二次元バーコードも認識します。例えば、次の二次元コードにはZXingプロジェクトのホームページへのリンクが含まれます。</p>
|
||||
<p class="imgcenter">
|
||||
<img src="../images/big-qr.png"/>
|
||||
<img src="../images/big-datamatrix.png"/>
|
||||
<img src="../images/big-pdf417.png"/>
|
||||
<img src="../images/big-aztec.png"/>
|
||||
</p>
|
||||
<p>またQRコードで連絡先情報を表現して、名刺やウェブサイトに掲載できます。連絡先情報を含むQRコードを読み取ると、結果画面には処理の選択肢が表示されます。</p>
|
||||
<p class="imgcenter"><img src="../images/contact-results-screen.jpg"/></p>
|
||||
<p>URLや連絡先情報の他に、QRコードには次のような情報を含められます。</p>
|
||||
<ul>
|
||||
<li>カレンダーのイベント。カレンダーに追加できます</li>
|
||||
<li>電話番号。電話を掛けられます</li>
|
||||
<li>SMS番号。テキストメッセージを送れます</li>
|
||||
<li>電子メールアドレス。メールを送れます</li>
|
||||
<li>地理座標。地図で開けます</li>
|
||||
<li>通常の文章。読んだり友人と共有したりできます</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,22 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>QRコードスキャナー ヘルプ</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>ZXingオープンソースプロジェクト(<a href="http://github.com/zxing/zxing">http://github.com/zxing/zxing</a>)の公式Androidアプリです。</p>
|
||||
<p>QRコードスキャナーは携帯電話のカメラを使ってバーコードを読み取り、価格やレビューなどの製品情報を検索します。</p>
|
||||
<p class="imgcenter"><img src="../images/scan-example.png"/></p>
|
||||
<p>またQRコードやData Matrixといった二次元バーコードも読み取ります。二次元バーコードにはウェブサイトへのリンクや、電話番号やメールアドレスといった連絡先情報が含まれます。 </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="whatsnew.html">このバージョンでの新機能</a></li>
|
||||
<li><a href="scanning.html">スキャン方法</a></li>
|
||||
<li><a href="about1d.html">一次元バーコードについて</a></li>
|
||||
<li><a href="about2d.html">二次元バーコードについて</a></li>
|
||||
<li><a href="sharing.html">QRコードの作成方法</a></li>
|
||||
<li><a href="license.html">プライバシーポリシーおよび法的事項とライセンス情報</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,29 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>プライバシーポリシーおよび法的事項とライセンス情報</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3>プライバシーポリシー</h3>
|
||||
|
||||
<p><strong class="notranslate">QRコードスキャナー</strong>はユーザに関する情報やアプリケーションの使用状況を収集・保存・送信しません。アプリケーションは連絡先情報やブックマークといった個人情報を、QRコードを画面上に表示して共有するといったアプリケーションの機能を実装するためのみに利用します。</p>
|
||||
|
||||
<p>このアプリケーションは、スキャン後に追加の情報を得るためにGoogle ブックスやGoogle Product SearchやAmazonといった第三者サービスにアクセスする点に注意してください。そららの第三者サービスはリクエストを受け取り保存する場合があります。また、第三者サービスを利用する上でリクエストに対して署名を追加するなどの加工をするために、このアプリケーションによって運営されるサーバに対してリクエストを送信する必要がある場合があります。リクエストには検索キーワード以外の情報は含まれません。</p>
|
||||
|
||||
<p>また、このアプリケーションは第三者のウェブサイトやアプリケーションにリンクする点にも注意してください。この場合もやはりリンクを通じては検索キーワード以外の情報は渡されません。それらのサイトおよびアプリケーションはこのアプリケーションとは独立しており、提携しておらず、このプライバシーポリシーは及びません。</p>
|
||||
|
||||
<h3>商標について</h3>
|
||||
|
||||
<p><span class="notranslate">Google, Google Books, Google ブックス, Google Product Search, Barcode Scanner, QRコードスキャナー, ZXing, QR Code, QRコード, Data Matrix, Aztec</span>はすべてそれぞれの所有者の商標または登録商標です。</p>
|
||||
|
||||
<h3>ライセンスと著作権</h3>
|
||||
|
||||
<p>このプロジェクトは<a href="http://github.com/zxing/zxing" class="notranslate">ZXing</a>オープンソースバーコード読み取りライブラリに基いており、次の<a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="notranslate">Apache License 2.0</a>に従ってあなたにライセンスされています。</p>
|
||||
|
||||
<p style="font-size:200%"><a class="notranslate" href="../html/apache-license.txt">Apache License 2.0</a></p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>スキャン方法</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>QRコードスキャナーはスクリーン上の四角形の領域を連続して読み取ります。バーコードが完全にファインダーのフレームに収まるように携帯電話を動かしてください。</p>
|
||||
<p class="imgcenter"><img src="../images/demo-yes.png" style="padding:5px"/><img src="../images/demo-no.png" style="padding:5px"/></p>
|
||||
<p>商品に付与されているような一次元バーコードを読み取るためには、オートフォーカス付きの携帯電話が必要です。オートフォーカスが無い場合、QRコードとData Matrixのみが読み取れます。</p>
|
||||
<p>バーコードが読み取られるとビープ音が鳴り、読み取り結果としてバーコードの内容の説明と、内容に対して実行できる処理の一覧が表示されます。</p>
|
||||
<p>上手く読み取れない場合は、携帯電話を手でしっかりと固定してください。もしピントが合わない場合は、携帯電話をバーコードから離したり近づけたりしてみてください。</p>
|
||||
<ul class="touchable">
|
||||
<li><a href="about1d.html">一次元バーコードについて</a></li>
|
||||
<li><a href="about2d.html">二次元バーコードについて</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>QRコードの作成方法</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p>二次元バーコードの読み取りに加えて、QRコードスキャナーではQRコードを作成して携帯電話の画面に表示できます。そして次のように友人に見せて携帯電話で読み取ってもらえます。</p>
|
||||
<p class="imgcenter"><img src="../images/scan-from-phone.png"/></p>
|
||||
<p>この機能を使うためにはメインの読み取り画面でメニューボタンを押し、「共有」をタップします。そして連絡先情報・ブックマーク・アプリケーション・クリップボードの中身の中から共有したいものを選んで下さい。QRコードは自動で生成されます。共有が終了したら戻るボタンかホームボタンを押してください。</p>
|
||||
<p>パソコンからQRコードを生成するには、ZXing QR Code Generator (<a href="http://zxing.appspot.com/generator/">http://zxing.appspot.com/generator/</a>)をご利用ください。</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>このバージョンでの新機能</title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li> 履歴機能をオフにすることができ </li>
|
||||
<li> バグ修正 </li>
|
||||
</ul>
|
||||
<p>Googleによって翻訳翻訳。</p></body>
|
||||
</html>
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> 1D 바코드 정보 </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> 이러한 제품 포장에 인쇄 된 것과 같은 전통적인 바코드는도 1 차원 바코드로 알려져 있습니다. UPC 및 EAN 등 일반적으로 사용되는 여러 종류가 있습니다. 대부분은 다음과 유사 : </p>
|
||||
<p class="imgcenter"><img src="../images/big-1d.png"/></p>
|
||||
<p> 이 1D 바코드는 일반적으로 CD 나 책 같은 제품을 설명하는 고유 한 코드가 포함되어 있습니다. 당신은 가격, 리뷰 등을 찾아 인터넷에서이 코드를 찾아 볼 수 있습니다. </p>
|
||||
<p> 당신은 책을 스캔 할 경우, 당신은 또한 단어 나 문구에 대한 책의 내용을 검색하고 표시 모든 페이지를 찾을 수 있습니다 : </p>
|
||||
<p class="imgcenter"><img src="../images/search-book-contents.jpg"/></p>
|
||||
<p>Google 번역을 통해 번역.</p></body>
|
||||
</html>
|
||||
@@ -1,28 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> 에 대한 2 차원 바코드 </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p><strong> 바코드 스캐너 </strong> 또한, QR 코드 및 데이터 매트릭스 코드와 같은 2 차원 바코드를 읽는 방법을 이해하고 있습니다. 예를 들어, 아래의 코드는 ZXing 프로젝트 홈 페이지에 하이퍼 링크를 포함 : </p>
|
||||
<p class="imgcenter">
|
||||
<img src="../images/big-qr.png"/>
|
||||
<img src="../images/big-datamatrix.png"/>
|
||||
<img src="../images/big-pdf417.png"/>
|
||||
<img src="../images/big-aztec.png"/>
|
||||
</p>
|
||||
<p> 당신은 또한 QR 코드에 연락처 정보를 나타냅니다, 그리고 명함 또는 웹 사이트에 넣을 수 있습니다. 당신이 그것을 스캔하면 결과 화면이 작업의 선택을 제공합니다 : </p>
|
||||
<p class="imgcenter"><img src="../images/contact-results-screen.jpg"/></p>
|
||||
<p> URL 및 연락처 정보 외에, QR 코드도 포함 할 수 있습니다 : </p>
|
||||
<ul>
|
||||
<li> 귀하의 캘린더에 추가 할 수있는 캘린더 이벤트, </li>
|
||||
<li> 당신이 전화를 걸 수 전화 번호, </li>
|
||||
<li> 당신은 문자 메시지를 보낼 수있는 SMS 번호, </li>
|
||||
<li> 당신은 이메일을 보낼 수 이메일 주소 </li>
|
||||
<li> 당신이지도에서 열 수있는 지리 좌표, </li>
|
||||
<li> 당신이 읽을 수있는 일반 텍스트는 다음 친구와 공유 </li>
|
||||
</ul>
|
||||
<p>Google 번역을 통해 번역.</p></body>
|
||||
</html>
|
||||
@@ -1,23 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> 바코드 스캐너 도움말 </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> 오픈 소스 ZXing 프로젝트의 공식 안드로이드 응용 프로그램 :<br/>
|
||||
<a href="http://github.com/zxing/zxing"> http://github.com/zxing/zxing </a></p>
|
||||
<p> 바코드 스캐너는 바코드를 읽어와 같은 가격과 리뷰 등의 제품 정보를 조회 할 휴대 전화의 카메라를 사용합니다. </p>
|
||||
<p class="imgcenter"><img src="../images/scan-example.png"/></p>
|
||||
<p> 그것은 또한 QR 코드와 데이터 매트릭스와 같은 2 차원 바코드를 읽습니다. 이러한 웹 사이트에 대한 링크를 포함 할 수 있습니다, 같은 전화 번호와 이메일 주소 등의 정보를 문의하십시오. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="whatsnew.html"> 이 버전의 새로운 기능 </a></li>
|
||||
<li><a href="scanning.html"> 스캔하는 방법 </a></li>
|
||||
<li><a href="about1d.html"> 1D 바코드에 대한 </a></li>
|
||||
<li><a href="about2d.html"> 에 대한 2 차원 바코드 </a></li>
|
||||
<li><a href="sharing.html"> 어떻게 QR 코드를 만드는 방법 </a></li>
|
||||
<li><a href="license.html"> 개인 정보 보호 정책, 법률 및 라이센스 정보 </a></li>
|
||||
</ul>
|
||||
<p>Google 번역에 의해 번역.</p></body>
|
||||
</html>
|
||||
@@ -1,30 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> 개인 정보 보호 정책, 법률 및 라이센스 정보 </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3> 개인 정보 보호 정책 </h3>
|
||||
|
||||
<p><strong class="notranslate">Barcode Scanner</strong> 그 사용자 나 응용 프로그램의 사용에 대한 정보를 수집 저장하거나 전송하지 않습니다. 응용 프로그램은 연락처 및 책갈피 전용 같은 화면에 QR 코드로 연락처와 즐겨 찾기를 공유하는 등, 응용 프로그램 기능을 구현하기 위해 같은 개인 정보를 액세스 할 수 있습니다. </p>
|
||||
|
||||
<p> 이 응용 프로그램이 검색 다음에 대한 추가 정보를 검색하기 위해 Google 도서, 구글 제품 검색과 아마존 등의 써드 파티 서비스를 액세스합니다. 이러한 타사 수신하고 이러한 요청을 기록 할 수 있습니다. 또한, 이러한 요청을 서명 등의 타사 서비스 사용에 대한 요청을 변환하기 위해이 응용 프로그램에 의해 운영 서버에 요청을 보낼 필요가 있습니다. 더 자세한 내용은 쿼리 조건 외에 요청에 추가되지 않습니다. </p>
|
||||
|
||||
<p> 또한주의 그러한 구글 구매자와 같은 타사 웹 사이트 및 응용 프로그램이 응용 프로그램에 링크,. 다시 말하지만, 검색어 이외의 정보는 다음 링크의 일부로 전달되지 않습니다. 이러한 사이트 및 응용 프로그램에서 분리하고이 응용 프로그램과 제휴하지 않습니다, 그리고 본 개인 정보 보호 정책이 적용되지 않습니다. </p>
|
||||
|
||||
<h3> 상표 </h3>
|
||||
|
||||
<p><span class="notranslate">Google, Google Books, Google Product Search,
|
||||
Barcode Scanner, ZXing, QR Code, Data Matrix, Aztec</span> 해당 소유자의 상표입니다. </p>
|
||||
|
||||
<h3> 라이센스 및 저작권 </h3>
|
||||
|
||||
<p> 이 프로젝트를 기반으로 <a class="notranslate" href="http://github.com/zxing/zxing">ZXing</a> 오픈 소스 바코드 라이브러리를 검색하고, 조건에 의거하여 라이센스가 부여됩니다 <a class="notranslate" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a> : </p>
|
||||
|
||||
<p style="font-size:200%"><a class="notranslate" href="../html/apache-license.txt">Apache License 2.0</a></p>
|
||||
|
||||
<p>Google 번역에 의해 번역.</p></body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> 스캔하는 방법 </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> : 바코드가 완전히 뷰 파인더의 사각형 안에하도록 전화, 조금만 라인 - 바코드 스캐너는 지속적으로 화면에 표시 사각형 영역을 검사 </p>
|
||||
<p class="imgcenter"><img src="../images/demo-yes.png" style="padding:5px"/><img src="../images/demo-no.png" style="padding:5px"/></p>
|
||||
<p> 제품에서 발견 된 것과 같은 1D 바코드는 자동 초점과 전화를해야합니다. 가 없으면 만 QR 코드와 데이터 매트릭스 코드는 확인 가능한 것입니다. </p>
|
||||
<p> 바코드를 읽을 때, 삐 소리가 재생됩니다 그리고 당신은 스캔, 바코드의 내용이 뭔지 설명 및 내용에 조치를 취할 수있는 옵션의 결과를 볼 수 있습니다. </p>
|
||||
<p> 당신은 문제가 검색하는 데 문제가있는 경우 휴대 전화가 정상 상태에 있는지 확인하십시오. 카메라가 초점을 맞출 수없는 경우, 바코드에서 더 또는 더 가까이 휴대 전화를 이동하십시오. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="about1d.html"> 1D 바코드 정보 </a></li>
|
||||
<li><a href="about2d.html"> 에 대한 2 차원 바코드 </a></li>
|
||||
</ul>
|
||||
<p>Google 번역을 통해 번역.</p></body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> 어떻게 QR 코드를 만드는 방법 </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> 2D 바코드를 스캔뿐만 아니라, 바코드 스캐너는 QR 코드를 생성 할 수 있으며 화면에 표시됩니다. 그럼 당신은 친구에게 보여, 그 자신의 휴대 전화로 바코드를 스캔하도록 할 수 있습니다 : </p>
|
||||
<p class="imgcenter"><img src="../images/scan-from-phone.png"/></p>
|
||||
<p> 이 기능을 사용하려면 기본 검색 화면에서 메뉴 버튼을 누르면,하고 공유를 누릅니다. 그런 다음 연락처, 즐겨 찾기, 응용 프로그램 또는 클립 보드의 내용을 공유할지 여부를 선택합니다. QR 코드가 자동으로 생성됩니다. 이 완료되면, 뒤로 또는 홈을 누릅니다. </p>
|
||||
<p> 컴퓨터에서 QR 코드를 생성하려면 ZXing QR 코드 생성기를 사용해 : <a href="http://zxing.appspot.com/generator/"> http://zxing.appspot.com/generator/ </a></p>
|
||||
<p>Google 번역을 통해 번역.</p></body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> 바코드 스캐너의 새로운 기능 </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li> 역사 기능을 해제 할 수 있습니다 </li>
|
||||
<li> 버그 수정 </li>
|
||||
</ul>
|
||||
<p>구글 번역은 번역.</p></body>
|
||||
</html>
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Over 1D barcodes </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Traditionele barcodes, zoals gedrukt op de verpakking, ook bekend als eendimensionale barcodes. Er zijn verschillende types gebruikt, zoals UPC en EAN. De meeste lijken op deze: </p>
|
||||
<p class="imgcenter"><img src="../images/big-1d.png"/></p>
|
||||
<p> Deze 1D barcodes bevatten een unieke code die typisch beschrijft een product, zoals een cd of een boek. U kunt kijken deze code op het internet om de prijzen, reviews en nog veel meer te vinden. </p>
|
||||
<p> Als u scant een boek, kunt u ook zoeken in de inhoud van het boek voor een woord of zin, en vind alle pagina's waar het verschijnt: </p>
|
||||
<p class="imgcenter"><img src="../images/search-book-contents.jpg"/></p>
|
||||
<p>Vertaald door Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,28 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Over 2D barcodes </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p><strong> Barcode Scanner </strong> begrijpt ook hoe om te lezen tweedimensionale barcodes, zoals QR Codes en Data Matrix codes. Bijvoorbeeld, de volgende codes bevatten een hyperlink naar de ZXing Project home page: </p>
|
||||
<p class="imgcenter">
|
||||
<img src="../images/big-qr.png"/>
|
||||
<img src="../images/big-datamatrix.png"/>
|
||||
<img src="../images/big-pdf417.png"/>
|
||||
<img src="../images/big-aztec.png"/>
|
||||
</p>
|
||||
<p> U kunt contactgegevens ook te vertegenwoordigen in een QR-code, en zet het op een visitekaartje of website. Als u het scannen, de resultaten scherm biedt een keuze van acties: </p>
|
||||
<p class="imgcenter"><img src="../images/contact-results-screen.jpg"/></p>
|
||||
<p> Naast URL's en contactgegevens, kunnen QR Codes bevatten: </p>
|
||||
<ul>
|
||||
<li> Agenda-items, die u kunt toevoegen aan uw agenda </li>
|
||||
<li> Telefoonnummers, die u kunt bellen </li>
|
||||
<li> SMS-nummers, die u kunt SMS-bericht </li>
|
||||
<li> E-mailadressen, die u kunt e-mailen </li>
|
||||
<li> Geografische coördinaten, die u kunt openen in Google Maps </li>
|
||||
<li> Platte tekst, die u kunt lezen, dan delen met een vriend </li>
|
||||
</ul>
|
||||
<p>Vertaald door Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,23 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Barcode Scanner Help </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> De officiële Android app van de open source ZXing project:<br/>
|
||||
<a href="http://github.com/zxing/zxing"> http://github.com/zxing/zxing </a></p>
|
||||
<p> Barcode Scanner maakt gebruik van de camera op je telefoon om barcodes te lezen en op te zoeken productinformatie, zoals prijzen en reviews. </p>
|
||||
<p class="imgcenter"><img src="../images/scan-example.png"/></p>
|
||||
<p> Het leest ook 2D barcodes zoals QR Codes en Data Matrix. Deze kunnen links naar websites bevatten, contactgegevens zoals telefoonnummers en e-mailadressen, en nog veel meer. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="whatsnew.html"> Wat is nieuw in deze versie </a></li>
|
||||
<li><a href="scanning.html"> Hoe te scannen </a></li>
|
||||
<li><a href="about1d.html"> Over 1D barcodes </a></li>
|
||||
<li><a href="about2d.html"> Over 2D barcodes </a></li>
|
||||
<li><a href="sharing.html"> Hoe je QR Codes te maken </a></li>
|
||||
<li><a href="license.html"> Privacy Beleid, Juridische en Licentie-informatie </a></li>
|
||||
</ul>
|
||||
<p>Vertaald door Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,30 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Privacy Beleid, Juridische en Licentie-informatie </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3> Privacybeleid </h3>
|
||||
|
||||
<p><strong class="notranslate">Barcode Scanner</strong> geen informatie over haar gebruikers, noch het gebruik van de applicatie niet verzamelen, opslaan of verzenden. De applicatie geeft toegang tot persoonlijke informatie zoals contactpersonen en bookmarks alleen om uitvoering functionaliteit van de applicatie, zoals het delen van contacten en bladwijzers door QR Codes op het scherm. </p>
|
||||
|
||||
<p> Merk op dat deze applicatie naar diensten van derden, zoals Google Books, Google Product Search en Amazon, om aanvullende informatie op te halen na een scan. Deze derden ontvangen en kunnen deze verzoeken inloggen. Ook kan het nodig zijn om het verzoek naar een server die door deze aanvrage om het verzoek voor gebruik met de externe dienst, zoals het ondertekenen van het verzoek transformeren. Geen aanvullende informatie wordt toegevoegd aan de verzoeken naast de zoektermen. </p>
|
||||
|
||||
<p> Merk ook op dat deze applicatie links naar derden websites en applicaties. Weer geen uitzondering zoektermen informatie wordt doorgegeven als deel van deze verbindingen. Deze sites en applicaties staan los van en niet verbonden met deze toepassing, en vallen niet onder dit privacybeleid. </p>
|
||||
|
||||
<h3> Handelsmerken </h3>
|
||||
|
||||
<p><span class="notranslate">Google, Google Books, Google Product Search,
|
||||
Barcode Scanner, ZXing, QR Code, Data Matrix, Aztec</span> zijn handelsmerken van hun respectievelijke eigenaars. </p>
|
||||
|
||||
<h3> Licentie en Copyright </h3>
|
||||
|
||||
<p> Dit project is gebaseerd op het <a class="notranslate" href="http://github.com/zxing/zxing">ZXing</a> open source barcode scanning bibliotheek, en wordt onder de voorwaarden van de licentie aan u <a class="notranslate" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a> : </p>
|
||||
|
||||
<p style="font-size:200%"><a class="notranslate" href="../html/apache-license.txt">Apache License 2.0</a></p>
|
||||
|
||||
<p>Vertaald door Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Hoe om te scannen </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Barcode Scanner scant continu een vierkant gebied op uw scherm - net line-up van de telefoon, zodat de barcode is helemaal in de zoeker rechthoek: </p>
|
||||
<p class="imgcenter"><img src="../images/demo-yes.png" style="padding:5px"/><img src="../images/demo-no.png" style="padding:5px"/></p>
|
||||
<p> 1D barcodes zoals die gevonden op producten vereisen een telefoon met autofocus. Zonder dat zal alleen maar QR Codes en Data Matrix codes zijn leesbaar. </p>
|
||||
<p> Wanneer een barcode wordt gelezen, zal een pieptoon te spelen en zie je de resultaten van de scan, een beschrijving van wat de barcode bevat, en opties om actie te ondernemen op de inhoud. </p>
|
||||
<p> Als u problemen ondervindt bij het scannen, moet u Houd de telefoon stil. Als de camera niet kan scherpstellen, probeer dan het verplaatsen van de telefoon verder of dichter van de barcode. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="about1d.html"> Over 1D barcodes </a></li>
|
||||
<li><a href="about2d.html"> Over 2D barcodes </a></li>
|
||||
</ul>
|
||||
<p>Vertaald door Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Hoe kan ik QR Codes te creëren </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> In aanvulling op het scannen van 2D-barcodes, kan Barcode Scanner ook het genereren van een QR-code en geeft deze weer op het scherm. Dan kunt u laten zien aan een vriend, en laat ze de streepjescode scannen met hun telefoon: </p>
|
||||
<p class="imgcenter"><img src="../images/scan-from-phone.png"/></p>
|
||||
<p> Om deze functie te gebruiken, drukt u op de knop Menu van de belangrijkste scannen scherm en tik op Delen. Vervolgens kiest u of u een contact, een bladwijzer, een toepassing, of de inhoud van het klembord te delen. Een QR-code wordt automatisch gegenereerd. Als u klaar bent, drukt u op Terug of Home. </p>
|
||||
<p> Om QR Codes van uw computer te genereren, probeer dan de ZXing QR Code Generator: <a href="http://zxing.appspot.com/generator/"> http://zxing.appspot.com/generator/ </a></p>
|
||||
<p>Vertaald door Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Wat is nieuw in Barcode Scanner </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<ul>
|
||||
<li> De Geschiedenis functie kan worden uitgeschakeld </li>
|
||||
<li> Bug fixes </li>
|
||||
</ul>
|
||||
<p>Vertaald door Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,15 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Sobre códigos de barras 1D </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Códigos de barras tradicionais, tais como aqueles impressos nas embalagens dos produtos, são também conhecidos como um código de barras de dimensão. Existem vários tipos comumente usados, incluindo UPC e EAN. Mais semelhante a este: </p>
|
||||
<p class="imgcenter"><img src="../images/big-1d.png"/></p>
|
||||
<p> Estes códigos de barras 1D conter um código único, o qual geralmente descreve um produto, como um CD ou um livro. Você pode olhar este código na internet para pesquisar preços, opiniões, e muito mais. </p>
|
||||
<p> Se você digitalizar um livro, você também pode pesquisar o conteúdo do livro para uma palavra ou frase, e encontrar todas as páginas em que ele aparece: </p>
|
||||
<p class="imgcenter"><img src="../images/search-book-contents.jpg"/></p>
|
||||
<p>Traduzido pelo Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,28 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Sobre códigos de barras 2D </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p><strong> Barcode Scanner </strong> também entende como ler dois códigos de barras bidimensionais, como QR Codes e códigos Data Matrix. Por exemplo, os códigos abaixo contêm um link para a página do Projeto ZXing casa: </p>
|
||||
<p class="imgcenter">
|
||||
<img src="../images/big-qr.png"/>
|
||||
<img src="../images/big-datamatrix.png"/>
|
||||
<img src="../images/big-pdf417.png"/>
|
||||
<img src="../images/big-aztec.png"/>
|
||||
</p>
|
||||
<p> Você também pode representar informações de contato em um QR Code, e colocá-lo em um cartão de visita ou site. Quando você escaneá-lo, a tela de resultados fornece uma escolha de ações: </p>
|
||||
<p class="imgcenter"><img src="../images/contact-results-screen.jpg"/></p>
|
||||
<p> Além de URLs e informações de contato, QR Codes também pode conter: </p>
|
||||
<ul>
|
||||
<li> Calendário de eventos, que você pode adicionar ao seu calendário </li>
|
||||
<li> Os números de telefone, que você pode discar </li>
|
||||
<li> Números de SMS, que você pode mensagem de texto </li>
|
||||
<li> Endereços de e-mail, que você pode enviar e-mail </li>
|
||||
<li> Coordenadas geográficas, que você pode abrir em Mapas </li>
|
||||
<li> Texto simples, que você pode ler, em seguida, compartilhar com um amigo </li>
|
||||
</ul>
|
||||
<p>Traduzido pelo Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,23 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Ajuda Barcode Scanner </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> O app Android oficial do projeto de código aberto ZXing:<br/>
|
||||
<a href="http://github.com/zxing/zxing"> http://github.com/zxing/zxing </a></p>
|
||||
<p> Barcode Scanner utiliza a câmera do seu celular para ler códigos de barras e procurar informações sobre o produto, tais como preços e opiniões. </p>
|
||||
<p class="imgcenter"><img src="../images/scan-example.png"/></p>
|
||||
<p> Ele também lê código de barras 2D, tais como QR Codes e matriz de dados. Estes podem conter links para web sites, informações de contato, como números de telefone e endereços de e-mail, e muito mais. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="whatsnew.html"> O que há de novo nesta versão </a></li>
|
||||
<li><a href="scanning.html"> Como digitalizar </a></li>
|
||||
<li><a href="about1d.html"> Sobre códigos de barras 1D </a></li>
|
||||
<li><a href="about2d.html"> Sobre códigos de barras 2D </a></li>
|
||||
<li><a href="sharing.html"> Como criar QR Codes </a></li>
|
||||
<li><a href="license.html"> Política de Privacidade, Legal e informação de licença </a></li>
|
||||
</ul>
|
||||
<p>Traduzido pelo Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,30 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Política de Privacidade, Legal e informação de licença </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h3> Política de Privacidade </h3>
|
||||
|
||||
<p><strong class="notranslate">Barcode Scanner</strong> não coletar, armazenar ou transmitir informações sobre seus usuários, nem de uso da aplicação. O aplicativo acessa informações pessoais, como contatos e favoritos apenas para implementar a funcionalidade do aplicativo, tais como a partilha de contactos e favoritos por códigos QR na tela. </p>
|
||||
|
||||
<p> Note que este aplicativo acessa serviços de terceiros, incluindo o Google Books, Google Product Search and Amazon, a fim de obter informações após uma varredura. Esses terceiros podem receber e registrar esses pedidos. Além disso, pode ser necessário enviar o pedido para um servidor operado por esta aplicação, a fim de transformar o pedido para o uso com o serviço de terceira parte, tal como o pedido de assinatura. Nenhuma informação adicional é adicionada aos pedidos, além dos termos da consulta. </p>
|
||||
|
||||
<p> Observe também que as ligações esta aplicação para web sites de terceiros e aplicações. Mais uma vez, nenhuma informação que não seja os termos da consulta são passados como parte desses links. Esses sites e aplicativos são separados e não filiado a esta aplicação, e não são cobertos por esta Política de Privacidade. </p>
|
||||
|
||||
<h3> Marcas </h3>
|
||||
|
||||
<p><span class="notranslate">Google, Google Books, Google Product Search,
|
||||
Barcode Scanner, ZXing, QR Code, Data Matrix, Aztec</span> são marcas comerciais de seus respectivos proprietários. </p>
|
||||
|
||||
<h3> Licença e Direitos de Autor </h3>
|
||||
|
||||
<p> Este projecto baseia-se no <a class="notranslate" href="http://github.com/zxing/zxing">ZXing</a> código de barras de código aberto digitalização da biblioteca, e é licenciado para você de acordo com os termos do <a class="notranslate" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a> : </p>
|
||||
|
||||
<p style="font-size:200%"><a class="notranslate" href="../html/apache-license.txt">Apache License 2.0</a></p>
|
||||
|
||||
<p>Traduzido pelo Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,19 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Como digitalizar </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Barcode Scanner examina continuamente uma região quadrada mostrado na tela - apenas a linha até o telefone para o código de barras é completamente dentro do retângulo do visor: </p>
|
||||
<p class="imgcenter"><img src="../images/demo-yes.png" style="padding:5px"/><img src="../images/demo-no.png" style="padding:5px"/></p>
|
||||
<p> Códigos de barras 1D como os encontrados em produtos necessitam de um telefone com foco automático. Sem ele, apenas QR Codes e códigos Data Matrix será legível. </p>
|
||||
<p> Quando um código de barras é lido, um sinal sonoro vai jogar e você vai ver os resultados da verificação, uma descrição do que contém o código de barras, e as opções a tomar medidas sobre o conteúdo. </p>
|
||||
<p> Se você está tendo problemas de digitalização, certifique-se de segurar o telefone fixo. Se a câmera não consegue focar, tente mover o telefone mais próximo ou a partir do código de barras. </p>
|
||||
<ul class="touchable">
|
||||
<li><a href="about1d.html"> Sobre códigos de barras 1D </a></li>
|
||||
<li><a href="about2d.html"> Sobre códigos de barras 2D </a></li>
|
||||
</ul>
|
||||
<p>Traduzido pelo Google Translate.</p></body>
|
||||
</html>
|
||||
@@ -1,14 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title> Como criar QR Codes </title>
|
||||
<link href="../style.css" rel="stylesheet" type="text/css"/>
|
||||
</head>
|
||||
<body>
|
||||
<p> Além de digitalizar códigos de barras 2D, Barcode Scanner também pode gerar um QR Code e exibi-lo na tela. Então você pode mostrá-lo a um amigo, e deixe-escanear o código de barras com o seu telefone: </p>
|
||||
<p class="imgcenter"><img src="../images/scan-from-phone.png"/></p>
|
||||
<p> Para usar esse recurso, pressione o botão Menu a partir do ecrã de digitalização principal e toque em Compartilhar. Em seguida, escolha se você deseja compartilhar um contato, um marcador, um aplicativo, ou o conteúdo da área de transferência. Um QR Code será gerado automaticamente. Quando estiver pronto, pressione Voltar ou Casa. </p>
|
||||
<p> Para gerar QR Codes do seu computador, experimente a Gerador de código QR ZXing: <a href="http://zxing.appspot.com/generator/"> http://zxing.appspot.com/generator/ </a></p>
|
||||
<p>Traduzido pelo Google Translate.</p></body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user