2009-02-09 5 views
0

Поскольку у меня нет G1 для целей разработки, я делаю все возможное с эмулятором. Это говорит о том, что я пытаюсь сканировать изображение в формате JPEG или PNG-изображение в своей SD-карте с помощью библиотеки ZXing (Zebra Zrossing).Ошибка компиляции на Zxing

Я попытался изменить код в Android-проекте, поэтому он будет сканировать с изображения в SDCard, а не на камеру, без везения.

То, что я сделал дальше, вероятно, является причиной моей проблемы.

Я пытался использовать код JavaSE, в рамках нового проекта Android, чтобы обеспечить изображение в «измененном» CommandLineRunner, и вот незадача:

Затмение будет строить проект, но не будет работать Это. журнал ВМ throuws мне это сообщение среди других:

**02-08 20:47:45.916: WARN/dalvikvm(619): VFY: unable to resolve static method 939: Ljavax/imageio/ImageIO;.read (Ljava/io/File;)Ljava/awt/image/BufferedImage; 02-08 20:47:45.926: WARN/dalvikvm(619): VFY: rejecting opcode 0x71 at 0x0004 02-08 20:47:45.926: WARN/dalvikvm(619): VFY: rejected Lcom/magoco/fread/FRead;.decode2 (Ljava/io/File;Ljava/util/Hashtable;Ljava/lang/String;)Ljava/lang/String; 02-08 20:47:45.926: WARN/dalvikvm(619): Verifier rejected class Lcom/magoco/fread/FRead; 02-08 20:47:45.926: WARN/dalvikvm(619): Class init failed in newInstance call (Lcom/magoco/fread/FRead;) 02-08 20:47:45.926: DEBUG/AndroidRuntime(619): Shutting down VM 02-08 20:47:45.926: WARN/dalvikvm(619): threadid=3: thread exiting with uncaught exception (group=0x40010e28) 02-08 20:47:45.937: ERROR/AndroidRuntime(619): Uncaught handler: thread main exiting due to uncaught exception 02-08 20:47:45.946: ERROR/AndroidRuntime(619): java.lang.VerifyError: com.magoco.fread.FRead **

Я искал в Интернете для ответа, и я получил кто-то сказал, что это общая ошибка на Dalvikvm из-за того, что есть может быть класс или библиотека, которая была предварительно скомпилирована (true, вне Eclipse), и VM не сможет ее использовать.

Я отправляю свой код в основной деятельности:

package com.magoco.fread; 

import java.awt.image.BufferedImage; 
import java.io.BufferedInputStream; 
import java.io.ByteArrayInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Hashtable; 

import javax.imageio.ImageIO; 
import javax.imageio.ImageReader; 
import javax.imageio.stream.ImageInputStream; 

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.widget.TextView; 

import com.google.zxing.DecodeHintType; 
import com.google.zxing.MonochromeBitmapSource; 
import com.google.zxing.MultiFormatReader; 
import com.google.zxing.ReaderException; 
import com.google.zxing.Result; 
import com.google.zxing.client.result.ParsedResult; 
import com.google.zxing.client.result.ResultParser; 

public class FRead extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    TextView tv = (TextView) this.findViewById(R.id.BarcodeResult); 
    try { 
     tv.setText(this.decodeOneArgument2("", false)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public String decodeOneArgument2(String argument, boolean dumpResults) 
     throws Exception { 
    String barcode = ""; 
    // File inputFile = new File(argument); 
    File inputFile = new File("sdcard/dcim/pueblo.JPG"); 

    /* TESTING THAT I'VE GOT A FILE */ 
    System.out.println("FILE " + inputFile.toString()); 

    // decode(new URI(argument), hints); 
    decode2(inputFile, null, barcode); 
    return barcode; 

} 

public String decode2(File f, Hashtable<DecodeHintType, Object> hints, 
     String barcode) throws IOException { 

    /* IF I COMMENT THE NEXT LINE, IT RUNS BUT OF COURSE NO RESULT */ 
    BufferedImage image; 
    try { 
     image = ImageIO.read(f); 
    } catch (IllegalArgumentException iae) { 
     throw new FileNotFoundException("Resource not found: " + f); 
    } 
    try { 
     MonochromeBitmapSource source = new BufferedImageMonochromeBitmapSource(
       image); 
     Result result = new MultiFormatReader().decode(source, hints); 
     ParsedResult parsedResult = ResultParser.parseResult(result); 
     barcode = " format: " + result.getBarcodeFormat()+ result.getText() + "\nParsed result:\n"+ parsedResult.getDisplayResult(); 
     System.out.println(" format: " + result.getBarcodeFormat()+ result.getText() + "\nParsed result:\n"+ parsedResult.getDisplayResult()); 
     //return result; 
    } catch (ReaderException e) { 
     System.out.println(": No barcode found"); 
     return null; 
    } 
    return barcode; 
} 

}

Заранее спасибо

monn3t

ответ

0

Это Sean от его проекта.

Вы пытаетесь использовать код, предназначенный для Java SE в Android. Некоторые из библиотек Java SE не находятся в Android, например ImageIO.

Посмотрите на код в android/которое использует Android-классы для загрузки изображений.

+0

Это цифры, у меня было ощущение, что то, что я делаю, было неправильным. Я дам вам пример и дам вам информацию С уважением! monn3t – 2009-02-09 18:50:22

1

Hai, Я попытался извлечь данные со штрих-кодов, и это шаги, которые я выполнил.

1.Загрузить ZXing 1.3 и извлечь его.

2.Добавьте ядро ​​/ src и androidtest/src из извлеченного flux-диска zxing в приложение Android, установив свойство. использовать эту ссылку, чтобы установить свойство, http://groups.google.com/group/zxing/browse_thread/thread/7d8693e6e42408f2

Теперь включает следующий код,

package payoda.android.zxingApp; 
import android.app.Activity; 
import android.database.CursorJoiner.Result; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.widget.TextView; 
import com.google.zxing.BarcodeFormat; 
import com.google.zxing.MonochromeBitmapSource; 
import com.google.zxing.MultiFormatReader; 
import com.google.zxing.Reader; 
import com.google.zxing.ReaderException; 
import com.google.zxing.qrcode.QRCodeReader; 
import com.google.zxing.client.androidtest.*; 
import com.google.zxing.common.BaseMonochromeBitmapSource; 


public class ZXingApplication1 extends Activity 
{ 
    TextView tv; 
    com.google.zxing.Result result; 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    tv=(TextView)findViewById(R.id.text); 
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.bar2); 
    MultiFormatReader reader1=new MultiFormatReader();//For all barcode formats 
    QRCodeReader reader=new QRCodeReader();//Only for QRCode format 

    try 
    { 

     result=reader1.decode(new RGBMonochromeBitmapSource(bitmap)); 
     tv.setText(result.getText()); 
    } 
    catch (Exception e) 
    { 
     tv.setText("Within Catch block"); 
    } 
    } 
} 

Это может быть поможет вам.

Смежные вопросы