TIF_E41210602/app/src/main/java/com/pkm/parentapps/KontenVideoActivity.java

214 lines
7.7 KiB
Java

package com.pkm.parentapps;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener;
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class KontenVideoActivity extends AppCompatActivity {
SharedPreferences sharedPreferences;
Intent intent;
Button btnLanjut;
private static final long START_TIME_IN_MILLIS = 100000;
TextView tvWaktu, tvDeskripsi, tvJudul, tvIsi;
YouTubePlayerView youTubePlayerView;
private CountDownTimer mCountDownTimer;
private boolean mTimerRunning;
private long mTimeLeftInMillis = START_TIME_IN_MILLIS;
ArrayList<String> judul = new ArrayList<>();
ArrayList<String> video = new ArrayList<>();
ArrayList<String> deskripsi = new ArrayList<>();
ArrayList<String> isi = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_konten_video);
setStatusBar();
init();
getData();
startTimer();
}
private void init() {
tvWaktu = findViewById(R.id.tvWaktu);
tvDeskripsi = findViewById(R.id.tvDeskripsi);
tvJudul = findViewById(R.id.tvJudul);
tvIsi = findViewById(R.id.tvIsi);
youTubePlayerView = findViewById(R.id.youtube_player_view);
getLifecycle().addObserver(youTubePlayerView);
btnLanjut = findViewById(R.id.btnLanjut);
sharedPreferences = getSharedPreferences("UserInfo", MODE_PRIVATE);
intent = getIntent();
}
private void getData() {
String url = getResources().getString(R.string.api_server) + "/konten/" + intent.getStringExtra("idkonten");
String token = sharedPreferences.getString("token", "");
StringRequest request = new StringRequest(Request.Method.GET, url, response -> {
try {
JSONObject object = new JSONObject(response);
if (object.getBoolean("success")) {
JSONArray data = new JSONArray(object.getString("data"));
for (int i = 0; i < data.length(); i++) {
JSONObject item = data.getJSONObject(i);
judul.add(item.getString("judul"));
video.add(item.getString("youtube"));
deskripsi.add(item.getString("deskripsi"));
isi.add(item.getString("isi"));
}
load();
}
} catch (Exception e) {
e.printStackTrace();
}
}, error -> {
error.printStackTrace();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pesan");
builder.setMessage("Terjadi Kesalahan");
builder.setPositiveButton("Ok", null);
builder.show();
}) {
@Override
public Map<String, String> getHeaders() {
Map<String, String> header = new HashMap<>();
header.put("Accept", "application/json");
header.put("Authorization", "Bearer " + token);
return header;
}
};
RequestQueue queue = Volley.newRequestQueue(this);
queue.add(request);
}
private int currentContentIndex = 0;
private void load() {
updateContent(currentContentIndex);
btnLanjut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
currentContentIndex++;
if (currentContentIndex < judul.size()) {
updateContent(currentContentIndex);
}
if (currentContentIndex == judul.size() - 1) {
btnLanjut.setText("Selesai");
btnLanjut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}
});
}
private void updateContent(int index) {
tvJudul.setText(judul.get(index));
tvIsi.setText(isi.get(index));
tvDeskripsi.setText(deskripsi.get(index));
youTubePlayerView.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
@Override
public void onReady(@NonNull YouTubePlayer youTubePlayer) {
String videoId = video.get(index);
System.out.println("Video Id: " + video.get(index));
youTubePlayer.loadVideo(videoId, 0);
}
});
}
private void startTimer() {
mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 1000) {
@Override
public void onTick(long millisUntilFinished) { // 1 detik
mTimeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() { // selesai
mTimerRunning = false;
Toast.makeText(KontenVideoActivity.this, "Tugas Selesai", Toast.LENGTH_SHORT).show();
finish();
}
}.start();
mTimerRunning = true;
}
private void updateCountDownText() {
int minutes = (int) (mTimeLeftInMillis / 1000) / 60; // 1 menit
int seconds = (int) (mTimeLeftInMillis / 1000) % 60; // 1 detik
String timeLeftFormatted = String.format("%02d:%02d", minutes, seconds);
tvWaktu.setText(timeLeftFormatted);
}
@Override
public void onBackPressed() {
Toast.makeText(this, "Tugas Belum Selesai", Toast.LENGTH_SHORT).show();
}
private void setStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
if (Build.VERSION.SDK_INT >= 21) {
setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
}
public static void setWindowFlag(Activity activity, final int bits, boolean on) {
Window window = activity.getWindow();
WindowManager.LayoutParams layoutParams = window.getAttributes();
if (on) {
layoutParams.flags |= bits;
} else {
layoutParams.flags &= ~bits;
}
window.setAttributes(layoutParams);
}
}