我一直在努力與上述一段時間,所以真的很感謝任何答案。安卓在廣播接收器內異步拍照
首先,我的主要目標是當我收到一個意圖(在廣播接收器內)時拍照。 我已經嘗試了上述方法,但無濟於事。 以下(表示相關的代碼段的視覺清晰度)的代碼說明了一種方法:
public class ArduinoReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
takePictureUsingCamera();
} }
函數takePictureUsingCamera()在與所述相機涉及一類調用函數(例如在顯示器中的FrameLayout相機預覽) 。這個特殊的函數調用android中的android takePicture函數:this.mPreview.mCamera.takePicture(null,null,this.mPicture);
但是,當我收到意圖,應用程序崩潰。我覺得背後的原因是拍攝照片可能要求在廣播接收機內完成太多的工作。 (我測試了這個功能,使用一個簡單的圖片捕捉按鈕,它完美的工作。)
所以,我嘗試的第二種方法是創建一個Intentservice,它將處理圖片的拍攝(和其他相關任務存儲圖片),當收到意圖時。
Service的onHandleIntent(Intent intent)方法現在將具有this.mCameraView.takePicture(filename)函數。但是,我需要將我的CameraView類作爲對象傳遞給此服務。爲此,我創建了一個Serializable類並嘗試使用intent的putExtra方法傳遞它。幾次崩潰後,我意識到CameraView類不是可序列化的(它在FrameLayout中顯示相機預覽)。
我想要做上述的另一種方法是在新服務中創建cameraView對象本身,但爲此我需要上下文和對主要活動的引用 - 我不認爲這可以通過intent傳遞。 這留下了開始一個新的活動,以在廣播接收器內拍照的選項 - 再次看起來像做了太多的工作。 正如我之前所說,我已經嘗試了一些方法,但沒有取得任何成功。我個人認爲它不會是這樣的問題。我真的很感激,對任何回答者都非常感謝。
感謝NPN,這正是我想做的事 - 觸發拍攝照片時,我收到了廣播的情況發生。我會現在嘗試上述解決方案,如果它有效(或不),請再次評論。 – Abhi
嗨npn,我試過上述解決方案。然而,應用程序崩潰拍照。我het以下錯誤信息:java.lang.RuntimeException:takePicture失敗,在 android.hardware.Camera.native_takePicture(本地方法)在 android.hardware.Camera.takePicture(相機。 java:948)。任何建議都是爲什麼會發生這種情況,或者如何去調試它。 – Abhi
我在調試方面遠非專家,但對於我來說,當我獲得追溯時,我會回顧消息,直到找到來自我的代碼的調用。舉例來說,我把你剛纔發佈的內容映射到回溯消息的頂部?如果這樣看下去,並試圖找到代碼中的哪個語句觸發了這個回溯。然後你可以在調試器中設置一個斷點或者使用Log.d(「myTag」,「一些有用的信息」); – nPn