2012-05-01 51 views
0

我創建一個意圖播放存儲在SD卡中的視頻。我發揮了第一個,一切都很好。但是當我打另一個時,它每次都是我玩的第一個。這裏是我的代碼:意圖播放視頻始終播放相同的一個

package com.remote; 

import java.io.File; 
import java.io.IOException; 

import com.remote.R.drawable; 


import android.app.Activity; 
import android.content.Intent; 
import android.graphics.PixelFormat; 
import android.media.MediaPlayer; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.MediaController; 
import android.widget.VideoView; 


    public class MyVideos extends Activity{ 

private String path="/sdcard/Movies/Telmex"; 



@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.myvideos); 

    createLinks(new File(path)); 

} 

public void createLinks(File path) 
{ 
    LinearLayout layout = (LinearLayout) findViewById(R.id.myvideoslayout); 
    if(path.exists()) { 
     File[] files = path.listFiles(); 
     for(int i=0; i<files.length; i++) 
     { 
      if(files[i].getName().toString().charAt(0)!='.') 
      { 
      String videoName; 
      Button video=new Button(this); 
      video.setBackgroundColor(2); 
      video.setTextSize(23); 
      video.setCompoundDrawablesWithIntrinsicBounds(0,0,drawable.videoicon,0); 
      videoName=new String(files[i].getName()); 
      video.setText(videoName); 
      createListener(video,videoName); 
      LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT 
      ); 
      layout.addView(video,p); 
      } 

     } 
    } 
} 

public void createListener(Button video, final String name) 
{ 
    video.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      videoPlayer(path,name,true); 
     } 
    }); 
} 

public void videoPlayer(String path, String fileName, boolean autoplay) 
{ 
    Intent intent = new Intent(android.content.Intent.ACTION_VIEW); 
    Uri data = Uri.parse(path+"/"+fileName); 
    intent.setDataAndType(data, "video/mp4"); 
    startActivity(intent); 



} 

    } 
+0

解決!我所做的是使用你告訴我的例子:http://sree.cc/google/android/playing-the-video-in-sd-card-of-android 我不得不使用兩個Activity方式以便在列表中以縱向模式工作,並在播放器中以橫向模式工作。非常感謝! – danywarner

回答

0

重寫

我做了一些挖掘和寫了下面的代碼,如果有同樣的問題,那麼它是外部的視頻播放器不是你的應用程序。

public class ExampleActivity extends Activity { 
    // Change this path 
    private final String path = Environment.getExternalStorageDirectory() + "/android/data/com.example/files/"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     File dir = new File(path); 
     List<String> files = new ArrayList<String>(); 
     Collections.addAll(files, dir.list()); 
     Collections.sort(files); 

     while(files.get(0).startsWith(".")) 
      files.remove(0); 

     ListView listView = (ListView) findViewById(R.id.list); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, files); 
     listView.setAdapter(adapter); 

     listView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String uri = path + ((TextView) view).getText().toString(); 
       Intent intent = new Intent(Intent.ACTION_VIEW); 
       intent.setDataAndType(Uri.parse(uri), "video/*"); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

加成

我還是很高興的內部視頻播放器的工作原理。它重置的原因是,每當你改變方向時,操作系統都會從頭開始破壞和重建你的應用程序......就像你通過按下後退按鈕退出應用程序並重新運行它一樣。如果您使用的是下面的教程,則需要將視頻的onDestroy()中的位置保存到類變量中,並在您的onCreate()檢查中查看該變量是否具有有效位置,或只是從視頻的開頭開始。

+0

同樣的事情,兄弟。 – danywarner

+0

你的按鈕有不同的文字嗎? – Sam

+0

是的,eveyone有代表電影名稱。 – danywarner