【发布时间】:2015-03-25 02:55:22
【问题描述】:
我有一个开发应用程序来搜索和播放视频,在我的项目中,我很难将搜索到的视频的路径传递给视频播放活动。当我将视频的实际路径直接放入播放器活动时,它会播放视频,但如果我从意图中获取视频名称,然后我将其转换为该视频的路径。它没有得到paly。我的程序没有显示任何错误 我无法获得从第一个活动传递的意图数据,当我将该数据设置到 textview 时它显示为“null”,请帮助我解决这个问题
这是我的第一个活动
public class FirstActivity extends Activity {
EditText et;
Button bt;
String filename;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.firstscreen);
et = (EditText)findViewById(R.id.editText1);
filename = et.getText().toString();
bt = (Button)findViewById(R.id.button1);
final Intent i = new Intent(this, MainActivity.class);
i.putExtra("text_label", filename);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
startActivity(i);
}
});
}
}
这是我对视频播放器的第二次活动
public class MainActivity extends Activity implementsSurfaceHolder.Callback{
MediaPlayer mediaPlayer;
urfaceView surfaceView;
SurfaceHolder surfaceHolder;
boolean pausing = false;;
String uriString;
String stringPaths= "/sdcard/video/";
String stringPath;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button buttonPlayVideo = (Button)findViewById(R.id.playvideoplayer);
Button buttonPauseVideo = (Button)findViewById(R.id.pausevideoplayer);
Intent i = getIntent();
uriString = i.getStringExtra("text_label");
stringPath = stringPaths+uriString+".3gp";
getWindow().setFormat(PixelFormat.UNKNOWN);
surfaceView = (SurfaceView)findViewById(R.id.surfaceview);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setFixedSize(176, 300);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mediaPlayer = new MediaPlayer();
buttonPlayVideo.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
pausing = false;
if(mediaPlayer.isPlaying()){
mediaPlayer.reset();
}
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDisplay(surfaceHolder);
try {
mediaPlayer.setDataSource(stringPath);
mediaPlayer.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mediaPlayer.start();
}});
buttonPauseVideo.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(pausing){
pausing = false;
mediaPlayer.start();
}
else{
pausing = true;
mediaPlayer.pause();
}
}});
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
所以这是我的问题 1.我是否将意图正确地传递给了第二个活动。 2.我应该如何将获取意图数据与文件路径字符串连接起来。
请帮助我 我对此感到震惊。
【问题讨论】:
-
我没有发现任何明显的问题。您是否尝试过注销并将准备好的字符串与您传递给 dataSource 调用的字符串进行比较?另外,你应该考虑看看 Android VideoView,它比 SurfaceViews 更容易使用
-
我使用视频视图,但它不播放我的视频请建议任何链接以在我的应用中使用视频视图