Воспроизведение видео в приложении для Android - PullRequest
0 голосов
/ 12 июня 2011

EDIT ------------ Я хочу иметь несколько видео, и когда вы проводите пальцем по экрану, вы переходите к следующему видео с помощью кнопок паузы и воспроизведения.

ССЫЛКА НА МОИ ФАЙЛЫ: http://www.mediafire.com/?ap12kiibfe438bf

* 1011 ---------------- *

Я делаю это приложение, которое воспроизводит видео, и это просто, за исключением того, что у меня есть несколько видео для воспроизведения, и я не уверен, что все мое кодирование правильно, и я не уверен, как реализовать прокрутку от одного видео к другому.

Это мой код 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>

Не могли бы вы помочь мне с тем, как прокрутить видео от одного к другому, например, просто скопировать весь код и поместить его в то, что я делал раньше? Или что?

Извините, если я не очень помог, но мне действительно нужно это сделать.

Спасибо

Эрик V

1 Ответ

0 голосов
/ 12 июня 2011

Я не уверен, что вы действительно хотите, но я заметил, что тег ScrollView уже закрыт, когда вы пытаетесь добавить свои атрибуты:

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

Кроме того, я бы не стал загружатьнесколько видео в одном действии и позволяют им играть (может привести к большому использованию памяти).Я просто создал бы макет с VideoView и создал бы что-то вроде плейлиста, который будет замечать, когда закончится одно из ваших видео, и загружает следующее видео в VideoView.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...