2010-10-27 23 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分析內存。

相關問題