0
私はアンドロイドスタジオプロジェクトで動作するようにバーコードスキャナを取得しようとしています。それはバーコードスキャナを呼び出しますが、バーコードを読み取ることはありません(別にアプリを呼び出すと問題はありません)。どんな助けでも大歓迎です。ありがとうございました。ここで
は、特定のバーコード部分です:アンドロイドスタジオプロジェクトの私のバーコードスキャナはバーコードを登録しません
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);
以下の主な活動ご覧ください(混乱について謝罪し、私は後にやりたいものがたくさんを含めました)。
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());
}
}
ありがとう!私は上記の完全なコードを含んでいます。 –