Affdex Android SDK - Save and use CameraDetector
<p>Mostly I want to know if there is a fundamental conflict that I can't share the same resource with the library, if so, I will need to take a different approach.</p>

<p>My goal is to have low quality video with the detector's meta data saved at the same time, so that I can do some post processing and slicing without much of a delay.</p>

<p>Based on the <a href="https://github.com/Affectiva/affdexme-android" rel="nofollow">CameraDetectorDemo</a> - <a href="http://developer.affectiva.com/v3/android/analyze-camera/" rel="nofollow">camera detector</a></p>

<p>I have been initializing a MediaRecorder, but it saves a black screen if I start it before the detector, and it crashes on start (with code -19) if I start it after the detector. The detector is attaching the preview, maybe it is to do with that.</p>

<p>I added some buttons to control these functions:</p>

<pre><code>protected void cameraInit() {
    String state = Environment.getExternalStorageState();
    if (!Environment.MEDIA_MOUNTED.equals(state)) {
        Log.d(LOG_TAG, "Drive not mounted - cannot write video");
        return;
    }

    File file = new File(getExternalFilesDir(Environment.DIRECTORY_MOVIES), "demo.gp3");

    Log.d(LOG_TAG, String.format("Camera Initializing. Setting output to: %s", file.getAbsolutePath()));

    // Set sources
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

    // Set profile
    recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));

    // Set output profile
    recorder.setOutputFile(file.getAbsolutePath());

    // Set preview output
    recorder.setPreviewDisplay(cameraPreview.getHolder().getSurface());



    try {
        this.recorder.prepare();
    } catch (IOException e) {
        Log.e(LOG_TAG, "IO exception on camera Initialization");
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // This is thrown if the previous calls are not called with the
        // proper order
        Log.e(LOG_TAG, "Failed to initialize things properly :(  ");
        e.printStackTrace();
    }
}

protected void cameraStart() {
    Log.d(LOG_TAG, "Camera Start");
    this.recorder.start();
}

protected void cameraStop() {
    Log.d(LOG_TAG, "Camera Stop");
    this.recorder.stop();
}
</code></pre>