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());
}
}
Baktığınız için teşekkürler! Yukarıdaki kodun tamamını ekledim. –