Android 播放视频的意图总是播放同一个视频
我正在创建播放SD卡中存储的视频的意图。碰巧我打了第一个,一切都好。但当我演奏另一首曲子时,每次我演奏第一首曲子时,它都会演奏。这是我的密码:Android 播放视频的意图总是播放同一个视频,android,Android,我正在创建播放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 andr
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);
}
}
package.com.remote;
导入java.io.File;
导入java.io.IOException;
导入com.remote.R.drawable;
导入android.app.Activity;
导入android.content.Intent;
导入android.graphics.PixelFormat;
导入android.media.MediaPlayer;
导入android.net.Uri;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.LinearLayout;
导入android.widget.MediaController;
导入android.widget.VideoView;
公共类MyVideos扩展活动{
私有字符串路径=“/sdcard/Movies/Telmex”;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.myvideos);
创建链接(新文件(路径));
}
public void createLinks(文件路径)
{
LinearLayout布局=(LinearLayout)findViewById(R.id.myvideoslayout);
if(path.exists()){
File[]files=path.listFiles();
对于(int i=0;i重写
我做了一些挖掘,并写了下面的代码,如果这有相同的问题,那么这是你的外部视频播放器,而不是你的应用程序
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);
}
});
}
}
公共类ExampleActivity扩展活动{
//改变这条路
私有最终字符串路径=Environment.getExternalStorageDirectory()+“/android/data/com.example/files/”;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
文件目录=新文件(路径);
列表文件=新的ArrayList();
Collections.addAll(文件,dir.list());
收集.分类(文件);
while(files.get(0).startsWith(“.”)
删除(0);
ListView ListView=(ListView)findViewById(R.id.list);
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,文件);
setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串uri=path+((TextView)视图).getText().toString();
意向意向=新意向(意向.行动\视图);
intent.setDataAndType(Uri.parse(Uri),“video/*”;
星触觉(意向);
}
});
}
}
添加
我很高兴内部视频播放器可以正常工作。它之所以会重置,是因为每次你改变方向时,操作系统都会从头开始破坏和重建你的应用程序……就像你按“后退”按钮退出应用程序,然后再次运行一样。如果你从下面使用教程,你需要将视频的位置保存在onDestro中y()
到类变量,并在onCreate()中
检查该变量是否有有效的位置,或者只是在视频的开头开始。您的按钮是否有不同的文本?当我返回并选择不同的文本时,播放机会将上一个视频恢复到原来的位置。但是,即使我让它完成并选择了一个新的视频。无论发生什么,它都会再次播放相同的视频。啊,我明白了。你验证过不同的文件名传递给intent吗?是的,它始终是相应的文件名。发生的情况是视频播放器不播放新的文件,而是继续播放旧的文件。运气好吗?除非你的应用程序正在播放视频,否则你不需要添加任何intent筛选器。如果你不想,这里有一个示例帽子路线。解决了!我所做的是使用您告诉我的示例:我必须使用双活动方式,以便在列表中以纵向模式工作,在播放器中以横向模式工作。非常感谢!