מאמר

מאמר: כיצד מוסיפים סורק ברקודים לאפליקציית אנדרואיד

לקוחות נבחרים:

טוען ...
  • חברת DHL הבינלאומית

    חברת DHL הבינלאומית

  • האוניברסיטה העברית

    האוניברסיטה העברית

  • חברת דלק לישראל

    חברת דלק לישראל

  • משרד החוץ

    משרד החוץ

  • ערוץ הופ!

    ערוץ הופ!

  • מש"ב

    מש"ב

  • ערוץ לולי

    ערוץ לולי

  • משרד הבריאות

    משרד הבריאות

  • חברת mythings

    חברת mythings

  • חברת part4u

    חברת part4u

  • הטכניון - מכון טכנולוגי לישראל

    הטכניון - מכון טכנולוגי לישראל

  • רחוב סומסום

    רחוב סומסום

  • שלום סוסמום

    שלום סוסמום

  • אוניברסיטת תל אביב

    אוניברסיטת תל אביב

  • בינה - מכון ננוטכנולוגיה

    בינה - מכון ננוטכנולוגיה

  • פקולטה לרפואה - אוניברסיטת תל אביב

    פקולטה לרפואה - אוניברסיטת תל אביב

  • אוניברסיטת בר -אילן

    אוניברסיטת בר -אילן

  • ועידת התביעות

    ועידת התביעות

  • Cleanbiz Horizons

    Cleanbiz Horizons

  • Australian Nuclear

    Australian Nuclear

  • הנוער העובד והלומד

    הנוער העובד והלומד

  • Stocholm University

    Stocholm University

  • Gateway University

    Gateway University

  • University of Alberta

    University of Alberta

  • מגדל שוקי הון

    מגדל שוקי הון

  • BrightWay Vision

    BrightWay Vision

  • UNBC

    UNBC

  • UW

    UW

  • Univesity of Manitoba

    Univesity of Manitoba

הוספת סורק ברקודים לאפליקציית אנדרואיד

מפתחים אפליקציית אנדרואיד עבורכם או עבור בית תוכנה בו אתם עובדים, וצריכים להוסיף סורק ברקודים אשר יהיה ניתן לתמרן עם תוצאות הסריקה שתחזיר הסריקה? כיצד תוכלו לבצע זאת, באיזה תוכנה להשתמש? האם ישנה בנייה חינמית של התוכנה שתוכלו להשתמש בה באפליקציה שלכם?

 

התבקשנו להוסיף סורק ברקודים לאפליקציה של חברתנו Prog4biz, העוסקת בפיתוח תוכנה. הסורק צריך לסרוק ברקוד, להחזיר את המספר שנסרק ואז נוכל לתמרן בתוך האפליקציה עם המספר שיוחזר אלינו.

במאמר זה נסביר כיצד זה נעשה בפועל, באיזו תוכנה השתמשנו וניתן מושג בסיסי לאחד הפתרונות הקיימים. כמו בדרך כלל, בפיתוח אפליקציות שונות, ישנם כמה פתרונות לבעיה, אולם מאמר זה ייתן סקירה של אחד הפתרונות שנמצאו כמתאימים לצרכינו בצורה אופטימלית. בעיקרון מה שהאפליקציה עושה, היא פותחת אפליקציית הסריקה חיצונית, סורקת את הברקוד ומחזירה לנו את המספר שנסרק.

 

איך פיתוח האפליקציה נעשה?

 

להלן פירוט הצעדים:

 

1. ישנו קוד פתוח ל-sdk הנקרא ZXing אשר ניתן למצוא באתר הבא;
http://mobile.tutsplus.com/tutorials/android/android-sdk-create-a-barcode-reader/.
יש להוריד את קבצי המקור הנמצאים באתר. ניתן גם לעבור על ההדרכה הקיימת באתר אשר מסבירה כיצד לבנות אפליקציה מאפס עבור סורק הברקודים בלבד. אם זאת האפליקציה הראשונה שלכם, מומלץ לעבור על ההדרכה שבאתר כדי לראות איך הברקוד עובד בצורה עצמאית. באפליקציה שפיתחנו שילבנו את הסורק ביחד עם webview. זהו view אשר נותן אפשרות לפתוח אתר בתוך האפליקציה במקום בדפדפן.

 

2. באפלקיציה שלנו ישנו activity ראשי אשר פותח webview, ממנו אנו קוראים ל-activity שפותח את סורק הברקודים. תחת אותו ה-package יצרנו מחלקה חדשה (תתנו לה כל שם שתרצו) והעתקנו אליה את תוכן המחלקה MainActivity.java אשר נמצאת בקבצי המקור.

 

3. לאחר מכן, תחת קובץ ה-"src", הוספנו package נוסף שקראנו לו "com.google.zxing.integration.android" ואליו הוספנו את המחלקות IntentIntegrator.java ו- IntentResult.java אשר גם הם נמצאים בקבצי המקור אשר הורדנו מהאתר.

 

4. אח"כ, תחת קובץ ה-"res", הוספנו קובץ xml תחת הקובץ "layout" עבור ה-view של ה-activity של סורק הברקודים, אותו MainActivity.java בקבצי המקור. בקבצי המקור, קובץ ה-xml הזה נקרא activity_main.xml. לצרכים שלנו היינו צריכים לפתוח את הסורק בלחיצה על כפתור מה-activity הראשי שלנו, לכן הסרנו את כל הכפתורים ואיזורי הטקסט שהיו ב-view של סורק הברקודים (אותו activity_main.xml). להלן הקוד של קובץ ה-xml שלנו;


<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" >
</RelativeLayout>

 

5. ב-activity הראשי, כאשר אנו לוחצים על הכפתור אשר קורא ל-activity של סורק הברקודים, אנו קוראים לו בעזרת הקוד הבא;

 

Intent intent = new Intent(this, BarCodeScanningApp.class);
myRequestCode = 1;
startActivityForResult(intent, myRequestCode);

 

מה שאנו עושים כאן זה לשלוח intent של ה-activity הראשי שלנו ל-activity של סורק הברקודים עם בקשה לקבל ממנו תוצאה.

 

6. כדי לטפל בתוצאה שחוזרת, משתמשים במתודה הבאה;

 

protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == myRequestCode) {
if (resultCode == RESULT_OK) {
barcodeValue = data.getStringExtra("barcode");
Toast toast = Toast.makeText(getApplicationContext(), barcodeValue, Toast.LENGTH_SHORT);
toast.show();
}
}
}

 

אנו בודקים האם requestCode שווה ל-1 (myRequestCode מוגדר אצלי כ-1). אם כן, אנו בודקים האם resultCode תקין ורק אז לוקחים את ערך הסריקה מתוך ה-data ששמרנו בתוך מחרוזת שהכרזנו עליה ב-activity של סורק הברקודים (מיד נראה כיצד).

 

7. ב-activity של סורק הברקודים שינינו מספר דברים מקובץ המקור MainActivity.java. מחקנו את הפונקציאונליות של הכפתור (מאחר ולא היינו זקוקים לו), והוספנו את ההחזרה של הערך הנסרק. להלן הקוד של ה-activity שלנו;

 

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

public class BarCodeScanningApp extends Activity {

private IntentIntegrator integrator;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bar_code_scanning_app);

scanBarcode();
}

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode,
resultCode, intent);
if (scanResult != null) {
String scanContent = scanResult.getContents();
Intent resultData = new Intent();
resultData.putExtra("barcode", scanContent);
setResult(Activity.RESULT_OK, resultData);
finish();
}
else {
Toast toast = Toast.makeText(getApplicationContext(),
"No scan data received!", Toast.LENGTH_SHORT);
toast.show();
}
}

public void scanBarcode() {
integrator = new IntentIntegrator(this);
integrator.initiateScan();
}

@Override
public void onBackPressed() {
super.onBackPressed();
}

}

 

כאן הסורק נפתח ברגע הקריאה ל-activity() (ה-scanBarcode נקרא מתוך המתודה onCreate()). אם במכשיר שלכם לא קיימת אפליקציית הסריקה החיצונית, אתם תתבקשו להתקין אותה. לאחר ההתקנה תוכלו להתחיל לסרוק ברקודים. אם הסריקה הצליחה, הערך של הסריקה יוחזר ל-activity הראשי ממנו התבצעה הקריאה בתוך intent, השמור כמיפוי הידוע כ-"key value pair" הנשמר בשם "barcode" (אתם יכולים לתת לו שם אחר, רק תדאגו לקרוא לו גם כן באותו השם ב-activity הראשי). אנחנו גם רוצים לעדכן את ה-activity הראשי שהסריקה הצליחה, לשם כך אנחנו שומרים את הערך Activity.RESULT_OK בתוך ה-intent שאנחנו מחזירים כ-resultData.

 

לסיכום

 

כעת אנחנו יכולים לסרוק ברקודים עם האפליקציה שלנו ולעשות כל מה שאנחנו צריכים עם התוצאה המוחזרת. מקווה שהצלחנו לעזור לכם במאמר זה, והצלחתם ליצור סורק ברקודים באפליקציה שלכם.

מחפש תוכנה שתנהל ותייעל את העסק שלך?

אנחנו נקשיב, נאפיין ונפתח עבורך תוכנה בהתאמה אישית התפורה לצרכים ותקציב שלך.

צור קשר עוד היום בטלפון 077-7944044 וספר לנו על הפרוייקט שלך!