2016-05-03 3 views
0

Я следую этому [пример] [1], чтобы понять, как я могу работать с видеокамерой Android.Nexus6 Не могу воспроизвести это видео

Код для моей деятельности - это просто кнопка и видеообзор. После нажатия на кнопку я записываю видео, а затем, после остановки записи, записанное видео отображается на VideoView. код прекрасно работает на Galaxy S2 (api16) и на Huawei L21 (API 22), но на Motorola Nexus 6 (api23) Я столкнулся эту ошибку

Невозможно воспроизвести это видео

Это мой файл деятельности:

public class MainActivity extends AppCompatActivity { 

@Bind(R.id.button) 
Button button; 

@Bind(R.id.videoView) 
VideoView videoView; 

private Uri fileUri; 
public static final int MEDIA_TYPE_VIDEO = 2; 
private static final int CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE = 200; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ButterKnife.bind(this); 
} 

@OnClick(R.id.button) 
protected void startRecording() { 
    launchCamera(); 
} 

private void launchCamera() { 
    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
    fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO); // create a file to save the video 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name 
    // set the video image quality to high 
    startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE); 
} 

private Uri getOutputMediaFileUri(int type) { 
    Uri myUri = Uri.fromFile(getOutputMediaFile(type)); 
    Log.d("TAG","uri we have is "+myUri); 
    return myUri ; 
} 

private File getOutputMediaFile(int type){ 

    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_MOVIES), "MyCameraApp"); 

    if (! mediaStorageDir.exists()){ 
     if (! mediaStorageDir.mkdirs()){ 
      Log.d("MyCameraApp", "failed to create directory"); 
      return null; 
     } 
    } 

    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) { 
      videoView.setVideoURI(fileUri); 
      videoView.start(); 
} 

}

И Записывать я получаю с Nexus6

W/VideoView: Unable to open content: file:///storage/emulated/0/Movies/MyCameraApp/VID_20160503_132541.mp4 
                     java.io.IOException: setDataSource failed. 
                      at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1096) 
                      at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1042) 
                      at android.media.MediaPlayer.setDataSource(MediaPlayer.java:991) 
                      at android.widget.VideoView.openVideo(VideoView.java:348) 
                      at android.widget.VideoView.-wrap0(VideoView.java) 
                      at android.widget.VideoView$7.surfaceCreated(VideoView.java:624) 
                      at android.view.SurfaceView.updateWindow(SurfaceView.java:595) 
                      at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:243) 
                      at android.view.View.dispatchWindowVisibilityChanged(View.java:10214) 

    [1]: http://developer.android.com/intl/es/guide/topics/media/camera.html 

Любая идея, почему не работает на Nexus 6?

+0

Вы проверили разрешения времени выполнения? –

+0

Да, я действительно, на самом деле несколько раз – JoCuTo

+0

Каков ваш целевой API? @JeCuRo – Lampard

ответ

1

Исправлено после обновления версии камеры версии 3.2.045. Это была проблема в приложении «Камера», а не в коде, который я разместил.

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