2013-01-24 18 views
8

Web üzerinde her yeri aradım ve 1001 hatasının ne olduğunu bulamıyorum. Bundan birkaç saniye sonra kamera 100 hatası alıyorum ama ilk hatanın ne olduğunu anlayamıyorum. Herhangi bir fikri olan var mı?android kamera hatası 1001 - bu ne halt?

+0

böyledir: Aşağıdaki kod en cihazların adresleri . –

cevap

5

Bu hatayı S3'ümde de gördüm. MediaRecorder tarafından kamera önizleme yüzeyinin nasıl kullanıldığını izlediğime inanıyorum. Benim durumumda, kayıt yapmaya başladığımda önizleme ekranı sıfırlanıyordu. Benim kodunu temizleyerek onu çözmüş ve sadece set başlangıç ​​ve (Android Camera developer guide itibaren) aşağıda SurfaceView uygulanmasında önizleme ekranı durdurmak için Aramaları kullandı:

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback { 
private SurfaceHolder mHolder; 
private Camera mCamera; 

public CameraPreview(Context context, Camera camera) { 
    super(context); 
    mCamera = camera; 

    // Install a SurfaceHolder.Callback so we get notified when the 
    // underlying surface is created and destroyed. 
    mHolder = getHolder(); 
    mHolder.addCallback(this); 
    // deprecated setting, but required on Android versions prior to 3.0 
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
} 

public void surfaceCreated(SurfaceHolder holder) { 
    // The Surface has been created, now tell the camera where to draw the preview. 
    try { 
     mCamera.setPreviewDisplay(holder); 
     mCamera.startPreview(); 
    } catch (IOException e) { 
     Log.d(TAG, "Error setting camera preview: " + e.getMessage()); 
    } 
} 

public void surfaceDestroyed(SurfaceHolder holder) { 
    // empty. Take care of releasing the Camera preview in your activity. 
} 

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
    // If your preview can change or rotate, take care of those events here. 
    // Make sure to stop the preview before resizing or reformatting it. 

    if (mHolder.getSurface() == null){ 
     // preview surface does not exist 
     return; 
    } 

    // stop preview before making changes 
    try { 
     mCamera.stopPreview(); 
    } catch (Exception e){ 
     // ignore: tried to stop a non-existent preview 
    } 

    // set preview size and make any resize, rotate or 
    // reformatting changes here 

    // start preview with new settings 
    try { 
     mCamera.setPreviewDisplay(mHolder); 
     mCamera.startPreview(); 

    } catch (Exception e){ 
     Log.d(TAG, "Error starting camera preview: " + e.getMessage()); 
    } 
} 
} 
3

Sadece ben gelecek için buraya bir yazı eklemek düşündüm referans. Bu konu beni uzun zaman rahatsız etti. Çözünürlük kümesi getSupportedPictureSize yönteminden elde edilmiş olsa da, sorunumun yanlış bir önizleme boyutu neden olduğu ortaya çıkıyor.

//first entry in list is 1392x1392 for front facing camera on an S3 
List<Camera.Size> supportedPictureSizes = params.getSupportedPictureSizes(); 

bu çözünürlük ayarlama veya korkulan hata 1001.

neden olacaktır alltogether bir resim boyutunu ayarlamak için ihmal herhangi bu karşılaşırsanız şu şekildedir:

Yani, örneğin size boyutları alabilirsiniz diğer cihaz farklı resim boyutlarını denemenizi tavsiye ederim.

0

Bu yüzden Galaxy S3'ümde almamın bir başka nedeni daha vardı. Kamera önizlememi göstermek için TextureView kullanıyordum ve başarılı bir önizlemeden sonra ana ekran düğmesine bastığımda ve daha sonra uygulamayı tekrar girerken bu korkunç hatayı aldım. OnResume() işlevinde, önizlemeyi yeniden başlattım ve on yüzeyde on SurfaceTextureDestroyed() işlevinde SurfaceTexture örnek değişkeni yayınlamadığımı fark ettim.

Bu işleve bırakma hattını eklendi ve şimdi şöyle görünür ve mükemmel çalışıyor:

@Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { 
    mSurfaceTexture = null; //This was the offending culprit. 

    releaseMediaPlayer(); 
    releaseVideoRecorder(); 
    releaseCamera(); 

    return false; 
} 
0

Benim durumumda, Samsung S3, video boyutu parametre ayarlanır ve bu yol değildi 1001 hatası. Önizleme boyutunu kullanarak medya kaydedici üzerindeki video boyutunu ayarlamak sorunu çözdü. Ancak, bu değişiklik diğer cihazlarda başarısız olabilir, çünkü parametre tüm cihazlarda mevcut olabilir/olmayabilir veya olmayabilir. Gelecekte bunu önleyebilirsiniz benim kod önceki bir sürümüne benim geri alma düzelttim ama yine de o 1001 hatası wtf bilmek istiyorum oldu şimdiye Ne

if(params.get("video-size") != null && params.get("video-size").isEmpty()) { 
    int videoWidth = params.getPreviewSize().width; 
    int videoHeight = params.getPreviewSize().height; 
    mediaRecorder.setVideoSize(videoWidth, videoHeight); 
} else { 
    mediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight); 
}