diff --git a/Covid19Shahajjo/app/build.gradle b/Covid19Shahajjo/app/build.gradle
index 3381874..d549940 100644
--- a/Covid19Shahajjo/app/build.gradle
+++ b/Covid19Shahajjo/app/build.gradle
@@ -47,4 +47,6 @@ dependencies {
implementation 'com.google.code.gson:gson:2.4'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.firebase:firebase-analytics:17.2.2'
+ implementation 'com.pierfrancescosoffritti.androidyoutubeplayer:core:10.0.3'
+
}
diff --git a/Covid19Shahajjo/app/src/main/AndroidManifest.xml b/Covid19Shahajjo/app/src/main/AndroidManifest.xml
index be8e1dd..919f0e3 100644
--- a/Covid19Shahajjo/app/src/main/AndroidManifest.xml
+++ b/Covid19Shahajjo/app/src/main/AndroidManifest.xml
@@ -30,6 +30,17 @@
+
+
+
+
+
+
+
diff --git a/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/Covid19StoryActivity.java b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/Covid19StoryActivity.java
new file mode 100644
index 0000000..655f115
--- /dev/null
+++ b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/Covid19StoryActivity.java
@@ -0,0 +1,61 @@
+package com.example.covid19shahajjo.activities;
+
+import android.os.Bundle;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.example.covid19shahajjo.R;
+import com.example.covid19shahajjo.models.YouTubeVideos;
+import com.example.covid19shahajjo.utils.Enums;
+import com.example.covid19shahajjo.utils.SharedStorge;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
+
+
+public class Covid19StoryActivity extends AppCompatActivity {
+
+ private DatabaseReference databaseReference;
+ private RecyclerView storyRecyclerView;
+ private Covid19StoryActivity covid19StoryActivity;
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_covid19_story);
+ covid19StoryActivity=this;
+ setUserPreferableTitle();
+
+
+ storyRecyclerView = (RecyclerView) findViewById(R.id.recyclerview_video);
+ storyRecyclerView.setHasFixedSize(true);
+ storyRecyclerView.setLayoutManager(new LinearLayoutManager(this));
+
+ databaseReference = FirebaseDatabase.getInstance().getReference("video");
+
+ YouTubeVideos youTubeVideos=new YouTubeVideos(covid19StoryActivity,null,null);
+
+
+ youTubeVideos.getYoutubeVideoData(databaseReference,storyRecyclerView);
+
+
+
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ }
+
+ private void setUserPreferableTitle(){
+ Enums.Language language = SharedStorge.getUserLanguage(this);
+ if(language == Enums.Language.BD){
+ String title = getResources().getString(R.string.covid_story_title_bd);
+ setTitle(title);
+ }else{
+ setTitle("Covid-19 Story");
+ }
+ }
+}
diff --git a/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/HomeActivity.java b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/HomeActivity.java
index 6087b39..78b535a 100644
--- a/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/HomeActivity.java
+++ b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/HomeActivity.java
@@ -38,6 +38,8 @@ public class HomeActivity extends AppCompatActivity implements AdapterView.OnIte
private final int STATISTICS_POSITION = 3;
private final int SETTINGS_POSITION = 4;
private final int ABOUT_POSITION = 5;
+ private final int VIDEO_STORY_POSITION = 6;
+
private PermissionChecker permissionChecker;
@@ -117,6 +119,10 @@ else if(position == TEST_CENTER_POSITION){
Intent intent = new Intent(this, TestCenterActivity.class);
startActivity(intent);
}
+ else if(position==VIDEO_STORY_POSITION){
+ Intent intent = new Intent(this, Covid19StoryActivity.class);
+ startActivity(intent);
+ }
}
private void goPageIfConnected(Class> destinationClass){
diff --git a/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/YoutubeFullScreenActivity.java b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/YoutubeFullScreenActivity.java
new file mode 100644
index 0000000..71c6bf8
--- /dev/null
+++ b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/activities/YoutubeFullScreenActivity.java
@@ -0,0 +1,53 @@
+package com.example.covid19shahajjo.activities;
+
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.covid19shahajjo.R;
+import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.PlayerConstants;
+import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer;
+import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener;
+import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView;
+
+public class YoutubeFullScreenActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_youtube_full_screen);
+
+ YouTubePlayerView youTubePlayerView = findViewById(R.id.youtube_player_view);
+ getLifecycle().addObserver(youTubePlayerView);
+
+ youTubePlayerView.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
+ @Override
+ public void onReady(YouTubePlayer youTubePlayer) {
+ super.onReady(youTubePlayer);
+ String url =getIntent().getExtras().getString("url");
+ Float playerCurrentSecondPlayed=getIntent().getExtras().getFloat("playerCurrentSecondPlayed");
+ youTubePlayer.loadVideo(url,playerCurrentSecondPlayed);
+ }
+
+ @Override
+ public void onStateChange(YouTubePlayer youTubePlayer, PlayerConstants.PlayerState state) {
+ super.onStateChange(youTubePlayer, state);
+
+
+ }
+ });
+
+ //full screen listener
+ youTubePlayerView.getPlayerUiController().setFullScreenButtonClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View view) {
+
+ //Destroy activity
+ finish();
+ }
+ });
+ }
+
+}
diff --git a/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/adapters/HomeMenuAdapter.java b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/adapters/HomeMenuAdapter.java
index 755eb84..0fb5317 100644
--- a/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/adapters/HomeMenuAdapter.java
+++ b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/adapters/HomeMenuAdapter.java
@@ -66,6 +66,7 @@ private int getDrawable(int position){
case 3: return R.drawable.ic_statistics;
case 4: return R.drawable.ic_settings;
case 5: return R.drawable.ic_about;
+ case 6: return R.drawable.ic_video_story;
default: return -1;
}
}
diff --git a/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/adapters/VideoAdapter.java b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/adapters/VideoAdapter.java
new file mode 100644
index 0000000..207fcb0
--- /dev/null
+++ b/Covid19Shahajjo/app/src/main/java/com/example/covid19shahajjo/adapters/VideoAdapter.java
@@ -0,0 +1,159 @@
+package com.example.covid19shahajjo.adapters;
+
+import android.content.Intent;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.example.covid19shahajjo.R;
+import com.example.covid19shahajjo.activities.Covid19StoryActivity;
+import com.example.covid19shahajjo.activities.YoutubeFullScreenActivity;
+import com.example.covid19shahajjo.models.YouTubeVideos;
+import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.PlayerConstants;
+import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer;
+import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener;
+import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class VideoAdapter extends RecyclerView.Adapter {
+
+ private Covid19StoryActivity covid19StoryActivity;
+ private ArrayList youTubePlayerArrayList = new ArrayList<>();
+ private RecyclerView storyRecyclerView;
+ private boolean isPlaying=false;
+ private float playerCurrentSecondPlayed=0;
+ ListyouTubeVideosList;
+
+
+ public VideoAdapter(List youTubeVideosList, Covid19StoryActivity covid19StoryActivity, RecyclerView storyRecyclerView) {
+ this.youTubeVideosList = youTubeVideosList;
+ this.covid19StoryActivity=covid19StoryActivity;
+ this.storyRecyclerView=storyRecyclerView;
+ }
+
+ @NonNull
+ @Override
+ public VideoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.video_view,parent,false);
+
+ return new VideoViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull VideoViewHolder holder, int position) {
+
+ holder.tileTextView.setText(youTubeVideosList.get(position).getTitle());
+
+
+ //full screen youtube player listener
+ holder.youTubePlayerView.getPlayerUiController().setFullScreenButtonClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ Intent myIntent = new Intent(covid19StoryActivity, YoutubeFullScreenActivity.class);
+ myIntent.putExtra("url", youTubeVideosList.get(position).getUrl()); //Optional parameters
+ myIntent.putExtra("playerCurrentSecondPlayed", playerCurrentSecondPlayed); //Optional parameters
+ covid19StoryActivity.startActivity(myIntent);
+ }
+ });
+
+
+ holder.youTubePlayerView.addYouTubePlayerListener(new AbstractYouTubePlayerListener(){
+
+
+ @Override
+ public void onReady(YouTubePlayer youTubePlayer) {
+
+ covid19StoryActivity.getLifecycle().addObserver(holder.youTubePlayerView);
+ youTubePlayer.cueVideo(youTubeVideosList.get(position).getUrl(),0);
+ youTubePlayerArrayList.add(youTubePlayer);
+
+
+ //scrolling listener
+ storyRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
+ super.onScrollStateChanged(recyclerView, newState);
+
+ }
+
+ @Override
+ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+ super.onScrolled(recyclerView, dx, dy);
+ if(isPlaying==true) pauseAllPlayer();
+ isPlaying=false;
+
+
+ }
+ });
+
+
+ }
+
+
+
+ @Override
+ public void onStateChange(YouTubePlayer youTubePlayer, PlayerConstants.PlayerState state) {
+
+
+ if(state.toString().equals("PLAYING") || state.toString().equals("BUFFERING") || state.toString().equals("UNKNOWN")){
+ if(isPlaying==true){
+ pauseAllPlayer();
+ youTubePlayer.play();
+ }
+ isPlaying=true;
+
+ }else isPlaying=false;//ENDED,PAUSED,VIDEO_CUED,UNSTARTED
+ }
+
+ @Override
+ public void onCurrentSecond(YouTubePlayer youTubePlayer, float second) {
+ super.onCurrentSecond(youTubePlayer, second);
+ playerCurrentSecondPlayed=second;
+ }
+ });
+
+
+ }
+
+
+
+ @Override
+ public int getItemCount() {
+ return youTubeVideosList.size();
+ }
+
+ private void pauseAllPlayer(){
+ for(int i=0;iyouTubeVideos=new Vector<>();
+
+ String title;
+ String url;
+ private Covid19StoryActivity covid19StoryActivity;
+
+ public YouTubeVideos() {
+ }
+
+ public YouTubeVideos(String title, String url) {
+ this.title=title;
+ this.url=url;
+
+
+ }
+
+ public YouTubeVideos(Covid19StoryActivity covid19StoryActivity, String title, String url) {
+ this.title=title;
+ this.url=url;
+ this.covid19StoryActivity=covid19StoryActivity;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+
+ public void addYoutubeVideoData(DatabaseReference databaseReference,String title,String url){
+
+ String key1="title";
+ String key2="url";
+
+ String id= databaseReference.push().getKey();
+
+ Map map =new HashMap<>();
+ map.put(key1,title);
+ map.put(key2,url);
+
+ databaseReference.child(id).setValue(map);
+
+ }
+
+ public void getYoutubeVideoData(DatabaseReference databaseReference, RecyclerView storyRecyclerView){
+
+
+ databaseReference.addValueEventListener(new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+
+ youTubeVideos.clear();
+
+ for(DataSnapshot youtubeVideo : dataSnapshot.getChildren()){
+ YouTubeVideos tempdata =youtubeVideo.getValue(YouTubeVideos.class);
+
+ youTubeVideos.add(new YouTubeVideos(tempdata.getTitle(),tempdata.getUrl()));
+
+ }
+ //set to recycler adapter
+ VideoAdapter videoAdapter = new VideoAdapter(youTubeVideos,covid19StoryActivity,storyRecyclerView);
+ storyRecyclerView.setAdapter(videoAdapter);
+
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+
+ }
+ });
+ }
+
+ public void deleteYoutubeVideoData(DatabaseReference databaseReference,String title){
+
+ String key1="title";
+
+ Query deleteQuery = databaseReference.orderByChild(key1).equalTo(title);
+
+ deleteQuery.addListenerForSingleValueEvent(new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+
+ for (DataSnapshot deleteData: dataSnapshot.getChildren()) {
+ deleteData.getRef().removeValue();
+ }
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+
+ }
+ });
+ }
+
+ public void updateYoutubeVideoData(DatabaseReference databaseReference,String presentTitle,String updateTitle,String updateUrl){
+
+ String key1="title";
+ String key2="url";
+
+
+ Map map =new HashMap<>();
+ map.put(key1,updateTitle);
+ map.put(key2,updateUrl);
+
+ Query deleteQuery = databaseReference.orderByChild(key1).equalTo(presentTitle);
+
+ deleteQuery.addListenerForSingleValueEvent(new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+
+ for (DataSnapshot updateData: dataSnapshot.getChildren()) {
+ updateData.getRef().setValue(map);
+ }
+
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+
+ }
+ });
+ }
+
+ public void updateYoutubeVideoTitleData(DatabaseReference databaseReference,String presentTitle,String updateTitle){
+
+ String key1="title";
+ String key2="url";
+
+
+
+
+
+ Query deleteQuery = databaseReference.orderByChild(key1).equalTo(presentTitle);
+
+ deleteQuery.addListenerForSingleValueEvent(new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+
+ for (DataSnapshot updateData: dataSnapshot.getChildren()) {
+ updateData.getRef().child(key1).setValue(updateTitle);
+ // mDatabaseRef.child("TABLE_NAME").child("orderStatus").setValue(2);
+ }
+
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+
+ }
+ });
+ }
+
+ public void updateYoutubeVideoUrlData(DatabaseReference databaseReference,String presentTitle,String updateUrl){
+
+ String key1="title";
+ String key2="url";
+
+
+
+
+
+ Query deleteQuery = databaseReference.orderByChild(key1).equalTo(presentTitle);
+
+ deleteQuery.addListenerForSingleValueEvent(new ValueEventListener() {
+ @Override
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+
+ for (DataSnapshot updateData: dataSnapshot.getChildren()) {
+ updateData.getRef().child(key2).setValue(updateUrl);
+ }
+
+ }
+
+ @Override
+ public void onCancelled(@NonNull DatabaseError databaseError) {
+
+ }
+ });
+ }
+
+
+}
diff --git a/Covid19Shahajjo/app/src/main/res/drawable/ic_video_story.xml b/Covid19Shahajjo/app/src/main/res/drawable/ic_video_story.xml
new file mode 100644
index 0000000..fe451a7
--- /dev/null
+++ b/Covid19Shahajjo/app/src/main/res/drawable/ic_video_story.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/Covid19Shahajjo/app/src/main/res/layout/activity_covid19_story.xml b/Covid19Shahajjo/app/src/main/res/layout/activity_covid19_story.xml
new file mode 100644
index 0000000..acf86ec
--- /dev/null
+++ b/Covid19Shahajjo/app/src/main/res/layout/activity_covid19_story.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Covid19Shahajjo/app/src/main/res/layout/activity_youtube_full_screen.xml b/Covid19Shahajjo/app/src/main/res/layout/activity_youtube_full_screen.xml
new file mode 100644
index 0000000..91afd61
--- /dev/null
+++ b/Covid19Shahajjo/app/src/main/res/layout/activity_youtube_full_screen.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Covid19Shahajjo/app/src/main/res/layout/styles.xml b/Covid19Shahajjo/app/src/main/res/layout/styles.xml
new file mode 100644
index 0000000..7f4f6b7
--- /dev/null
+++ b/Covid19Shahajjo/app/src/main/res/layout/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
diff --git a/Covid19Shahajjo/app/src/main/res/layout/video_view.xml b/Covid19Shahajjo/app/src/main/res/layout/video_view.xml
new file mode 100644
index 0000000..1eca8f6
--- /dev/null
+++ b/Covid19Shahajjo/app/src/main/res/layout/video_view.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Covid19Shahajjo/app/src/main/res/values/strings.xml b/Covid19Shahajjo/app/src/main/res/values/strings.xml
index 398de92..71a328b 100644
--- a/Covid19Shahajjo/app/src/main/res/values/strings.xml
+++ b/Covid19Shahajjo/app/src/main/res/values/strings.xml
@@ -12,6 +12,8 @@
পরিসংখ্যান
নিকটস্থ হাসপাতাল
নিকটস্থ সাহায্য নাম্বার
+ ভিডিও সতর্কবার্তা
+
- Nearest Contact Support
- Nearest COVID-19 Hospitals
@@ -19,6 +21,7 @@
- COVID-19 Statistics
- Settings
- About
+ - COVID-19 Story
- নিকটস্থ সাহায্য নাম্বার
@@ -27,6 +30,7 @@
- COVID-19 পরিসংখ্যান
- সেটিংস
- শর্তাবলী
+ - ভিডিও সতর্কবার্তা
diff --git a/Covid19Shahajjo/app/src/main/res/values/styles.xml b/Covid19Shahajjo/app/src/main/res/values/styles.xml
index 5885930..07cdd8e 100644
--- a/Covid19Shahajjo/app/src/main/res/values/styles.xml
+++ b/Covid19Shahajjo/app/src/main/res/values/styles.xml
@@ -8,4 +8,12 @@
- @color/colorAccent
+
+
+
diff --git a/README.md b/README.md
index f4166b5..da6cbf3 100644
--- a/README.md
+++ b/README.md
@@ -31,9 +31,10 @@ We developed this application to provide some emergency contacts and information
* **Support Bengali and English**
-
-
+* **Covid-19 Story**
+
+
diff --git a/images/1.png b/images/1.png
new file mode 100755
index 0000000..c47ed5a
Binary files /dev/null and b/images/1.png differ
diff --git a/images/8.png b/images/8.png
new file mode 100755
index 0000000..19a2708
Binary files /dev/null and b/images/8.png differ