package com.fancl.iloyalty.activity;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnInfoListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.media.MediaPlayer.OnSeekCompleteListener;
import android.media.MediaPlayer.OnVideoSizeChangedListener;
import android.os.Bundle;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.widget.RelativeLayout;
import com.fancl.iloyalty.R;
import com.fancl.iloyalty.activity.login.WelcomeActivity;
import com.fancl.iloyalty.activity.whatshot.WhatsHotHomeActivity;
import com.fancl.iloyalty.factory.CustomServiceFactory;
import com.fancl.iloyalty.factory.GeneralServiceFactory;
import com.fancl.iloyalty.service.impl.LocaleServiceImpl.LANGUAGE_TYPE;
import com.fancl.iloyalty.util.DeviceUtil;
import com.fancl.iloyalty.util.LogController;
public class SplashScreenActivity extends AndroidProjectFrameworkActivity implements SurfaceHolder.Callback, OnCompletionListener, OnErrorListener, OnInfoListener, OnPreparedListener, OnSeekCompleteListener, OnVideoSizeChangedListener {
Display currentDisplay;
RelativeLayout spaceLayout;
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
MediaPlayer mediaPlayer;
int videoWidth = 0,videoHeight = 0;
boolean stopLoadHome = false;
public final static String LOGTAG = "CUSTOM_VIDEO_PLAYER";
Handler handler = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
application.applicationStartup();
setContentView(R.layout.activity_splash_screen);
spaceLayout = (RelativeLayout) this.findViewById(R.id.splash_space_layout);
surfaceView = (SurfaceView) this.findViewById(R.id.SurfaceView);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnErrorListener(this);
mediaPlayer.setOnInfoListener(this);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnSeekCompleteListener(this);
mediaPlayer.setOnVideoSizeChangedListener(this);
try {
AssetFileDescriptor afd = null;
LogController.log("screen size: " + DeviceUtil.getDeviceDenstity(this));
if (DeviceUtil.getDeviceDenstity(this) > 1.5) {
if (GeneralServiceFactory.getLocaleService().getCurrentLanguageType() == LANGUAGE_TYPE.EN) {
afd = getAssets().openFd("splash_en@2x.mp4");
}
else {
afd = getAssets().openFd("splash_tc@2x.mp4");
}
}
else {
if (GeneralServiceFactory.getLocaleService().getCurrentLanguageType() == LANGUAGE_TYPE.EN) {
afd = getAssets().openFd("splash_en.mp4");
}
else {
afd = getAssets().openFd("splash_tc.mp4");
}
}
mediaPlayer.setDataSource(afd.getFileDescriptor(),
afd.getStartOffset(), afd.getLength());
afd.close();
} catch (Exception e1) {
LogController.log("Error Log: " + e1);
toHomePage();
}
currentDisplay = getWindowManager().getDefaultDisplay();
}
@Override
protected void onDestroy()
{
mediaPlayer.release();
super.onDestroy();
}
private void toHomePage()
{
if (stopLoadHome) {
return;
}
stopLoadHome = true;
Intent intent;
if (CustomServiceFactory.getAccountService().isLogin()) {
intent = new Intent(SplashScreenActivity.this, WhatsHotHomeActivity.class);
}
else {
intent = new Intent(SplashScreenActivity.this, WelcomeActivity.class);
// intent = new Intent(SplashScreenActivity.this, WhatsHotHomeActivity.class);
}
startActivity(intent);
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
application.firstCallDbChecking = false;
application.databaseVersionChecking();
}
}, 50);
finish();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mediaPlayer.setDisplay(holder);
try {
mediaPlayer.prepare();
} catch (Exception e) {
LogController.log("Error Log: " + e);
toHomePage();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
public void onCompletion(MediaPlayer mp) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
toHomePage();
}
}, 500);
}
public boolean onError(MediaPlayer mp, int whatError, int extra) {
LogController.log("MediaPlayer Error: " + whatError + " , " + extra);
return false;
}
public boolean onInfo(MediaPlayer mp, int whatInfo, int extra) {
return false;
}
public void onPrepared(MediaPlayer mp) {
videoWidth = mp.getVideoWidth();
videoHeight = mp.getVideoHeight();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
LogController.log("Size: " + metrics.widthPixels + " , " + metrics.heightPixels);
surfaceView.setLayoutParams(new RelativeLayout.LayoutParams(metrics.widthPixels,
metrics.heightPixels));
mp.start();
}
public void onSeekComplete(MediaPlayer mp) {
}
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
}
}