web-dev-qa-db-ja.com

画像ではなくスプラッシュ画面としてのビデオ

Androidスプラッシュ画面でのプログラミングチュートリアルを実行しています。メインアプリケーションに表示されるよりも5秒間、画像またはテキストが表示されます。私の質問は、テキストまたは画像の代わりにアプリケーションの次のページに移動する前に、5秒間ビデオファイルを表示します。

アプリケーションがいつロードされるかについて話しているのではなく、アプリケーションがロードされ、別のJava&XMLページに何かを表示してから別の何かに移動するようにプログラムします。これが私の現在のコードです。

@Override
protected void onCreate(Bundle SplashScreen1) {
    // TODO Auto-generated method stub
    super.onCreate(SplashScreen1);
    setContentView(R.layout.splash);
    ourSong = MediaPlayer.create(Splash.this, R.raw.splashsound);
    ourSong.start();
    Thread timer = new Thread(){
        public void run(){
            try{
                sleep(5000);
            } catch (InterruptedException e){
                e.printStackTrace();
            }finally{
                Intent openStartingPoint = new Intent("com.Player.Splash.STARTINGPOINT");
                startActivity(openStartingPoint);

            }
        }
    };
    timer.start();

}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    ourSong.release();
    finish();
}

では、開始/停止などを行わずにビデオメディアファイルを表示するにはどうすればよいですか。

14
Jester

1)SplashScreen.Javaクラスを作成します。

2)resディレクトリ(res/raw)内にrawフォルダを作成します。

3)mp4ビデオファイルをこのrawフォルダーに貼り付けます(サンプルmp4がない場合は、以下のリンクからダウンロードできます)。 http://www.mediafire.com/download/p05ki89i2dt5x2x/splash.mp4

4)次に、SplashScreen.Javaクラスに次のコードを追加します。

public class SplashScreenActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    try {
        VideoView videoHolder = new VideoView(this);
        setContentView(videoHolder);
        Uri video = Uri.parse("Android.resource://" + getPackageName() + "/" + R.raw.splash);
        videoHolder.setVideoURI(video);

        videoHolder.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                jump();
            }
        });
        videoHolder.start();
    } catch (Exception ex) {
        jump();
    }
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    jump();
    return true;
}

private void jump() {
    if (isFinishing())
        return;
    startActivity(new Intent(this, MainActivity.class));
    finish();
}

}

注:splash_activity.xmlは必要ありません。

11
Surendar D

これがお役に立てば幸いです。ビデオのスプラッシュ画面を作成するための単純な VideoView を作成するだけです。

ソースコードを聞いて スプラッシュ画面を作成するためのベストプラクティスは簡単な手順

8
Dwivedi Ji

MediaPlayerVideoViewと一緒に使用します。次に、OnCompletionListenerMediaPlayerを設定することで、ビデオの再生が完了したことを「聞く」ことができます。

ここを参照してください: http://developer.Android.com/reference/Android/media/MediaPlayer.html そしてここを参照してください: http://developer.Android.com/reference/Android/ウィジェット/VideoView.html

また、MediaPlayerリファレンスページの状態図にも特に注意してください。それは少しトリッキーかもしれませんし、数人をつまずかせることが知られています。

5
LuxuryMode
imgAnim=(VideoView)findViewById(R.id.animimage);

String uriPath = "Android.resource://com.petnvet/" + R.drawable.vidio;
Uri uri = Uri.parse(uriPath);
imgAnim.setVideoURI(uri);
imgAnim.requestFocus();
imgAnim.start();
//  imgAnim.setVideoPath("Android.resource://com.myapplication/" + R.drawable.vidio);
int SPLASH_DISPLAY_LENGTH = 3000;
new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        Intent mainIntent = new Intent(SplashScreen.this, Login.class);
        startActivity(mainIntent);
        finish();
    }
}, SPLASH_DISPLAY_LENGTH);
1
influx

これがビデオを追加するためのコードです。一時停止やシークなどのコントロールをビデオに追加する必要がある場合は、次の方法で追加できます。

vv.setMediaController(new MediaController(this));

残りのコード:

VideoView vv;

@Override

protected void onCreate(Bundle savedInstanceState)

{

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_splash);

    vv=(VideoView)findViewById(R.id.videoView);
    Uri path=Uri.parse("Android:resource://"+getPackageName()+"/"+R.raw.hello);
    vv.setVideoURI(path);
    vv.setMediaController(new MediaController(this));

   vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
   {
       @Override
       public void onCompletion(MediaPlayer mp) {
           Intent in=new Intent(splash.this,MainActivity.class);
        startActivity(in);
           finish();

       }
   });
    vv.start();
0
Kartik Gogia