2013-12-23 5 views
1

я использую следующий код для вызова существовала камера:Внимание: Камера не удалось

// New intent to Camera feature 
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
Uri fileUri = Uri.fromFile((new File((new Date()).toString()))); // create a file to save the video 

intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name 
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); // set the video image quality to high 

// start the Video Capture Intent 
startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE); 

I может захватить фото, но не может записывать видео, я получил ошибку Warning : Camera failed

я стараюсь что-то связано с some solutions, но не может получить хороший результат. (Хотя сброс телефона)

Пожалуйста, скажите мне, как это исправить,

Спасибо,

P/S: устройства - Samsung Galaxy Tab 7 2.2.1

EDIT: Я воспользовался следующим кодом, чтобы получить ответ, и ответьте на результат resultCode == RESULT_CANCELED

if (resultCode == RESULT_OK) { 
    // Video captured and saved to fileUri specified in the Intent 
    Toast.makeText(this, "Video saved to:\n" + 
        data.getData(), Toast.LENGTH_SHORT).show(); 
} else if (resultCode == RESULT_CANCELED) { 
    // User cancelled the video capture 
    Toast.makeText(this, "User cancelled the video capture", Toast.LENGTH_SHORT).show(); 
} else { 
    // Video capture failed, advise user 
    Toast.makeText(this, "Warning : Camera failed", Toast.LENGTH_SHORT).show(); 
} 
+0

Почему бы вам не проверить, действительно ли на самом деле возвращено намерение? аналогично этому http://developer.android.com/training/camera/videobasics.html также проверьте эту тему http://stackoverflow.com/questions/2550743/android-video-capture-sample-app –

+0

@Boris: I отредактировав код, следуйте вашему комментарию. Я также запускаю вторую ссылку (проект), и я получаю черный экран @@. –

+0

вам нужно создать новую активность для добавления Surfaceholder и MediaRecorder - легко записать видеозапись – Sanket990

ответ

0

Я сравнил ваш код с Android Guide. Единственное отличие - файл uri. Вы можете попробовать образец кода Google, чтобы получить файл uri:

public static final int MEDIA_TYPE_IMAGE = 1; 
public static final int MEDIA_TYPE_VIDEO = 2; 

/** Create a file Uri for saving an image or video */ 
private static Uri getOutputMediaFileUri(int type){ 
     return Uri.fromFile(getOutputMediaFile(type)); 
} 

/** Create a File for saving an image or video */ 
private static File getOutputMediaFile(int type){ 
    // To be safe, you should check that the SDCard is mounted 
    // using Environment.getExternalStorageState() before doing this. 

    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
       Environment.DIRECTORY_PICTURES), "MyCameraApp"); 
    // This location works best if you want the created images to be shared 
    // between applications and persist after your app has been uninstalled. 

    // Create the storage directory if it does not exist 
    if (! mediaStorageDir.exists()){ 
     if (! mediaStorageDir.mkdirs()){ 
      Log.d("MyCameraApp", "failed to create directory"); 
      return null; 
     } 
    } 

    // Create a media file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    File mediaFile; 
    if (type == MEDIA_TYPE_IMAGE){ 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
     "IMG_"+ timeStamp + ".jpg"); 
    } else if(type == MEDIA_TYPE_VIDEO) { 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
     "VID_"+ timeStamp + ".mp4"); 
    } else { 
     return null; 
    } 

    return mediaFile; 
} 
+0

Что случилось, если мое устройство еще не установило SdCard еще и парня? Я все еще пользуюсь этой функцией? –

+0

как минимум у вас есть интервалы хранения? этот метод означает, что вы можете получить общий каталог ваших устройств. некоторые устройства могут иметь только внутреннее хранилище, а не все устройства имеют дополнительный слот sdcard, например, устройства Samsung. Таким образом, этот метод может хорошо работать – yushulx

+0

Да, по крайней мере, у меня есть внутреннее хранилище. Таким образом, ваш ответ не был связан с моей ошибкой. Сожалею. –

Смежные вопросы