我正在制作一个读取qr代码的应用程序 在捕获qr代码时,我的scrren应该被移动到另一个类,但它显示空指针异常
我的代码是CameraTestActivity.java
/*
* Basic no frills app which integrates the ZBar barcode scanner with
* the camera.
*
* Created by lisah0 on 2012-02-24
*/
package net.sourceforge.zbar.android.CameraTest;
import net.sourceforge.zbar.Config;
import net.sourceforge.zbar.Image;
import net.sourceforge.zbar.ImageScanner;
import net.sourceforge.zbar.Symbol;
import net.sourceforge.zbar.SymbolSet;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.PreviewCallback;
import android.hardware.Camera.Size;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
public class CameraTestActivity extends Activity {
private Camera mCamera;
private CameraPreview mPreview;
private Handler autoFocusHandler;
TextView scanText;
Button scanButton;
Intent i;
Context context;
ImageScanner scanner;
private boolean barcodeScanned = false;
private boolean previewing = true;
static {
System.loadLibrary("iconv");
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
autoFocusHandler = new Handler();
mCamera = getCameraInstance();
/* Instance barcode scanner */
scanner = new ImageScanner();
scanner.setConfig(0, Config.X_DENSITY, 3);
scanner.setConfig(0, Config.Y_DENSITY, 3);
mPreview = new CameraPreview(this, mCamera, previewCb, autoFocusCB);
FrameLayout preview = (FrameLayout) findViewById(R.id.cameraPreview);
preview.addView(mPreview);
scanText = (TextView) findViewById(R.id.scanText);
scanButton = (Button) findViewById(R.id.ScanButton);
scanButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (barcodeScanned) {
barcodeScanned = false;
scanText.setText("Scanning...");
mCamera.setPreviewCallback(previewCb);
mCamera.startPreview();
previewing = true;
mCamera.autoFocus(autoFocusCB);
}
}
});
}
public void onPause() {
super.onPause();
releaseCamera();
}
/** A safe way to get an instance of the Camera object. */
public static Camera getCameraInstance() {
Camera c = null;
try {
c = Camera.open();
} catch (Exception e) {
}
return c;
}
private void releaseCamera() {
if (mCamera != null) {
previewing = false;
mCamera.setPreviewCallback(null);
mCamera.release();
mCamera = null;
}
}
private Runnable doAutoFocus = new Runnable() {
public void run() {
if (previewing)
mCamera.autoFocus(autoFocusCB);
}
};
PreviewCallback previewCb = new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
Size size = parameters.getPreviewSize();
Image barcode = new Image(size.width, size.height, "Y800");
barcode.setData(data);
int result = scanner.scanImage(barcode);
if (result != 0) {
previewing = false;
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
SymbolSet syms = scanner.getResults();
for (Symbol sym : syms) {
scanText.setText("barcode result " + sym.getData());
barcodeScanned = true;
i = new Intent(context, beginmove.class);
startActivity(i);
}
}
}
};
// Mimic continuous auto-focusing
AutoFocusCallback autoFocusCB = new AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
autoFocusHandler.postDelayed(doAutoFocus, 1000);
}
};
}
CameraPreview. java
/*
* Barebones implementation of displaying camera preview.
*
* Created by lisah0 on 2012-02-24
*/
package net.sourceforge.zbar.android.CameraTest;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Surface;
import android.view.SurfaceView;
import android.view.SurfaceHolder;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.Parameters;
/** A basic Camera preview class */
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
private PreviewCallback previewCallback;
private AutoFocusCallback autoFocusCallback;
public CameraPreview(Context context, Camera camera,
PreviewCallback previewCb,
AutoFocusCallback autoFocusCb) {
super(context);
mCamera = camera;
previewCallback = previewCb;
autoFocusCallback = autoFocusCb;
/*
* Set camera to continuous focus if supported, otherwise use
* software auto-focus. Only works for API level >=9.
*/
/*
Camera.Parameters parameters = camera.getParameters();
for (String f : parameters.getSupportedFocusModes()) {
if (f == Parameters.FOCUS_MODE_CONTINUOUS_PICTURE) {
mCamera.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
autoFocusCallback = null;
break;
}
}
*/
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
mHolder = getHolder();
mHolder.addCallback(this);
// deprecated setting, but required on Android versions prior to 3.0
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
// The Surface has been created, now tell the camera where to draw the preview.
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
Log.d("DBG", "Error setting camera preview: " + e.getMessage());
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
// Camera preview released in activity
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
/*
* If your preview can change or rotate, take care of those events here.
* Make sure to stop the preview before resizing or reformatting it.
*/
if (mHolder.getSurface() == null){
// preview surface does not exist
return;
}
// stop preview before making changes
try {
mCamera.stopPreview();
} catch (Exception e){
// ignore: tried to stop a non-existent preview
}
try {
// Hard code camera surface rotation 90 degs to match Activity view in portrait
mCamera.setDisplayOrientation(90);
mCamera.setPreviewDisplay(mHolder);
mCamera.setPreviewCallback(previewCallback);
mCamera.startPreview();
mCamera.autoFocus(autoFocusCallback);
} catch (Exception e){
Log.d("DBG", "Error starting camera preview: " + e.getMessage());
}
}
}
现在我想在扫描并获取数据之后转到课程abc.java
我应该如何去那里
答案 0 :(得分:0)
Class2 cls2 = new Class2(); cls2.UpdateEmployee();
在Class1中定义
答案 1 :(得分:0)
i have done same thing here
public class CategoryList extends Activity implements OnItemClickListener, OnClickListener {
// All static variables
static final String categoryURL = "api";
// XML node keys
static final String KEY_GATEGORY= "Category";
static final String KEY_CAT_ID = "cat_id";
static final String KEY_CAT_NAME = "cat_name";
String msg="";
DatabaseHelper dbHelper;
TextView tvmsg;
EditText etCategoryName;
Button btnEdit,btnAdd;
ListView lvCategory;
ArrayList<Category> categoryList;
CategoryAdapterHelper ca;
Cursor records;
Dialog dialog;
Document doc;
XMLParser parser;
int flag=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.category);
initComponant();
// setDatabase();
(new AsyncTaskExample()).execute("");
}
private class AsyncTaskExample extends AsyncTask<String, Void, String> {
// private String Content;
private ProgressDialog Dialog;
String response = "";
@Override
protected void onPreExecute() {
Dialog = new ProgressDialog(CategoryList.this);
Dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
Dialog.setMessage("Loading android tutorial...");
Dialog.setCancelable(false);
Dialog.show();
}
@Override
protected String doInBackground(String... urls) {
try {
doc = parser.getXmlFromUrl(categoryURL);
} catch (SAXException e) {
e.printStackTrace();
}
if(doc!= null){
NodeList ner1=doc.getElementsByTagName(KEY_GATEGORY);
for (int j = 0; j < ner1.getLength(); j++)
{
Element e1 = (Element) ner1.item(j);
int id=Integer.parseInt(parser.getValue(e1,KEY_CAT_ID));
String name=parser.getValue(e1,KEY_CAT_NAME );
Cursor c=dbHelper.selectRecord(true,id);
if(c.getCount()==0)
dbHelper.inserRecord(id,name);
}
}
else{
Toast.makeText(CategoryList.this, "Sorry Unable to retrive data. Please try again later", Toast.LENGTH_LONG).show();
}
return response;
}
@Override
protected void onPostExecute(String result) {
Dialog.dismiss();
displayCategory();
}
}
private void initComponant() {
// TODO Auto-generated method stub
categoryList= new ArrayList<Category>();
lvCategory=(ListView)findViewById(R.id.Category_listCategory);
lvCategory.setOnItemClickListener(this);
btnAdd=(Button)findViewById(R.id.Category_btnAdd);
btnAdd.setOnClickListener(this);
btnEdit=(Button)findViewById(R.id.Category_btnEdit);
btnEdit.setOnClickListener(this);
dialog= new Dialog(CategoryList.this);
dialog.setContentView(R.layout.customdialog);
dialog.setTitle("Navigation Application");
dbHelper=new DatabaseHelper(this);
parser = new XMLParser();
doc = null;
}
private void displayCategory() {
// TODO Auto-generated method stub
lvCategory.setAdapter(null);
categoryList= new ArrayList<Category>();
try
{
records=dbHelper.selectRecord();
startManagingCursor(records);
if(records.getCount()>0)
{
btnEdit.setEnabled(true);
records.moveToFirst();
while(!records.isAfterLast())
{
categoryList.add(new Category(records.getInt(records.getColumnIndex("_categoryid")),records.getString(records.getColumnIndex("name"))));
records.moveToNext();
}
ca=new CategoryAdapterHelper(this, categoryList,flag);
lvCategory.setAdapter(ca);
}
else
{
btnEdit.setEnabled(false);
new DialogDisplay().showDialog(dialog,"Game Category Not Define Yet.!");
}
}
catch (Exception e) {
// TODO: handle exception
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
displayCategory();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.Category_btnAdd:
Intent newCategory=new Intent(CategoryList.this,NewCategory.class);
startActivity(newCategory);
break;
case R.id.Category_btnEdit:
if(btnEdit.getText().toString().equals("Edit"))
{
flag=1;
btnEdit.setText("Done");
}
else
{
flag=0;
btnEdit.setText("Edit");
}
displayCategory();
break;
}
}
class CategoryAdapterHelper extends BaseAdapter {
Context context;
int flag;
public ArrayList<Category> categoryList;
public CategoryAdapterHelper(Context c,ArrayList<Category> categoryList,int flag) {
// TODO Auto-generated constructor stub
context=c;
this.categoryList=categoryList;
this.flag=flag;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return categoryList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
Category category=categoryList.get(position);
return category.id;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = convertView;
if (view == null) {
LayoutInflater vi= LayoutInflater.from(context);
view = vi.inflate(R.layout.category_detail,null);
}
Category category= categoryList.get(position);
if (category!= null)
{
TextView name = (TextView) view.findViewById(R.id.Category_detail_name);
final ImageView image=(ImageView)view.findViewById(R.id.Category_detail_imageView1);
if (name != null)
{
name.setText(category.categoryName);
if(flag==1)
{
image.setBackgroundResource(R.drawable.delete);
image.setTag(position);
image.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{// TODO Auto-generated method stub
final int id=(int)getItemId(Integer.parseInt(image.getTag().toString()));
final AlertDialog.Builder dlgAlert = new AlertDialog.Builder(context);
dlgAlert.setMessage("Do you want to delete it?\nIt will deleted all the Games..!");
dlgAlert.setTitle("Nevigation Application");
dlgAlert.setPositiveButton("Delete",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
DatabaseHelper dbHelper=new DatabaseHelper(context);
dbHelper.deleteRecord("category", id);
displayCategory();
}
});
dlgAlert.setNegativeButton("cancel",new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
dlgAlert.show();
}
});
}
}
}
return view;
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
if(btnEdit.getText().toString().equals("Edit"))
{
Category category=categoryList.get(arg2);
Toast.makeText(CategoryList.this,""+category.id,Toast.LENGTH_SHORT).show();
Intent gameIntent=new Intent(CategoryList.this,GameList.class);
gameIntent.putExtra("categoryid",category.id);
gameIntent.putExtra("categoryname", category.categoryName);
startActivity(gameIntent);
}
}
}