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();
}
では、開始/停止などを行わずにビデオメディアファイルを表示するにはどうすればよいですか。
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は必要ありません。
これがお役に立てば幸いです。ビデオのスプラッシュ画面を作成するための単純な VideoView を作成するだけです。
MediaPlayer
をVideoView
と一緒に使用します。次に、OnCompletionListener
にMediaPlayer
を設定することで、ビデオの再生が完了したことを「聞く」ことができます。
ここを参照してください: http://developer.Android.com/reference/Android/media/MediaPlayer.html そしてここを参照してください: http://developer.Android.com/reference/Android/ウィジェット/VideoView.html
また、MediaPlayer
リファレンスページの状態図にも特に注意してください。それは少しトリッキーかもしれませんし、数人をつまずかせることが知られています。
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);
これがビデオを追加するためのコードです。一時停止やシークなどのコントロールをビデオに追加する必要がある場合は、次の方法で追加できます。
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();