2010-10-27 37 views
1
public class TestCamera extends Activity implements SurfaceHolder.Callback, View.OnClickListener { 

... 

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { 
    @Override 
    public void onPictureTaken(byte[] data, Camera camera) { 
     // TODO Auto-generated method stub 
     picture = data; 
    } 
}; 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER)) { 
     mCamera.takePicture(null, null, mPictureCallback); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

@Override 
public void onClick(View view) { 
    switch(view.getId()) { 
    case R.id.camera: 
     picture_intent = new Intent(this, PictureViewer.class); 
     picture_intent.putExtra("picture", picture); 
     mCamera.startPreview(); 
     startActivity(picture_intent); 
    } 
} 

在模拟器中,程序的行为与其应该的相似。但是,当我将该应用程序放在我的手机(Nexus One)上时,当我拍照后触摸屏幕时,它不会切换到新的活动。如果我在不拍照的情况下触摸屏幕,它会切换到新的活动。程序将不会切换到我的手机上的活动

我不明白为什么我的手机拍照后不会切换到新的活动。

回答

0

将一个新成员添加到PictureViewer类并将byte []指定给该对象可能会更容易,而不是尝试将其用作额外的成员。

0

我注意到你正在为你的新意图添加byte []作为额外的。 Nexus One捕捉的图像可能会占用大量内存。传递一个大对象作为额外可能会导致您描述的行为。您是否尝试过将Nexus One连接到Eclipse,并使用调试器遵循执行路径?您也可以通过Eclipse分析内存。

相关问题