在Android应用中播放视频

时间:2011-06-12 16:59:13

标签: android eclipse

修改------------ 我希望有多个视频,当您在屏幕上滑动手指时,它会通过暂停和播放按钮转到下一个视频。

链接到我的文件:http://www.mediafire.com/?ap12kiibfe438bf

----------------

我正在制作这个播放视频的应用程序而且它简单易用我有多个视频可以玩,我不确定我的所有编码是否正确,我不知道如何实现从一个视频滚动到下一个视频。

这是我的Java代码:

    package com.exercise.AndroidVideoPlayer;

import java.io.IOException;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;

public class AndroidAudioPlayer extends Activity implements SurfaceHolder.Callback{

    MediaPlayer mediaPlayer;
    SurfaceView surfaceView;
    SurfaceHolder surfaceHolder;
    boolean pausing = false;;

    String stringPath = "/sdcard/samplevideo.3gp";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button buttonPlayVideo = (Button)findViewById(R.id.playvideoplayer);
        Button buttonPauseVideo = (Button)findViewById(R.id.pausevideoplayer);

        getWindow().setFormat(PixelFormat.UNKNOWN);
        surfaceView = (SurfaceView)findViewById(R.id.surfaceview);
        surfaceHolder = surfaceView.getHolder();
        surfaceHolder.addCallback(this);
        surfaceHolder.setFixedSize(176, 144);
        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

    }
}

我的main.xml:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <ScrollView> android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="110px"
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button
    android:id="@+id/playvideoplayer"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="- PLAY Video -"
    />
<Button
    android:id="@+id/pausevideoplayer"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="- PAUSE Video -"
    />
<SurfaceView
    android:id="@+id/surfaceview"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
    <TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button
    android:id="@+id/playvideoplayer"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="- PLAY Video -"
    />
<Button
    android:id="@+id/pausevideoplayer"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="- PAUSE Video -"
    />
<SurfaceView
    android:id="@+id/surfaceview"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
    </ScrollView>
</LinearLayout>

如果你能帮助我如何从一个视频滚动到下一个视频,就像我只是复制所有代码并把它放在我以前做的之下?或者什么?

很抱歉,如果我不是非常有帮助,但我真的需要这样做。

由于

Eric V

1 个答案:

答案 0 :(得分:0)

我不确定你真正想要什么,但我注意到当您尝试添加属性时,ScrollView - 标记已经关闭:

<ScrollView> android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="110px"

此外,我不会在一个活动中加载多个视频并让它们播放(可能会导致大量内存使用)。我只需使用VideoView创建布局,然后制作类似于播放列表的内容,当您其中一个视频完成并加载VideoView中的下一个视频时会发出通知。