package dk.itu.eyedroid.demo; import org.opencv.android.CameraBridgeViewBase; import android.app.Activity; import android.app.Fragment; import android.hardware.Camera.CameraInfo; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import dk.itu.eyedroid.EyeDroid; import dk.itu.eyedroid.R; import dk.itu.eyedroid.filters.PreviewFilter; import dk.itu.eyedroid.io.protocols.InputStreamCamera; import dk.itu.eyedroid.io.protocols.InputStreamUSBCamera; import dk.itu.eyedroid.io.protocols.OutputTCPNet; import dk.itu.spcl.jlpf.io.IOProtocolReader; import dk.itu.spcl.jlpf.io.IORWDefaultImpl; /** * Demo created to be used with a tcp client. */ public class MainFragment extends Fragment { final String URL = "http://217.197.157.7:7070/axis-cgi/mjpg/video.cgi?resolution=320x240"; public static final String TAG = "TestFragment"; public static final String CAMERA_OPTION = "camera_option"; public static final int FRONT_CAMERA = 0; // Device front camera id. public static final int BACK_CAMERA = 1; // Device back camera id. public static final int USB_CAMERA = 2; // External usb plugged camera id. private EyeDroid EYEDROID; // Core component private View mRootView; // Fragment root view private ImageView mImageView; // View used to show the input video + the resulting coordinates on screen. private PreviewFilter mPreviewFilter; // Last filter in the architecture.Used to draw a circle in the pupil. @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { mRootView = inflater.inflate(R.layout.streaming_layout, container,false); mImageView = (ImageView) mRootView.findViewById(R.id.mjpeg_view); EYEDROID = new EyeDroid(getActivity()); return mRootView; } @Override public void onAttach(Activity activity) { super.onAttach(activity); this.setHasOptionsMenu(true); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.main_framgnet, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Disable preview on screen by clicking start/stop button. if (item.getItemId() == R.id.preview) { if (mPreviewFilter.isEnabled()) { mPreviewFilter.disablePreview(); item.setIcon(getResources().getDrawable(R.drawable.start_btn)); } else { mPreviewFilter.enablePreview(); item.setIcon(getResources().getDrawable(R.drawable.stop_btn)); } return true; } return super.onOptionsItemSelected(item); } public IORWDefaultImpl createProtocols() { // Setup EyeDroid input protocol. int whichCamera = this.getArguments().getInt(CAMERA_OPTION); CameraBridgeViewBase camera = (CameraBridgeViewBase) mRootView.findViewById(R.id.opencv_camera_view); IOProtocolReader inProtocol = null; switch (whichCamera) { case FRONT_CAMERA: inProtocol = new InputStreamCamera(getActivity(), camera, CameraInfo.CAMERA_FACING_FRONT); break; case BACK_CAMERA: inProtocol = new InputStreamCamera(getActivity(), camera, CameraInfo.CAMERA_FACING_BACK); break; case USB_CAMERA: inProtocol = new InputStreamUSBCamera(getActivity(), 3); break; default: break; } OutputTCPNet outProtocol = new OutputTCPNet(5000); IORWDefaultImpl io_rw = new IORWDefaultImpl(inProtocol, outProtocol); return io_rw; } @Override public void onResume() { super.onResume(); Log.i(TAG, "OnResume"); IORWDefaultImpl io = createProtocols(); EYEDROID.setIOProtocols(io, io); mPreviewFilter = EYEDROID.addAndGetPreview(mImageView); EYEDROID.start(); } @Override public void onPause() { super.onPause(); Log.i(TAG, "OnPause"); EYEDROID.stop(); } }