Barcodering op Android
Die meeste van die tyd wanneer werknemers van Telaeris hier publiseer, is dit voorbeelde uit die regte lewe wat verband hou met ons produkte. Dit stel ons in staat om 'n wye verskeidenheid onderwerpe te bespreek, insluitend strepieskodes en RFID-gebruik, die implementering van veiligheid of veiligheidstelsels of wenke oor die bestuur van 'n besigheid. Maar die kern van wat ons doen, is om vorendag te kom netjiese oplossings vir moeilike probleme. Die volgende paar bloginskrywings is voorbeelde van hoe twee stagiairs by Telaeris begin het om 'n gratis nuwe mobiele produk te skep vir die opsporing van strepieskodes en RFID-etikette vanaf u Android- of iPhone-mobiele toestel. Die stelsel word genoem DataLockr en is pas bekendgestel - ek beveel u aan om die app en stelsel na te gaan. Wat hulle in hierdie artikel beskryf, is hul eerste stappe om 'n eenvoudige app vir die lees van strepieskodes te bou met behulp van die open source Zxing-biblioteek vir Android.
Hierdie blog is vir hackers daar buite wat graag wil kodeer. Geniet dit!
Implementeer 'n vereenvoudigde Zxing-biblioteek
Terwyl ons gaan deur die proses om te leer hoe om die ZXing biblioteek, het ons gou agtergekom dat dit 'n bietjie lastig was om te probeer verstaan wat aangaan in hierdie groot biblioteek. Daar was baie tutoriale daar buite, maar baie van die stappe het ons verwar of verouder. Daar was dinge wat van die kode ontbreek, of dinge wat anders was op grond van die biblioteek-weergawe of iets is nie ten volle verduidelik nie. Ons wou 'n handleiding maak wat iemand help om 'n eenvoudige Zxing-skanderingbiblioteek te implementeer, 'n vinnige begin kry om dit binne hul eie aansoek te gebruik.
Hierdie handleiding gebruik 'n verskeurde weergawe van Zxing-biblioteek om die basiese beginsels van hoe om die biblioteek in 'n selfstandige program te implementeer en jou eie inheemse Android-program te implementeer, te leer. Ons gebruik die Android Development Kit wat die SDK 19, Android 4.4 biblioteek gebruik. Die biblioteek is aangepas om 'n portretmodus strepieskandeerder eerder as die standaard horisontale oriëntasie te wees.
U kan ons vereenvoudigde weergawe van die Zxing-biblioteek aflaai om hier te gebruik en te toets: CaptureActivity. Dit is anders as die vrygelate ZXing-biblioteek, maar is goed om jou te begin.
As u nie Eclipse met die Android SDK het nie, laai en installeer die Android Development Kit. Maak die Android SDK oop en installeer die nodige komponente. Volgende, open Eclipse.
Stap 1. Eerstens sal ons die projek skep.
Gaan na die boonste spyskaart Lêer -> nuut -> Android-toepassingsprojek. Noem u projek (ons het ons s'n "Scanner App" genoem). Kopieer die onderstaande instellings en klik volgende drie keer tot op die bladsy vir aktiwiteit skep. Kies Leë aktiwiteit en klik op volgende en dan op Voltooi. Die gids verskyn standaard aan die linkerkant van die skerm. Indien nie, klik op die maksimeer-knoppie om die projekskerm in Eclipse te open.
Stap 2. Stel temafoute reg (as jy nie enige het nie, slaan oor na stap 3)
As u foute in u waardevouers het, kan dit 'n verduisteringsprobleem wees. Maak alle style.xml-bladsye oop en verwyder alle stylmerke en die inhoud daarvan. Gaan ook na u AndroidManifest.xml en verwyder die Android: tema = ”@ style / AppTheme” onder toepassing.
Stap 3. Volgende is die invoer van die scanner biblioteek.
As jy nog nie het nie, laai asseblief die CaptureActivty-pos hierbo. Gaan na Lêer -> Invoer -> Importeer bestaande Android-kode na werkruimte -> en open blaai en vind die bronkode van Zxing wat jy afgelaai het. Gaan net die eerste projek genaamd CaptureActivity. Die pad moet nie bou / daarin bevat nie. Kliek af. Regskliek op die / CaptureActivity / Folder in Pakket Explorer en klik eienskappe -> Android en maak seker dat die regmerkie "Is biblioteek" aangeskakel is. Klik ok.
Stap 4. Ons moet nou ons program koppel met die skandeerder biblioteek.
Klik regs op jou Android-programmap en klik dan op eienskappe -> Android. Klik op die voeg knoppie en klik op CaptureActivity. Maak seker dat 'n groen vinkje verskyn nadat jy OK op die Android-skerm gekliek het met die projek Skandeerder. Klik ok.
Stap 5. Ons kan nou begin om die skandeerder in ons aansoek te implementeer. Begin met mainActivity.java lêer.
Gaan na in jou programmap / Src / gids en maak jou mainActivity.java lêer. Hieronder is die kode benodig. Kopieer en plak wat jy nie het nie. Die kode wat u moet byvoeg, sal in rooi teks wees. As u foute kry, sal u sekere klasse moet invoer. jy kan net ctrl + shift + O druk, en al die nodige invoer sal ingevoer word.
package com.example.scannerapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void openScanner(View view){
Intent intent = new Intent("com.example.scannerapp.SCAN");
startActivityForResult(intent, 0);
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
Toast.makeText(this,contents,3000).show();
} else if (resultCode == RESULT_CANCELED) {
// Handle cancel
}
}
}
}
Daar is twee sleutel funksies:
- Die openScanner-metode loop wanneer 'n knoppie gedruk word, en sal dan die Skandeerder oopmaak.
- Die metode OnActivityResult gee die string van die strepieskode weer. Van hieruit kan jy 'n nuwe voorneme oopmaak en in veranderlikes slaag as jy 'n ander skerm na jou skandering wil vertoon.
Stap 6.Ons sal nou die uitleg in aktiwiteit_main.xml-lêer verander.
Nou in jou / Artikels / gids, gaan na die res-lêergids -> uitleg -> aktiwiteit_main.xml-lêer. Dit moet soos volg lyk. Voeg die volgende rooi kode by:
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="159dp"
android:text="Scan"
android:onClick="openScanner"/>
</RelativeLayout>
Dit voeg 'n knoppie by, en wanneer dit gedruk word, sal die metode openScanner uit die mainActivity.java lêer. Jy moet dalk ook 'n tema kies. Ek het Theme.holo gekies.
Stap 7. Die laaste wysiging is om die androidManifest.xml-lêer te wysig.
Gaan na die AndroidManifes.xml lêer onder die projek gids. Die kode moet soos volg lyk en weer die rooi kode kopieer
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.scannerapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<!-- PERMISSIONS REQUIRED BY ZXING -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- FEATURES REQUIRED BY ZXING -->
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.scannerapp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.telaeris.datalockrScanner.android.CaptureActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
<action android:name="android.intent.category.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="com.example.scannerapp.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
Ons voeg toestemmings toe wat Android vereis om die kamera te gebruik en aktiwiteite in die aansoek te bevat om te weet watter lêers oopmaak wanneer ons die skandeerder op die toestel wil oopmaak.
Stap 8. Alles klaar!
Jy behoort nou jou program op 'n toestel te kan opstel en hardloop. As daar enige samestellerfoute is, kan u die projek skoonmaak en / of herbegin verduistering.
Dankie
Baie dankie aan hierdie blog aan baie mense:
- Alberto Landaverde, wat met die Telaeris-somer van 2012 ingeënt is, wat die Zxing-biblioteek verander het en die aanvanklike vereenvoudigde biblioteek gebou het.
- Kelly Lim, huidige Telaeris-intern, wat hierdie biblioteek geneem het en verder beweeg het om die DataLockr Android-program. Kelly het ook die inhoud van hierdie blog geskryf.
- Jake Pham, huidige Telaeris-intern, wat deur die tutoriaal gegaan het om seker te maak dat alles werk soos geadverteer.
Bly op hoogte van die volgende aflewering, waar ons bespreek hoe u die ZXing-biblioteek in portret- en landskapmodus kan laat skandeer. En as u tyd het, kyk na die produk van al hul moeite - DataLockr.

Laat 'n boodskap