Meistens möchte ich wissen, ob es einen grundsätzlichen Konflikt gibt, dass ich die gleiche Ressource nicht mit der Bibliothek teilen kann, wenn ja, muss ich einen anderen Ansatz wählen.Affdex Android SDK - Speichern und verwenden CameraDetector
Mein Ziel ist es, eine niedrige Qualität Video mit den Metadaten des Detektors gleichzeitig gespeichert zu haben, so dass ich einige Nachbearbeitung und Slicing ohne große Verzögerung tun kann.
Basierend auf dem CameraDetectorDemo - camera detector
Ich habe eine MediaRecorder wurde initialisiert, aber es spart einen schwarzen Bildschirm, wenn ich es vor dem Detektor zu starten, und es stürzt beim Start (mit Code -19), wenn ich es starten nach dem Detektor. Der Detektor bringt die Vorschau an, vielleicht hat er damit zu tun.
Ich habe einige Schaltflächen um diese Funktionen zu steuern:
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();
}
Hm, ich frage mich, ob ich den Mediagerekorder so einstellen kann, dass er die gleiche Oberfläche wie der CameraDetector verwendet und davon aufnimmt? – exrhizo
Ich denke nicht, ich denke, wenn MediaRecorder mit der Aufnahme beginnt, übernimmt es die Kontrolle über die Kamera, so dass der CameraDetector nach diesem Punkt keine Vorschaubilder mehr bekommt. –