2016-05-03 8 views
0

Ich folge diesem [Beispiel] [1] um zu verstehen, wie ich mit Android Videokamera arbeiten kann.Nexus6 Kann dieses Video nicht abspielen

Der Code für meine Aktivität ist nur ein Button und ein VideoView. Nach Antippen der Schaltfläche nehme ich ein Video auf und dann, nach dem Stoppen der Aufnahme, ist das aufgezeichnete Video im VideoView sichtbar. Der Code funktioniert perfekt auf einem Galaxy S2 (api16) und auf einem Huawei L21 (api 22) aber auf einem Motorola Nexus 6 (api23) Ich bin vor diesem Fehler

kann dieses Video nicht spielen

Dies ist meine Tätigkeit Datei:

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(); 
} 

}

und das Protokoll ich bin mit Nexus6 bekommen

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 

Jede Idee, warum funktioniert nicht auf Nexus 6?

+0

Haben Sie die Laufzeitberechtigungen überprüft? –

+0

ja ich tat, in der Tat ein paar Mal – JoCuTo

+0

Was ist Ihre Ziel-API? @JeCuRo – Lampard

Antwort

1

Behoben nach Update die Camera Version App auf 3.2.045. Es war ein Problem in der Kamera App selbst nicht in dem Code, den ich gepostet habe.