2017-09-16 79 views
0

我在學習videoView的工作原理。我跟着一個教程;這是我的activity_main.xml中:我無法弄清楚爲什麼這個簡單的videoView演示不起作用

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.simoc.videoviewdemo.MainActivity" 
tools:layout_editor_absoluteY="81dp" 
tools:layout_editor_absoluteX="0dp"> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginLeft="0dp" 
    android:layout_marginRight="0dp" 
    android:layout_marginTop="0dp" 
    android:layout_marginBottom="0dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintBottom_toBottomOf="parent"> 


    <VideoView 
     android:id="@+id/videoView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true"/> 
</RelativeLayout> 

,這是我mainActivity.java:

<package com.simoc.videoviewdemo; 
import android.net.Uri; 
import android.os.Environment; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.VideoView; 

public class MainActivity extends AppCompatActivity { 

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

    VideoView myVideoView = (VideoView) findViewById(R.id.videoView); 
    myVideoView.setVideoPath("android.resource://"+ getPackageName()+"/"+R.raw.myvideo.3gp); 

//myVideoView.setVideoURI(Uri.parse("http://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4")); 
      //String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/myvideo.3gp"; 
      //myVideoView.setVideoPath(path); 
      //Log.i("MY_PATH: ", path); 
      myVideoView.start(); 
     } 
     } 

確定。首先,我創建一個「原始」文件夾unde「res」並將其中的視頻。我已經設置了videoPath,並且所有的工作都很好。 所以我決定嘗試流式傳輸視頻。它在代碼中運行鏈接,但它不能用於隨機的YouTube鏈接(我不明白爲什麼)。 但真正的問題是:爲什麼這2行:

String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/myvideo.3gp"; 
     myVideoView.setVideoPath(path); 

是錯的?我把視頻放在/storage/emulated/0/myvideo,但我總是得到錯誤can't play the video。我沒有找到使用videoView的不同方式,所以我真的不知道我的錯在哪裏。 哦,在清單我添加了任何權限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

回答

0

嘗試這種不添加擴展名

VideoView myVideoView = (VideoView) findViewById(R.id.videoView); 
String path = "android.resource://" + getPackageName() + "/" + R.raw.myvideo; 
myVideoView.setVideoURI(Uri.parse(path)); 
myVideoView.start(); 
+0

沒有這一行是正確的,它工作正常。當我嘗試訪問手機內部存儲器中的文件夾時,無法使用的行是最後加下劃線的2。在那裏我試圖刪除擴展名,但它不起作用 – Simone

相關問題