MediaRecorder-Start fehlgeschlagen -19 und Kamerafehler 100

Ich entwickle eine App zum Aufnehmen von Videos.

Ich habe diesen Code in meiner App, die in Nexus 4 und Sony Ericsson mini pro einwandfrei funktioniert, aber wenn ich auf anderen Geräten wie Archos 80G9 und Jiayu G3ST teste, gibt die App den folgenden Fehler aus

"MediaRecorder start failed -19"

oder manchmal

msgstr "Kamerafehler 100".

Ich habe versucht, einige Änderungen zu implementieren, die in anderen Stackoverflow-Posts vorgeschlagen wurden, aber der Fehler wird weiterhin angezeigt.

private boolean prepareVideoRecorder() {
    /** ADDED Sony Ericsson Stoped */
    try {
        mCamera.setPreviewDisplay(null);
    } catch (java.io.IOException ioe) {
        Log.d(TAG,
                    "IOException nullifying preview display: "
                            + ioe.getMessage());
    }
    mCamera.stopPreview();

    mMediaRecorder = new MediaRecorder();
    // Step 1: Unlock and set camera to MediaRecorder
    mCamera.unlock();
    mMediaRecorder.setCamera(mCamera);

    // Step 2: Set sources
    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

    // Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
    CameraBackFront cm = new CameraBackFront();
    int id = cm.getBackCameraId();
    if (qualityString().equalsIgnoreCase("Low")) {
        mMediaRecorder.setProfile(CamcorderProfile.get(id,
                    CamcorderProfile.QUALITY_LOW));
    } else if (qualityString().equalsIgnoreCase("High")) {
        mMediaRecorder.setProfile(CamcorderProfile.get(id,
                    CamcorderProfile.QUALITY_HIGH));
    } else if (qualityString().equalsIgnoreCase("480p")) {
        mMediaRecorder.setProfile(CamcorderProfile.get(id,
                    CamcorderProfile.QUALITY_480P));
    } else if (qualityString().equalsIgnoreCase("720p")) {
        mMediaRecorder.setProfile(CamcorderProfile.get(id,
                    CamcorderProfile.QUALITY_720P));
    } else if (qualityString().equalsIgnoreCase("1080p")) {
        try {
            mMediaRecorder.setProfile(CamcorderProfile.get(id,
                        CamcorderProfile.QUALITY_1080P));
        } catch (Exception e) {
            mMediaRecorder.setProfile(CamcorderProfile.get(id,
                        CamcorderProfile.QUALITY_HIGH));
        }
    } else {
        mMediaRecorder.setProfile(CamcorderProfile.get(0,
                    CamcorderProfile.QUALITY_HIGH));
    }

    // Step 4: Set output file
    mMediaRecorder.setOutputFile(getOutputMediaFile(MEDIA_TYPE_VIDEO)
                .toString());
    /** ADD FILE NAME */
    addFileNameDB();
    // Step 5: Set the preview output
    mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());

    // Step 6: Prepare configured MediaRecorder
    try {
        mMediaRecorder.prepare();
    } catch (IllegalStateException e) {
        Log.d(TAG,
                    "IllegalStateException preparing MediaRecorder: "
                            + e.getMessage());
        releaseMediaRecorder();
        return false;
    } catch (IOException e) {
        Log.d(TAG, "IOException preparing MediaRecorder: " + e.getMessage());
        releaseMediaRecorder();
        return false;
    }

    return true;
}

Ich habe versucht:

lege einthread.sleep(1000); Vormediarecorder.start() aber das gibt mir einen fehler.Fügen Sie in development.android.com einen Standard-CameraPreview ein.Meine App funktioniert mit einer benutzerdefinierten CameraPreview, deren Größe in der Vorschau geändert wurde.Ich erhalte die Kameraqualitäten mitCamcorderProfile.hasProfile(CamcorderProfile.QUALITY_720P) , weil hierbei immer Profile verwendet werden, die am Telefon funktionieren.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage