0

我正在创建一个播放存储在 sdcard 中的视频的意图。碰巧我玩了第一个,一切正常。但是当我玩另一个时,它只会在我玩的第一个时播放。这是我的代码:

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



 }

  }
4

1 回答 1

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()检查该变量是否具有有效的位置,或者只是从视频的开头开始。

于 2012-05-01T19:12:03.883 回答