+
+ // Find a back-facing camera, otherwise use the first camera.
+ int cameraId;
+ for (cameraId = Camera.getNumberOfCameras() - 1; cameraId > 0; cameraId--) {
+ Camera.getCameraInfo(cameraId, mCameraInfo);
+ if (mCameraInfo.facing == CameraInfo.CAMERA_FACING_BACK)
+ break;
+ }
+ mCameraId = cameraId;
+
+ // Create the decoder thread
+ mDecodeAsyncTask = new DecodeAsyncTask() {
+ @Override
+ protected void onPostExecute(String result) {
+ super.onPostExecute(result);
+ if (result != null)
+ ((MainActivity) getActivity()).tokenURIReceived(result);
+ dismiss();
+ }
+ };
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // If we have no cameras, open the manual dialog
+ if (mCameraId < 0) {
+ new ManualDialogFragment().show(getFragmentManager(),
+ ManualDialogFragment.FRAGMENT_TAG);
+ dismiss();
+ return;
+ }
+
+ mDecodeAsyncTask.execute();
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ mDecodeAsyncTask.cancel(true);