2013-10-26 5 views
0

Я использую встроенный андроид в моем приложении камеры для записи видео. Мое приложение может запускать приложение для камеры и записывать видео, но когда я нажимаю кнопку остановки встроенного приложения для камеры, мое приложение падает, и когда вы проверяете каталог, в котором я сохраняю видео, записанные видео сохраняются там в каталоге.Почему мое приложение падает, когда я прекращаю запись видео?

Вот мой код, пожалуйста, проверьте его.

Button makeVideo = (Button) findViewById(R.id.makeVideo); 
      makeVideo.setOnClickListener(new OnClickListener() 
      { 
       public void onClick(View v) 
       { 

        Intent intent = new Intent(android.provider.MediaStore.ACTION_VIDEO_CAPTURE); 

        Uri fileUri = getOutputMediaFileUri(); // create a file to save the video 

        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the video file name 

        intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 

        startActivityForResult(intent, REQUEST_VIDEO_CAPTURED); 

       } 
      }); 




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

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

     File mediaStorageDir = new File(Environment.getExternalStorageDirectory().getPath(), "My Videos"); 
     // 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; 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "VID_" + timeStamp + ".mp4"); 
     return mediaFile; 
    } 


@Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) 
     { 
      // TODO Auto-generated method stub 
      super.onActivityResult(requestCode, resultCode, data); 

      if (resultCode == RESULT_OK) 
      { 
       if (requestCode == REQUEST_VIDEO_CAPTURED) 
       { 
        uriVideo = data.getData(); 

       } 
      } 
    } 

Вот мой LogCat enter image description here

+0

У вас есть разрешение write_external_storage в выражениях? – Blackbelt

+0

он должен быть, потому что не исключение безопасности не –

+0

попробуйте эту ссылку [Ваш возможный дубликат этого] [1] [1]: http://stackoverflow.com/questions/7846772/mysterious -nullpointerexception-after-the-in-camera-app-saves-my-video-pro? rq = 1 –

ответ

0

API-интерфейс не может обработать путь, что вы дали на

mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "VID_" + timeStamp + ".mp4"); 

попробуйте:

mediaFile = new File(mediaStorageDir.getPath() + "VID_" + timeStamp + ".mp4"); 

может быть, это будет решить или сделать более простой формат времени:

mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "VID_temp.mp4"); 
+0

Показывает ту же ошибку – user2391890

0
mediaFile = new File(mediaStorageDir.getPath() + File.separator+ "VID_" + timeStamp + ".mp4"); 

File.sepator is system-depent. Файл имеет конструктор, который принимает два параметра: файл и строку:

mediaFile = new File(mediaStorageDir, "VID_" + timeStamp + ".mp4"); 
+0

Показывает ту же ошибку – user2391890

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