Advertisement
ahsai001

rc-android-workshop-myquran-activity-splash

May 26th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.11 KB | None | 0 0
  1. public class SplashScreenActivity extends AppCompatActivity {
  2.     private static final String TAG = "SplashScreenActivity";
  3.     private static int SPLASH_TIME_OUT = 3000;
  4.  
  5.     @BindView(R.id.progressBar)
  6.     ProgressBar progressBar;
  7.  
  8.     @BindView(R.id.textView)
  9.     TextView textView;
  10.     private boolean isDownloading;
  11.  
  12.  
  13.     @Override
  14.     protected void onCreate(Bundle savedInstanceState) {
  15.         super.onCreate(savedInstanceState);
  16.         setContentView(R.layout.activity_splash_screen);
  17.  
  18.         ButterKnife.bind(this);
  19.  
  20.  
  21.         /* Request user permissions in runtime */
  22.         if(ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) !=
  23.                 PackageManager.PERMISSION_GRANTED ||
  24.                 ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
  25.                         PackageManager.PERMISSION_GRANTED ||
  26.                 ActivityCompat.checkSelfPermission(this, Manifest.permission.INTERNET) !=
  27.                         PackageManager.PERMISSION_GRANTED) {
  28.             ActivityCompat.requestPermissions(SplashScreenActivity.this,
  29.                     new String[]{
  30.                             Manifest.permission.READ_EXTERNAL_STORAGE,
  31.                             Manifest.permission.WRITE_EXTERNAL_STORAGE,
  32.                             Manifest.permission.INTERNET
  33.                     },
  34.                     100);
  35.             return;
  36.         }
  37.  
  38.         /* Request user permissions in runtime */
  39.         init();
  40.     }
  41.  
  42.     private void init() {
  43.         final Realm realm = Realm.getDefaultInstance();
  44.         long numberOfSurah = realm.where(Surah.class).count();
  45.  
  46.         if(numberOfSurah < 114) {
  47.             textView.setVisibility(View.VISIBLE);
  48.             textView.setText("Initializing ...");
  49.  
  50.             realm.executeTransaction(new Realm.Transaction() {
  51.                 @Override
  52.                 public void execute(Realm realm) {
  53.                     realm.delete(Surah.class);
  54.                     importSurahFromCSV(realm);
  55.                 }
  56.             });
  57.         }
  58.  
  59.         realm.close();
  60.  
  61.         int imageCount = FileUtil.getImageCount();
  62.  
  63.         if(imageCount < 6839) {
  64.             progressBar.setVisibility(View.VISIBLE);
  65.             progressBar.setMax(100);
  66.             textView.setVisibility(View.VISIBLE);
  67.  
  68.             progressBar.setProgress(0);
  69.             textView.setText("Downloading data ...");
  70.             downloadQuranImages();
  71.         }
  72.         else {
  73.             progressBar.setVisibility(View.GONE);
  74.             textView.setVisibility(View.GONE);
  75.  
  76.             new Handler().postDelayed(new Runnable() {
  77.                 @Override
  78.                 public void run() {
  79.                     gotoNextScreen();
  80.                 }
  81.             }, SPLASH_TIME_OUT);
  82.         }
  83.     }
  84.  
  85.  
  86.     @Override
  87.     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  88.         if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  89.             init();
  90.         } else {
  91.             finish();
  92.         }
  93.  
  94.         return;
  95.     }
  96.  
  97.     @OnClick(R.id.textView)
  98.     public void OnTextViewClick(TextView textView) {
  99.         if(!isDownloading) {
  100.             downloadQuranImages();
  101.         }
  102.     }
  103.  
  104.     private void downloadQuranImages() {
  105.         String serverFilePath = "https://www.fazrilabs.com/quran.zip";
  106.         File file = FileUtil.getTmpFile("images.zip", true);
  107.  
  108.         String localPath = file.getAbsolutePath();
  109.         String unzipPath = FileUtil.getImageDir().getAbsolutePath();
  110.  
  111.         FileDownloadService.DownloadRequest downloadRequest = new FileDownloadService.DownloadRequest(serverFilePath, localPath);
  112.         downloadRequest.setRequiresUnzip(true);
  113.         downloadRequest.setDeleteZipAfterExtract(true);
  114.         downloadRequest.setUnzipAtFilePath(unzipPath);
  115.  
  116.         FileDownloadService.OnDownloadStatusListener listener = new FileDownloadService.OnDownloadStatusListener() {
  117.  
  118.             @Override
  119.             public void onDownloadStarted() {
  120.                 //subscriber.onNext(String.valueOf(0));
  121.                 isDownloading = true;
  122.             }
  123.  
  124.             @Override
  125.             public void onDownloadCompleted(List<String> filenames) {
  126.                 isDownloading = false;
  127.                 progressBar.setVisibility(View.GONE);
  128.                 textView.setVisibility(View.GONE);
  129.                 gotoNextScreen();
  130.             }
  131.  
  132.             @Override
  133.             public void onDownloadFailed() {
  134.                 isDownloading = false;
  135.                 textView.setText("Download failed. Retry");
  136.             }
  137.  
  138.             @Override
  139.             public void onDownloadProgress(int progress) {
  140.                 progressBar.setProgress(progress);
  141.                 textView.setText("Downloading data ... " + progress + "%");
  142.  
  143.                 if(progress == 100) {
  144.                     textView.setText("Please wait, processing data ...");
  145.                 }
  146.             }
  147.         };
  148.  
  149.         FileDownloadService.FileDownloader downloader = FileDownloadService.FileDownloader.getInstance(downloadRequest, listener);
  150.         downloader.download(this);
  151.     }
  152.  
  153.     private void gotoNextScreen() {
  154.         Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class);
  155.         startActivity(intent);
  156.  
  157.         finish();
  158.     }
  159.  
  160.     private void importSurahFromCSV(Realm realm) {
  161.         try {
  162.             InputStreamReader is = new InputStreamReader(getAssets().open("surah.csv"));
  163.             BufferedReader reader = new BufferedReader(is);
  164.             String line;
  165.  
  166.             while ((line = reader.readLine()) != null) {
  167.                 String[] row = line.split(",");
  168.  
  169.                 Surah surah = new Surah();
  170.                 surah.setId(Integer.parseInt(row[0]));
  171.                 surah.setTitle(row[1]);
  172.                 surah.setAyah(Integer.parseInt(row[2]));
  173.  
  174.                 realm.insert(surah);
  175.             }
  176.         }
  177.         catch (IOException exception) {
  178.             Log.e(TAG, exception.toString());
  179.         }
  180.     }
  181.  
  182.     @Override
  183.     public void onBackPressed() {
  184.  
  185.     }
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement