2016-03-19 22 views
0

Bir android stüdyo projesinde çalışmak için barkod tarayıcısı almaya çalışıyorum. Barkod tarayıcısını çağırıyor ancak barkodu okumuyor (yine de uygulamayı yukarı çağırdığımda sorun yok). Herhangi bir yardım çok takdir edilecektir. Teşekkür ederim.
İşte spesifik barkod parçası:Bir android stüdyo projesindeki barkod tarayıcım barkodu kaydetmeyecek

if(view.getId()==R.id.scan_button) { 
     Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
     intent.setAction("com.google.zxing.client.android.SCAN"); 
     intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
     startActivityForResult(intent, 0); 
    } 
     public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 0){ 
     if (resultCode == RESULT_OK) { 
      String scanContent = intent.getStringExtra("SCAN_RESULT"); 
      String scanFormat = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
      previewBtn.setTag(scanContent); 

ana aşağıdaki aktiviteyi bakınız (karışıklık için özür, ben sonra yapmak istediğiniz sürü yer verdik).

package com.example.barry.bookcataloguev3; 
import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.BufferedInputStream; 
import java.net.URL; 
import java.net.URLConnection; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.StatusLine; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.os.Bundle; 
import android.os.AsyncTask; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.util.Log; 
import android.content.Intent; 
import android.net.Uri; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 

public class MainActivity extends AppCompatActivity implements OnClickListener { 

private Button scanBtn,previewBtn,linkBtn; 
private TextView authorText, titleText, descriptionText, dateText, ratingCountText; 
private LinearLayout starLayout; 
private ImageView thumbView; 
private ImageView[] starViews; 
private Bitmap thumbImg; 
//private TextView formatTxt, contentTxt; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
    scanBtn = (Button)findViewById(R.id.scan_button); 
    //formatTxt = (TextView)findViewById(R.id.scan_format); 
    //contentTxt = (TextView)findViewById(R.id.scan_content); 
    scanBtn.setOnClickListener(this); 
    previewBtn = (Button)findViewById(R.id.preview_btn); 
    previewBtn.setVisibility(View.GONE); 
    previewBtn.setOnClickListener(this); 
    linkBtn = (Button)findViewById(R.id.link_btn); 
    linkBtn.setVisibility(View.GONE); 
    linkBtn.setOnClickListener(this); 
    authorText = (TextView)findViewById(R.id.book_author); 
    titleText = (TextView)findViewById(R.id.book_title); 
    descriptionText = (TextView)findViewById(R.id.book_description); 
    dateText = (TextView)findViewById(R.id.book_date); 
    starLayout = (LinearLayout)findViewById(R.id.star_layout); 
    ratingCountText = (TextView)findViewById(R.id.book_rating_count); 
    thumbView = (ImageView)findViewById(R.id.thumb); 
    starViews=new ImageView[5]; 
    for(int s=0; s<starViews.length; s++){ 
     starViews[s]=new ImageView(this); 
    } 
    starViews=new ImageView[5]; 
    for(int s=0; s<starViews.length; s++){ 
     starViews[s]=new ImageView(this); 
    } 
    if (savedInstanceState != null){ 
     authorText.setText(savedInstanceState.getString("author")); 
     titleText.setText(savedInstanceState.getString("title")); 
     descriptionText.setText(savedInstanceState.getString("description")); 
     dateText.setText(savedInstanceState.getString("date")); 
     ratingCountText.setText(savedInstanceState.getString("ratings")); 
     int numStars = savedInstanceState.getInt("stars");//zero if null 
     for(int s=0; s<numStars; s++){ 
      starViews[s].setImageResource(R.drawable.star); 
      starLayout.addView(starViews[s]); 
     } 
     starLayout.setTag(numStars); 
     thumbImg = (Bitmap)savedInstanceState.getParcelable("thumbPic"); 
     thumbView.setImageBitmap(thumbImg); 
     previewBtn.setTag(savedInstanceState.getString("isbn")); 

     if(savedInstanceState.getBoolean("isEmbed")) previewBtn.setEnabled(true); 
     else previewBtn.setEnabled(false); 
     if(savedInstanceState.getInt("isLink")==View.VISIBLE) linkBtn.setVisibility(View.VISIBLE); 
     else linkBtn.setVisibility(View.GONE); 
     previewBtn.setVisibility(View.VISIBLE); 
    } 
} 

public void onClick(View view){ 
    if(view.getId()==R.id.scan_button) { 
     Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
     //if(view.getId()==R.id.scan_button){ 
     //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
     intent.setAction("com.google.zxing.client.android.SCAN"); 
     intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
     startActivityForResult(intent, 0); 
    } 
    else if(view.getId()==R.id.link_btn){ 
     //get the url tag 
     String tag = (String)view.getTag(); 
     //launch the url 
     Intent webIntent = new Intent(Intent.ACTION_VIEW); 
     webIntent.setData(Uri.parse(tag)); 
     startActivity(webIntent); 
    } 
    else if(view.getId()==R.id.preview_btn){ 
     String tag = (String)view.getTag(); 
     //launch preview 
     Intent intent = new Intent(this, EmbeddedBook.class); 
     intent.putExtra("isbn", tag); 
     startActivity(intent); 
    } 
     //IntentIntegrator scanIntegrator = new IntentIntegrator(this); 
     //scanIntegrator.initiateScan(); 
    //} 
} 

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 0){ 
     if (resultCode == RESULT_OK) { 
      String scanContent = intent.getStringExtra("SCAN_RESULT"); 
      String scanFormat = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
      previewBtn.setTag(scanContent); 
      if(scanContent!=null && scanFormat!=null && scanFormat.equalsIgnoreCase("EAN_13")){ 
       //book search 
       String bookSearchString = "https://www.googleapis.com/books/v1/volumes?"+ 
         "q=isbn:"+scanContent+"&key=AIzaSyDnc2MSK760g6NiKt65dI96lRSsVdjo4BM"; 
       new GetBookInfo().execute(bookSearchString); 
      } 
      else{ 
       Toast toast = Toast.makeText(getApplicationContext(), 
         "Not a valid scan!", Toast.LENGTH_SHORT); 
       toast.show(); 
      } 
      Log.v("SCAN", "content: "+scanContent+" - format: "+scanFormat); 
      //formatTxt.setText("FORMAT: " + scanFormat); 
      //contentTxt.setText("CONTENT: " + scanContent); 
     } 
     else if (resultCode == RESULT_CANCELED) { 
      Toast toast = Toast.makeText(getApplicationContext(), 
        "No scan data received!", Toast.LENGTH_SHORT); 
      toast.show(); 
     } 
    } 
    /*retrieve scan result 
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    if (scanningResult != null) { 
     //we have a result 
     String scanContent = scanningResult.getContents(); 
     String scanFormat = scanningResult.getFormatName(); 
     formatTxt.setText("FORMAT: " + scanFormat); 
     contentTxt.setText("CONTENT: " + scanContent); 
    } 
    else{ 
     Toast toast = Toast.makeText(getApplicationContext(), 
       "No scan data received!", Toast.LENGTH_SHORT); 
     toast.show(); 
    }*/ 
} 

private class GetBookInfo extends AsyncTask<String, Void, String> { 
    //fetch book info 
    @Override 
    protected String doInBackground(String... bookURLs) { 
     //request book info 
     StringBuilder bookBuilder = new StringBuilder(); 
     for (String bookSearchURL : bookURLs) { 
      //search urls 
      HttpClient bookClient = new DefaultHttpClient(); 
      try { 
       HttpGet bookGet = new HttpGet(bookSearchURL); 
       HttpResponse bookResponse = bookClient.execute(bookGet); 
       StatusLine bookSearchStatus = bookResponse.getStatusLine(); 
       if (bookSearchStatus.getStatusCode() == 200) { 
        //we have a result 
        HttpEntity bookEntity = bookResponse.getEntity(); 
        InputStream bookContent = bookEntity.getContent(); 
        InputStreamReader bookInput = new InputStreamReader(bookContent); 
        BufferedReader bookReader = new BufferedReader(bookInput); 
        String lineIn; 
        while ((lineIn = bookReader.readLine()) != null) { 
         bookBuilder.append(lineIn); 
        } 
       } 
      } 
      catch(Exception e){ e.printStackTrace(); } 
     } 
     return bookBuilder.toString(); 
    } 
    protected void onPostExecute(String result) { 
     //parse search results 
     try{ 
      //parse results 
      previewBtn.setVisibility(View.VISIBLE); 
      JSONObject resultObject = new JSONObject(result); 
      JSONArray bookArray = resultObject.getJSONArray("items"); 
      JSONObject bookObject = bookArray.getJSONObject(0); 
      JSONObject volumeObject = bookObject.getJSONObject("volumeInfo"); 
      try{ titleText.setText("TITLE: "+volumeObject.getString("title")); } 
      catch(JSONException jse){ 
       titleText.setText(""); 
       jse.printStackTrace(); 
      } 
      StringBuilder authorBuild = new StringBuilder(""); 
      try{ 
       JSONArray authorArray = volumeObject.getJSONArray("authors"); 
       for(int a=0; a<authorArray.length(); a++){ 
        if(a>0) authorBuild.append(", "); 
        authorBuild.append(authorArray.getString(a)); 
       } 
       authorText.setText("AUTHOR(S): "+authorBuild.toString()); 
      } 
      catch(JSONException jse){ 
       authorText.setText(""); 
       jse.printStackTrace(); 
      } 
      try{ dateText.setText("PUBLISHED: " + volumeObject.getString("publishedDate")); } 
      catch(JSONException jse){ 
       dateText.setText(""); 
       jse.printStackTrace(); 
      } 
      try{ descriptionText.setText("DESCRIPTION: "+volumeObject.getString("description")); } 
      catch(JSONException jse){ 
       descriptionText.setText(""); 
       jse.printStackTrace(); 
      } 
      try{ 
       //set stars 
       double decNumStars = Double.parseDouble(volumeObject.getString("averageRating")); 
       int numStars = (int)decNumStars; 
       starLayout.setTag(numStars); 
       starLayout.removeAllViews(); 
       for(int s=0; s<numStars; s++){ 
        starViews[s].setImageResource(R.drawable.star); 
        starLayout.addView(starViews[s]); 
       } 
      } 
      catch(JSONException jse){ 
       starLayout.removeAllViews(); 
       jse.printStackTrace(); 
      } 
      try { 
       ratingCountText.setText(" - " + volumeObject.getString("ratingsCount") + " ratings"); } 
      catch(JSONException jse){ 
       ratingCountText.setText(""); 
       jse.printStackTrace(); 
      } 
      try{ 
       boolean isEmbeddable = Boolean.parseBoolean 
         (bookObject.getJSONObject("accessInfo").getString("embeddable")); 
       if(isEmbeddable) previewBtn.setEnabled(true); 
       else previewBtn.setEnabled(false); 
      } 
      catch(JSONException jse){ 
       previewBtn.setEnabled(false); 
       jse.printStackTrace(); 
      } 
      try{ 
       linkBtn.setTag(volumeObject.getString("infoLink")); 
       linkBtn.setVisibility(View.VISIBLE); 
      } 
      catch(JSONException jse){ 
       linkBtn.setVisibility(View.GONE); 
       jse.printStackTrace(); 
      } 
      try{ 
       JSONObject imageInfo = volumeObject.getJSONObject("imageLinks"); 
       new GetBookThumb().execute(imageInfo.getString("smallThumbnail")); 
      } 
      catch(JSONException jse){ 
       thumbView.setImageBitmap(null); 
       jse.printStackTrace(); 
      } 
     } 
     catch (Exception e) { 
      //no result 
      e.printStackTrace(); 
      titleText.setText("NOT FOUND"); 
      authorText.setText(""); 
      descriptionText.setText(""); 
      dateText.setText(""); 
      starLayout.removeAllViews(); 
      ratingCountText.setText(""); 
      thumbView.setImageBitmap(null); 
      previewBtn.setVisibility(View.GONE); 
     } 
    } 
} 

private class GetBookThumb extends AsyncTask<String, Void, String> { 
    //get thumbnail 
    @Override 
    protected String doInBackground(String... thumbURLs) { 
     //attempt to download image 
     try{ 
      //try to download 
      URL thumbURL = new URL(thumbURLs[0]); 
      URLConnection thumbConn = thumbURL.openConnection(); 
      thumbConn.connect(); 
      InputStream thumbIn = thumbConn.getInputStream(); 
      BufferedInputStream thumbBuff = new BufferedInputStream(thumbIn); 
      thumbImg = BitmapFactory.decodeStream(thumbBuff); 
      thumbBuff.close(); 
      thumbIn.close(); 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
     } 
     return ""; 
    } 
} 

protected void onSaveInstanceState(Bundle savedBundle) { 
    savedBundle.putString("title", ""+titleText.getText()); 
    savedBundle.putString("author", ""+authorText.getText()); 
    savedBundle.putString("description", ""+descriptionText.getText()); 
    savedBundle.putString("date", ""+dateText.getText()); 
    savedBundle.putString("ratings", ""+ratingCountText.getText()); 
    savedBundle.putParcelable("thumbPic", thumbImg); 
    if(starLayout.getTag()!=null) 
     savedBundle.putInt("stars", Integer.parseInt(starLayout.getTag().toString())); 
    savedBundle.putBoolean("isEmbed", previewBtn.isEnabled()); 
    savedBundle.putInt("isLink", linkBtn.getVisibility()); 
    if(previewBtn.getTag()!=null) 
     savedBundle.putString("isbn", previewBtn.getTag().toString()); 
} 
} 

cevap

0

Tüm MainActivity kodunuzu yükleyebilir misiniz? Ben de barkod ile app geliştirme denedim ve intent.getStringExtra("SCAN_RESULT");, sizin kodunuzda scanContent olduğunu alarak sonuç elde edebildi. Fakat emin olmak için, daha fazla kodunuzu görmem gerekiyor.

+0

Baktığınız için teşekkürler! Yukarıdaki kodun tamamını ekledim. –

İlgili konular