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



 }

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

添加

内部のビデオプレーヤーが機能してよかったです。リセットされる理由は、向きを変えるたびにOSがアプリを破棄して最初から再構築するためです...これは、戻るボタンを押してアプリを再実行した場合と同じです。以下のチュートリアルを使用している場合は、ビデオの場所をonDestroy()クラス変数に保存し、onCreate()その変数に有効な場所があるかどうかを確認するか、ビデオの最初から開始する必要があります。

于 2012-05-01T19:12:03.883 に答える