package com.aero.control; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.ContextWrapper; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.aero.control.helpers.Android.CirclePageIndicator; import com.aero.control.helpers.ZoomOutPageTransformer; import com.aero.control.helpers.rootHelper; import com.aero.control.sliderFragments.IntroductionFragment; import com.aero.control.sliderFragments.PerAppFragment; import com.aero.control.sliderFragments.SetOnBootFragment; import com.aero.control.sliderFragments.TutorialFragment; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Created by Alexander Christ on 09.09.14. */ public class SplashScreen extends FragmentActivity { private static int NUM_PAGES = 4; public static final String FIRSTRUN_AERO = "firstrun_aero"; private ViewPager mPager; private PagerAdapter mPagerAdapter; private CirclePageIndicator mCircleIndicator; public Button mSkip; private List<android.support.v4.app.Fragment> mFragments = new ArrayList<android.support.v4.app.Fragment>(); private static final rootHelper rootCheck = new rootHelper(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); if(getResources().getBoolean(R.bool.portrait_only)){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } mFragments.clear(); mFragments.add(new IntroductionFragment()); mFragments.add(new PerAppFragment()); mFragments.add(new SetOnBootFragment()); mFragments.add(new TutorialFragment()); ContextWrapper cw = new ContextWrapper(getBaseContext()); File firstrun_aero = new File(cw.getFilesDir() + "/" + FIRSTRUN_AERO); // Check if system has root; if (!rootCheck.isDeviceRooted()) showRootDialog(); // First check if its already done; if (firstrun_aero.exists()) { Intent i = new Intent(this, AeroActivity.class); startActivity(i); // close this activity this.finish(); } // Instantiate a ViewPager and a PagerAdapter. mPager = (ViewPager) findViewById(R.id.pager); mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); mPager.setPageTransformer(true, new ZoomOutPageTransformer()); mPager.setAdapter(mPagerAdapter); mCircleIndicator = (CirclePageIndicator) findViewById(R.id.indicator); mCircleIndicator.setViewPager(mPager); mSkip = (Button) findViewById(R.id.splash_button); initDefaultSkip(); } public void initDefaultSkip() { // Temporarly save the activity; final Activity tmp = (Activity)this; mSkip.setText(R.string.skip_splash); mSkip.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { FileOutputStream fos = tmp.openFileOutput(SplashScreen.FIRSTRUN_AERO, Context.MODE_PRIVATE); fos.write("1".getBytes()); fos.close(); } catch (IOException e) { Log.e("Aero", "Could not save file(s). ", e); } catch (NullPointerException e) { Log.e("Aero", "OpenFileOutput probably was initialized on a null-object.", e); } Intent i = new Intent(tmp, AeroActivity.class); startActivity(i); // close this activity tmp.finish(); } }); } public final void showRootDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); LayoutInflater inflater = this.getLayoutInflater(); View layout = inflater.inflate(R.layout.about_screen, null); TextView aboutText = (TextView) layout.findViewById(R.id.aboutScreen); builder.setTitle(R.string.not_rooted); builder.setIcon(R.drawable.warning); aboutText.setText(getText(R.string.root_required)); builder.setCancelable(false); builder.setView(layout) .setPositiveButton(R.string.got_it, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { finish(); } }); builder.show(); } private class ScreenSlidePagerAdapter extends android.support.v4.app.FragmentStatePagerAdapter { public ScreenSlidePagerAdapter(FragmentManager fm) { super(fm); } // Basic Fragment switcher; @Override public Fragment getItem(int position) { Fragment fragment = null; fragment = mFragments.get(position); return fragment; } @Override public int getCount() { return NUM_PAGES; } } }