diff --git a/LangTutor/app/build.gradle b/LangTutor/app/build.gradle
index f1cf146..b563d40 100644
--- a/LangTutor/app/build.gradle
+++ b/LangTutor/app/build.gradle
@@ -22,6 +22,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
+ implementation 'com.android.support:support-v4:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
diff --git a/LangTutor/app/src/main/AndroidManifest.xml b/LangTutor/app/src/main/AndroidManifest.xml
index 772fb46..1d6183a 100644
--- a/LangTutor/app/src/main/AndroidManifest.xml
+++ b/LangTutor/app/src/main/AndroidManifest.xml
@@ -38,77 +38,6 @@
android:label="@string/french"
android:parentActivityName=".MainActivity"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchActivity.java b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchActivity.java
index 6133238..5270e9c 100644
--- a/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchActivity.java
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchActivity.java
@@ -1,18 +1,13 @@
package com.shah.langtutor.French;
import android.content.Intent;
-import android.support.v4.app.NavUtils;
+import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
-import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
-import com.shah.langtutor.Gujarati.GujaratiActivity;
-import com.shah.langtutor.Gujarati.GujaratiAlphabetsActivity;
-import com.shah.langtutor.Gujarati.GujaratiColorsActivity;
-import com.shah.langtutor.Gujarati.GujaratiNumbersActivity;
-import com.shah.langtutor.Gujarati.GujaratiPhrasesActivity;
+import com.shah.langtutor.Marathi.MarathiCategoryAdapter;
import com.shah.langtutor.R;
public class FrenchActivity extends AppCompatActivity {
@@ -22,68 +17,14 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_french);
- //Find View that shows Alphabets Category
- TextView frenchAlphabets = (TextView) findViewById(R.id.french_alphabets);
+ // Find the view pager that will allow the user to swipe between fragments
+ ViewPager viewPager = (ViewPager) findViewById(R.id.french_viewpager);
- //Set a ClickListener on that View
- frenchAlphabets.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link GujaratiAlphabetsActivity}
- Intent fAlphabets = new Intent(FrenchActivity.this, GujaratiAlphabetsActivity.class);
-
- //Start the new Activity;
- startActivity(fAlphabets);
- }
- });
- //Find View that shows Numbers Category
- TextView frenchNumbers = (TextView) findViewById(R.id.french_numbers);
-
- //Set a ClickListener on that View
- frenchNumbers.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link GujaratiNumbersActivity}
- Intent fNumbers = new Intent(FrenchActivity.this, GujaratiNumbersActivity.class);
-
- //Start the new Activity;
- startActivity(fNumbers);
- }
- });
-
- //Find View that shows Colors Category
- TextView frenchColors = (TextView) findViewById(R.id.french_colors);
-
- //Set a ClickListener on that View
- frenchColors.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link GujaratiColorsActivity}
- Intent fColors = new Intent(FrenchActivity.this, GujaratiColorsActivity.class);
-
- //Start the new Activity;
- startActivity(fColors);
- }
- });
-
- //Find View that shows Phrases Category
- TextView frenchPhrases = (TextView) findViewById(R.id.french_phrases);
-
- //Set a ClickListener on that View
- frenchPhrases.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link GujaratiPhrasesActivity}
- Intent fPhrases = new Intent(FrenchActivity.this, GujaratiPhrasesActivity.class);
-
- //Start the new Activity;
- startActivity(fPhrases);
- }
- });
+ // Create an adapter that knows which fragment should be shown on each page
+ FrenchCategoryAdapter adapter = new FrenchCategoryAdapter(getSupportFragmentManager());
+ // Set the adapter onto the view pager
+ viewPager.setAdapter(adapter);
}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchAlphabetsFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchAlphabetsFragment.java
new file mode 100644
index 0000000..07d7833
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchAlphabetsFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.French;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class FrenchAlphabetsFragment extends Fragment {
+
+
+ public FrenchAlphabetsFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchCategoryAdapter.java b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchCategoryAdapter.java
new file mode 100644
index 0000000..afce1d4
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchCategoryAdapter.java
@@ -0,0 +1,47 @@
+package com.shah.langtutor.French;
+
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentPagerAdapter;
+
+
+/**
+ * Created by lenovo on 18-12-2017.
+ */
+
+public class FrenchCategoryAdapter extends FragmentPagerAdapter {
+
+ /**
+ * Create a new {@link FrenchCategoryAdapter} object.
+ *
+ * @param fm is the fragment manager that will keep each fragment's state in the adapter
+ * across swipes.
+ */
+ public FrenchCategoryAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ /**
+ * Return the {@link Fragment} that should be displayed for the given page number.
+ */
+ @Override
+ public Fragment getItem(int position) {
+ if (position == 0) {
+ return new FrenchAlphabetsFragment();
+ } else if (position == 1) {
+ return new FrenchNumbersFragment();
+ } else if (position == 2) {
+ return new FrenchColorsFragment();
+ } else {
+ return new FrenchPhrasesFragment();
+ }
+ }
+
+ /**
+ * Return the total number of pages.
+ */
+ @Override
+ public int getCount() {
+ return 4;
+ }
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchColorsFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchColorsFragment.java
new file mode 100644
index 0000000..be14620
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchColorsFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.French;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class FrenchColorsFragment extends Fragment {
+
+
+ public FrenchColorsFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchNumbersFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchNumbersFragment.java
new file mode 100644
index 0000000..cff1eb7
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchNumbersFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.French;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class FrenchNumbersFragment extends Fragment {
+
+
+ public FrenchNumbersFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchPhrasesFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchPhrasesFragment.java
new file mode 100644
index 0000000..dbaef66
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/French/FrenchPhrasesFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.French;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class FrenchPhrasesFragment extends Fragment {
+
+
+ public FrenchPhrasesFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.phrases_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiActivity.java b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiActivity.java
index 72463ce..375aaf0 100644
--- a/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiActivity.java
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiActivity.java
@@ -3,6 +3,7 @@
import com.shah.langtutor.R;
import android.content.Intent;
import android.support.v4.app.NavUtils;
+import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
@@ -16,67 +17,14 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gujarati);
- //Find View that shows Alphabets Category
- TextView gujaratiAlphabets = (TextView) findViewById(R.id.gujarati_alphabets);
+ // Find the view pager that will allow the user to swipe between fragments
+ ViewPager viewPager = (ViewPager) findViewById(R.id.gujarati_viewpager);
- //Set a ClickListener on that View
- gujaratiAlphabets.setOnClickListener(new View.OnClickListener() {
+ // Create an adapter that knows which fragment should be shown on each page
+ GujaratiCategoryAdapter adapter = new GujaratiCategoryAdapter(getSupportFragmentManager());
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link GujaratiAlphabetsActivity}
- Intent gAlphabets = new Intent(GujaratiActivity.this, GujaratiAlphabetsActivity.class);
-
- //Start the new Activity;
- startActivity(gAlphabets);
- }
- });
- //Find View that shows Numbers Category
- TextView gujaratiNumbers = (TextView) findViewById(R.id.gujarati_numbers);
-
- //Set a ClickListener on that View
- gujaratiNumbers.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link GujaratiNumbersActivity}
- Intent gNumbers = new Intent(GujaratiActivity.this, GujaratiNumbersActivity.class);
-
- //Start the new Activity;
- startActivity(gNumbers);
- }
- });
-
- //Find View that shows Colors Category
- TextView gujaratiColors = (TextView) findViewById(R.id.gujarati_colors);
-
- //Set a ClickListener on that View
- gujaratiColors.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link GujaratiColorsActivity}
- Intent gColors = new Intent(GujaratiActivity.this, GujaratiColorsActivity.class);
-
- //Start the new Activity;
- startActivity(gColors);
- }
- });
-
- //Find View that shows Phrases Category
- TextView gujaratiPhrases = (TextView) findViewById(R.id.gujarati_phrases);
-
- //Set a ClickListener on that View
- gujaratiPhrases.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link GujaratiPhrasesActivity}
- Intent gPhrases = new Intent(GujaratiActivity.this, GujaratiPhrasesActivity.class);
-
- //Start the new Activity;
- startActivity(gPhrases);
- }
- });
+ // Set the adapter onto the view pager
+ viewPager.setAdapter(adapter);
}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiAlphabetsFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiAlphabetsFragment.java
new file mode 100644
index 0000000..d8da998
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiAlphabetsFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.Gujarati;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class GujaratiAlphabetsFragment extends Fragment {
+
+
+ public GujaratiAlphabetsFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiCategoryAdapter.java b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiCategoryAdapter.java
new file mode 100644
index 0000000..6abd4aa
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiCategoryAdapter.java
@@ -0,0 +1,46 @@
+package com.shah.langtutor.Gujarati;
+
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentPagerAdapter;
+
+/**
+ * Created by lenovo on 18-12-2017.
+ */
+
+public class GujaratiCategoryAdapter extends FragmentPagerAdapter {
+
+ /**
+ * Create a new {@link GujaratiCategoryAdapter} object.
+ *
+ * @param fm is the fragment manager that will keep each fragment's state in the adapter
+ * across swipes.
+ */
+ public GujaratiCategoryAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ /**
+ * Return the {@link Fragment} that should be displayed for the given page number.
+ */
+ @Override
+ public Fragment getItem(int position) {
+ if (position == 0) {
+ return new GujaratiAlphabetsFragment();
+ } else if (position == 1) {
+ return new GujaratiNumbersFragment();
+ } else if (position == 2) {
+ return new GujaratiColorsFragment();
+ } else {
+ return new GujaratiPhrasesFragment();
+ }
+ }
+
+ /**
+ * Return the total number of pages.
+ */
+ @Override
+ public int getCount() {
+ return 4;
+ }
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiColorsFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiColorsFragment.java
new file mode 100644
index 0000000..6e00302
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiColorsFragment.java
@@ -0,0 +1,144 @@
+package com.shah.langtutor.Gujarati;
+
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+import com.shah.langtutor.Word;
+import com.shah.langtutor.WordAdapter;
+
+import java.util.ArrayList;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class GujaratiColorsFragment extends Fragment {
+
+ private MediaPlayer mMediaPlayer;
+
+ //Handles Audio Focus while playing a sound file
+ private AudioManager mAudioManager;
+
+ AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener =
+ new AudioManager.OnAudioFocusChangeListener() {
+ @Override
+ public void onAudioFocusChange(int focusChange) {
+ if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
+ focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
+ mMediaPlayer.pause();
+ mMediaPlayer.seekTo(0);
+ } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
+ mMediaPlayer.start();
+ } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
+ releaseMediaPlayer();
+ }
+ }
+ };
+
+ //For checking whether the audio is done playing or not
+ private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ releaseMediaPlayer();
+ }
+ };
+
+ public GujaratiColorsFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+
+ //Create and set uo {@link AudioManager} to request Audio Focus
+ mAudioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
+ //Creating an ArrayList of words
+ final ArrayList words = new ArrayList();
+
+ words.add(new Word(R.string.gujarati_color_red_script, R.string.gujarati_color_red,
+ R.string.english_color_red, R.drawable.color_red, R.raw.gujarati_color_red));
+ words.add(new Word(R.string.gujarati_color_green_script, R.string.gujarati_color_green,
+ R.string.english_color_green, R.drawable.color_green, R.raw.gujarati_color_green));
+ words.add(new Word(R.string.gujarati_color_brown_script, R.string.gujarati_color_brown,
+ R.string.english_color_brown, R.drawable.color_brown, R.raw.gujarati_color_brown));
+ words.add(new Word(R.string.gujarati_color_gray_script, R.string.gujarati_color_gray,
+ R.string.english_color_gray, R.drawable.color_gray, R.raw.gujarati_color_gray));
+ words.add(new Word(R.string.gujarati_color_black_script, R.string.gujarati_color_black,
+ R.string.english_color_black, R.drawable.color_black, R.raw.gujarati_color_black));
+ words.add(new Word(R.string.gujarati_color_white_script, R.string.gujarati_color_white,
+ R.string.english_color_white, R.drawable.color_white, R.raw.gujarati_color_white));
+ words.add(new Word(R.string.gujarati_color_yellow_script, R.string.gujarati_color_yellow,
+ R.string.english_color_yellow, R.drawable.color_mustard_yellow, R.raw.gujarati_color_yellow));
+
+
+ WordAdapter adapter = new WordAdapter(getActivity(), words, R.color.category_colors);
+
+ ListView listView = (ListView) rootView.findViewById(R.id.list);
+ listView.setAdapter(adapter);
+
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+
+ //Get the {@link Word} object at the given position user clicked on
+ Word word = words.get(position);
+
+ //Release the MediaPlayer if exists because we are about to play a new sound
+ releaseMediaPlayer();
+
+ //Request Audio Focus for playback
+ int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener,
+ //Use the music stream
+ AudioManager.STREAM_MUSIC,
+ //Request Permanent Focus
+ AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+
+ if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
+ //Create and set up {@link MediaPlayer} for the audio resource associated with the current word
+ mMediaPlayer = MediaPlayer.create(getActivity(), word.getAudioResourceId());
+ //Start the audio file
+ mMediaPlayer.start();
+ //Set up a listener on the Mediaplayer so that we can stop an release the resources
+ mMediaPlayer.setOnCompletionListener(mCompletionListener);
+
+ }
+ }
+ });
+
+ return rootView;
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ // When the activity is stopped, release the media player resources because we won't
+ // be playing any more sounds.
+ releaseMediaPlayer();;
+ }
+
+ /**
+ * Clean up MediaPlayer by releasing its resources
+ */
+ private void releaseMediaPlayer() {
+
+ if (mMediaPlayer != null) {
+ mMediaPlayer.release();
+ mMediaPlayer = null;
+ //Abandon audio Focus when playback complete
+ mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
+ }
+ }
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiNumbersFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiNumbersFragment.java
new file mode 100644
index 0000000..7054ef7
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiNumbersFragment.java
@@ -0,0 +1,151 @@
+package com.shah.langtutor.Gujarati;
+
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+import com.shah.langtutor.Word;
+import com.shah.langtutor.WordAdapter;
+
+import java.util.ArrayList;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class GujaratiNumbersFragment extends Fragment {
+
+
+ private MediaPlayer mMediaPlayer;
+
+ //Handles Audio Focus while playing a sound file
+ private AudioManager mAudioManager;
+
+ AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener =
+ new AudioManager.OnAudioFocusChangeListener() {
+ @Override
+ public void onAudioFocusChange(int focusChange) {
+ if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
+ focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
+ mMediaPlayer.pause();
+ mMediaPlayer.seekTo(0);
+ } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
+ mMediaPlayer.start();
+ } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
+ releaseMediaPlayer();
+ }
+ }
+ };
+
+ //For checking whether the audio is done playing or not
+ private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ releaseMediaPlayer();
+ }
+ };
+ public GujaratiNumbersFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+
+ //Create and set uo {@link AudioManager} to request Audio Focus
+ mAudioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
+ //Creating an ArrayList of words
+ final ArrayList words = new ArrayList();
+
+ words.add(new Word(R.string.gujarati_number_one_script, R.string.gujarati_number_one,
+ R.string.english_number_one, R.drawable.number_one, R.raw.gujarati_number_one));
+ words.add(new Word(R.string.gujarati_number_two_script, R.string.gujarati_number_two,
+ R.string.english_number_two, R.drawable.number_two, R.raw.gujarati_number_two));
+ words.add(new Word(R.string.gujarati_number_three_script, R.string.gujarati_number_three,
+ R.string.english_number_three, R.drawable.number_three, R.raw.gujarati_number_three));
+ words.add(new Word(R.string.gujarati_number_four_script, R.string.gujarati_number_four,
+ R.string.english_number_four, R.drawable.number_four, R.raw.gujarati_number_four));
+ words.add(new Word(R.string.gujarati_number_five_script, R.string.gujarati_number_five,
+ R.string.english_number_five, R.drawable.number_five, R.raw.gujarati_number_five));
+ words.add(new Word(R.string.gujarati_number_six_script, R.string.gujarati_number_six,
+ R.string.english_number_six, R.drawable.number_six, R.raw.gujarati_number_six));
+ words.add(new Word(R.string.gujarati_number_seven_script, R.string.gujarati_number_seven,
+ R.string.english_number_seven, R.drawable.number_seven, R.raw.gujarati_number_seven));
+ words.add(new Word(R.string.gujarati_number_eight_script, R.string.gujarati_number_eight,
+ R.string.english_number_eight, R.drawable.number_eight, R.raw.gujarati_number_eight));
+ words.add(new Word(R.string.gujarati_number_nine_script, R.string.gujarati_number_nine,
+ R.string.english_number_nine, R.drawable.number_nine, R.raw.gujarati_number_nine));
+ words.add(new Word(R.string.gujarati_number_ten_script, R.string.gujarati_number_ten,
+ R.string.english_number_ten, R.drawable.number_ten, R.raw.gujarati_number_ten));
+
+
+ WordAdapter adapter = new WordAdapter(getActivity(), words, R.color.category_numbers);
+
+ ListView listView = (ListView) rootView.findViewById(R.id.list);
+ listView.setAdapter(adapter);
+
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+
+ //Get the {@link Word} object at the given position user clicked on
+ Word word = words.get(position);
+
+ //Release the MediaPlayer if exists because we are about to play a new sound
+ releaseMediaPlayer();
+
+ //Request Audio Focus for playback
+ int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener,
+ //Use the music stream
+ AudioManager.STREAM_MUSIC,
+ //Request Permanent Focus
+ AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+
+ if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
+ //Create and set up {@link MediaPlayer} for the audio resource associated with the current word
+ mMediaPlayer = MediaPlayer.create(getActivity(), word.getAudioResourceId());
+ //Start the audio file
+ mMediaPlayer.start();
+ //Set up a listener on the Mediaplayer so that we can stop an release the resources
+ mMediaPlayer.setOnCompletionListener(mCompletionListener);
+
+ }
+ }
+ });
+
+ return rootView;
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ // When the activity is stopped, release the media player resources because we won't
+ // be playing any more sounds.
+ releaseMediaPlayer();
+ }
+
+ /**
+ * Clean up MediaPlayer by releasing its resources
+ */
+ private void releaseMediaPlayer() {
+
+ if (mMediaPlayer != null) {
+ mMediaPlayer.release();
+ mMediaPlayer = null;
+ //Abandon audio Focus when playback complete
+ mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
+ }
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiPhrasesFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiPhrasesFragment.java
new file mode 100644
index 0000000..b2e5e1e
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Gujarati/GujaratiPhrasesFragment.java
@@ -0,0 +1,151 @@
+package com.shah.langtutor.Gujarati;
+
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.shah.langtutor.PhraseAdapter;
+import com.shah.langtutor.R;
+import com.shah.langtutor.Word;
+
+import java.util.ArrayList;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class GujaratiPhrasesFragment extends Fragment {
+
+ private MediaPlayer mMediaPlayer;
+
+ //Handles Audio Focus while playing a sound file
+ private AudioManager mAudioManager;
+
+ AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener =
+ new AudioManager.OnAudioFocusChangeListener() {
+ @Override
+ public void onAudioFocusChange(int focusChange) {
+ if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
+ focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
+ mMediaPlayer.pause();
+ mMediaPlayer.seekTo(0);
+ } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
+ mMediaPlayer.start();
+ } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
+ releaseMediaPlayer();
+ }
+ }
+ };
+
+ //For checking whether the audio is done playing or not
+ private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ releaseMediaPlayer();
+ }
+ };
+
+ public GujaratiPhrasesFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+
+ //Create and set uo {@link AudioManager} to request Audio Focus
+ mAudioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
+ //Creating an ArrayList of words
+ final ArrayList words = new ArrayList();
+
+ words.add(new Word(R.string.gujarati_phrases_one_script, R.string.gujarati_phrases_one,
+ R.string.english_phrases_one, R.raw.gujarati_phrases_one,true));
+ words.add(new Word(R.string.gujarati_phrases_two_script, R.string.gujarati_phrases_two,
+ R.string.english_phrases_two, R.raw.gujarati_phrases_two,true));
+ words.add(new Word(R.string.gujarati_phrases_three_script, R.string.gujarati_phrases_three,
+ R.string.english_phrases_three, R.raw.gujarati_phrases_three,true));
+ words.add(new Word(R.string.gujarati_phrases_four_script, R.string.gujarati_phrases_four,
+ R.string.english_phrases_four, R.raw.gujarati_phrases_four,true));
+ words.add(new Word(R.string.gujarati_phrases_five_script, R.string.gujarati_phrases_five,
+ R.string.english_phrases_five, R.raw.gujarati_phrases_five,true));
+ words.add(new Word(R.string.gujarati_phrases_six_script, R.string.gujarati_phrases_six,
+ R.string.english_phrases_six, R.raw.gujarati_phrases_six,true));
+ words.add(new Word(R.string.gujarati_phrases_seven_script, R.string.gujarati_phrases_seven,
+ R.string.english_phrases_seven, R.raw.gujarati_phrases_seven,true));
+ words.add(new Word(R.string.gujarati_phrases_eight_script, R.string.gujarati_phrases_eight,
+ R.string.english_phrases_eight, R.raw.gujarati_phrases_eight,true));
+ words.add(new Word(R.string.gujarati_phrases_nine_script, R.string.gujarati_phrases_nine,
+ R.string.english_phrases_nine, R.raw.gujarati_phrases_nine,true));
+ words.add(new Word(R.string.gujarati_phrases_ten_script, R.string.gujarati_phrases_ten,
+ R.string.english_phrases_ten, R.raw.gujarati_phrases_ten,true));
+
+
+ PhraseAdapter adapter = new PhraseAdapter(getActivity(), words, R.color.category_phrases);
+
+ ListView listView = (ListView) rootView.findViewById(R.id.list);
+ listView.setAdapter(adapter);
+
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+
+ //Get the {@link Word} object at the given position user clicked on
+ Word word = words.get(position);
+
+ //Release the MediaPlayer if exists because we are about to play a new sound
+ releaseMediaPlayer();
+
+ //Request Audio Focus for playback
+ int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener,
+ //Use the music stream
+ AudioManager.STREAM_MUSIC,
+ //Request Permanent Focus
+ AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+
+ if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
+ //Create and set up {@link MediaPlayer} for the audio resource associated with the current word
+ mMediaPlayer = MediaPlayer.create(getActivity(), word.getAudioResourceId());
+ //Start the audio file
+ mMediaPlayer.start();
+ //Set up a listener on the Mediaplayer so that we can stop an release the resources
+ mMediaPlayer.setOnCompletionListener(mCompletionListener);
+
+ }
+ }
+ });
+ return rootView;
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ // When the activity is stopped, release the media player resources because we won't
+ // be playing any more sounds.
+ releaseMediaPlayer();
+ }
+
+ /**
+ * Clean up MediaPlayer by releasing its resources
+ */
+ private void releaseMediaPlayer() {
+
+ if (mMediaPlayer != null) {
+ mMediaPlayer.release();
+ mMediaPlayer = null;
+ //Abandon audio Focus when playback complete
+ mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
+ }
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiActivity.java b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiActivity.java
index e0ad58e..1471b3b 100644
--- a/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiActivity.java
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiActivity.java
@@ -1,8 +1,10 @@
package com.shah.langtutor.HIndi;
+import com.shah.langtutor.Gujarati.GujaratiCategoryAdapter;
import com.shah.langtutor.R;
import android.content.Intent;
import android.os.Bundle;
+import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.view.View;
@@ -16,68 +18,14 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hindi);
- //Find View that shows Alphabets Category
- TextView hindiAlphabets = (TextView) findViewById(R.id.hindi_alphabets);
+ // Find the view pager that will allow the user to swipe between fragments
+ ViewPager viewPager = (ViewPager) findViewById(R.id.hindi_viewpager);
- //Set a ClickListener on that View
- hindiAlphabets.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link HindiAlphabetsActivity}
- Intent hAlphabets = new Intent(HindiActivity.this, HindiAlphabetsActivity.class);
-
- //Start the new Activity;
- startActivity(hAlphabets);
- }
- });
- //Find View that shows Numbers Category
- TextView hindiNumbers = (TextView) findViewById(R.id.hindi_numbers);
-
- //Set a ClickListener on that View
- hindiNumbers.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link HindiNumbersActivity}
- Intent hNumbers = new Intent(HindiActivity.this, HindiNumbersActivity.class);
-
- //Start the new Activity;
- startActivity(hNumbers);
- }
- });
-
- //Find View that shows Colors Category
- TextView hindiColors = (TextView) findViewById(R.id.hindi_colors);
-
- //Set a ClickListener on that View
- hindiColors.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link HindiColorsActivity}
- Intent hColors = new Intent(HindiActivity.this, HindiColorsActivity.class);
-
- //Start the new Activity;
- startActivity(hColors);
- }
- });
-
- //Find View that shows Phrases Category
- TextView hindiPhrases = (TextView) findViewById(R.id.hindi_phrases);
-
- //Set a ClickListener on that View
- hindiPhrases.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link HindiPhrasesActivity}
- Intent hPhrases = new Intent(HindiActivity.this, HindiPhrasesActivity.class);
-
- //Start the new Activity;
- startActivity(hPhrases);
- }
- });
+ // Create an adapter that knows which fragment should be shown on each page
+ HindiCategoryAdapter adapter = new HindiCategoryAdapter(getSupportFragmentManager());
+ // Set the adapter onto the view pager
+ viewPager.setAdapter(adapter);
}
}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiAlphabetsFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiAlphabetsFragment.java
new file mode 100644
index 0000000..552d0d9
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiAlphabetsFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.HIndi;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class HindiAlphabetsFragment extends Fragment {
+
+
+ public HindiAlphabetsFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiCategoryAdapter.java b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiCategoryAdapter.java
new file mode 100644
index 0000000..08705b3
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiCategoryAdapter.java
@@ -0,0 +1,48 @@
+package com.shah.langtutor.HIndi;
+
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentPagerAdapter;
+
+
+/**
+ * Created by lenovo on 18-12-2017.
+ */
+
+public class HindiCategoryAdapter extends FragmentPagerAdapter {
+
+ /**
+ * Create a new {@link HindiCategoryAdapter} object.
+ *
+ * @param fm is the fragment manager that will keep each fragment's state in the adapter
+ * across swipes.
+ */
+ public HindiCategoryAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ /**
+ * Return the {@link Fragment} that should be displayed for the given page number.
+ */
+ @Override
+ public Fragment getItem(int position) {
+ if (position == 0) {
+ return new HindiAlphabetsFragment();
+ } else if (position == 1) {
+ return new HindiNumbersFragment();
+ } else if (position == 2) {
+ return new HindiColorsFragment();
+ } else {
+ return new HindiPhrasesFragment();
+ }
+ }
+
+ /**
+ * Return the total number of pages.
+ */
+ @Override
+ public int getCount() {
+ return 4;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiColorsFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiColorsFragment.java
new file mode 100644
index 0000000..24f7fdd
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiColorsFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.HIndi;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class HindiColorsFragment extends Fragment {
+
+
+ public HindiColorsFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiNumbersFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiNumbersFragment.java
new file mode 100644
index 0000000..0af8fb4
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiNumbersFragment.java
@@ -0,0 +1,154 @@
+package com.shah.langtutor.HIndi;
+
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+import com.shah.langtutor.Word;
+import com.shah.langtutor.WordAdapter;
+
+import java.util.ArrayList;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class HindiNumbersFragment extends Fragment {
+
+ private MediaPlayer mMediaPlayer;
+
+ //Handles Audio Focus while playing a sound file
+ private AudioManager mAudioManager;
+
+ AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener =
+ new AudioManager.OnAudioFocusChangeListener() {
+ @Override
+ public void onAudioFocusChange(int focusChange) {
+ if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
+ focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK){
+ mMediaPlayer.pause();
+ mMediaPlayer.seekTo(0);
+ }
+ else if (focusChange == AudioManager.AUDIOFOCUS_GAIN){
+ mMediaPlayer.start();
+ }
+ else if(focusChange == AudioManager.AUDIOFOCUS_LOSS){
+ releaseMediaPlayer();
+ }
+ }
+ };
+
+ //For checking whether the audio is done playing or not
+ private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ releaseMediaPlayer();
+ }
+ };
+
+ public HindiNumbersFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+
+ //Create and set uo {@link AudioManager} to request Audio Focus
+ mAudioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
+
+ //Creating an ArrayList of words
+ final ArrayList words = new ArrayList();
+
+ words.add(new Word(R.string.hindi_number_one_script,R.string.hindi_number_one,
+ R.string.english_number_one,R.drawable.number_one));
+ words.add(new Word(R.string.hindi_number_two_script,R.string.hindi_number_two,
+ R.string.english_number_two,R.drawable.number_two));
+ words.add(new Word(R.string.hindi_number_three_script,R.string.hindi_number_three,
+ R.string.english_number_three,R.drawable.number_three));
+ words.add(new Word(R.string.hindi_number_four_script,R.string.hindi_number_four,
+ R.string.english_number_four,R.drawable.number_four));
+ words.add(new Word(R.string.hindi_number_five_script,R.string.hindi_number_five,
+ R.string.english_number_five,R.drawable.number_five));
+ words.add(new Word(R.string.hindi_number_six_script,R.string.hindi_number_six,
+ R.string.english_number_six,R.drawable.number_six));
+ words.add(new Word(R.string.hindi_number_seven_script,R.string.hindi_number_seven,
+ R.string.english_number_seven,R.drawable.number_seven));
+ words.add(new Word(R.string.hindi_number_eight_script,R.string.hindi_number_eight,
+ R.string.english_number_eight,R.drawable.number_eight));
+ words.add(new Word(R.string.hindi_number_nine_script,R.string.hindi_number_nine,
+ R.string.english_number_nine,R.drawable.number_nine));
+ words.add(new Word(R.string.hindi_number_ten_script,R.string.hindi_number_ten,
+ R.string.english_number_ten,R.drawable.number_ten));
+
+ WordAdapter adapter = new WordAdapter(getActivity(),words,R.color.category_numbers);
+
+ ListView listView = (ListView)rootView.findViewById(R.id.list);
+
+ listView.setAdapter(adapter);
+
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+
+ //Get the {@link Word} object at the given position user clicked on
+ Word word = words.get(position);
+
+ //Release the MediaPlayer if exists because we are about to play a new sound
+ releaseMediaPlayer();
+
+ //Request Audio Focus for playback
+ int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener,
+ //Use the music stream
+ AudioManager.STREAM_MUSIC,
+ //Request Permanent Focus
+ AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+
+ if(result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
+ //Create and set up {@link MediaPlayer} for the audio resource associated with the current word
+ mMediaPlayer = MediaPlayer.create(getActivity(), word.getAudioResourceId());
+ //Start the audio file
+ mMediaPlayer.start();
+ //Set up a listener on the Mediaplayer so that we can stop an release the resources
+ mMediaPlayer.setOnCompletionListener(mCompletionListener);
+
+ }
+ }
+ });
+
+ return rootView;
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ // When the activity is stopped, release the media player resources because we won't
+ // be playing any more sounds.
+ releaseMediaPlayer();
+ }
+
+ /**
+ * Clean up MediaPlayer by releasing its resources
+ */
+ private void releaseMediaPlayer(){
+
+ if(mMediaPlayer != null){
+ mMediaPlayer.release();
+ mMediaPlayer = null;
+ //Abandon audio Focus when playback complete
+ mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
+ }
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiPhrasesFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiPhrasesFragment.java
new file mode 100644
index 0000000..5e06958
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/HIndi/HindiPhrasesFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.HIndi;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class HindiPhrasesFragment extends Fragment {
+
+
+ public HindiPhrasesFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.phrases_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiActivity.java b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiActivity.java
index e9bf034..e283fa8 100644
--- a/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiActivity.java
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiActivity.java
@@ -1,8 +1,10 @@
package com.shah.langtutor.Marathi;
+import com.shah.langtutor.HIndi.HindiCategoryAdapter;
import com.shah.langtutor.R;
import android.content.Intent;
import android.support.v4.app.NavUtils;
+import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
@@ -16,67 +18,14 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_marathi);
- //Find View that shows Alphabets Category
- TextView marathiAlphabets = (TextView) findViewById(R.id.marathi_alphabets);
+ // Find the view pager that will allow the user to swipe between fragments
+ ViewPager viewPager = (ViewPager) findViewById(R.id.marathi_viewpager);
- //Set a ClickListener on that View
- marathiAlphabets.setOnClickListener(new View.OnClickListener() {
+ // Create an adapter that knows which fragment should be shown on each page
+ MarathiCategoryAdapter adapter = new MarathiCategoryAdapter(getSupportFragmentManager());
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link MarathiAlphabetsActivity}
- Intent mAlphabets = new Intent(MarathiActivity.this, MarathiAlphabetsActivity.class);
-
- //Start the new Activity;
- startActivity(mAlphabets);
- }
- });
- //Find View that shows Numbers Category
- TextView marathiNumbers = (TextView) findViewById(R.id.marathi_numbers);
-
- //Set a ClickListener on that View
- marathiNumbers.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link MarathiNumbersActivity}
- Intent mNumbers = new Intent(MarathiActivity.this, MarathiNumbersActivity.class);
-
- //Start the new Activity;
- startActivity(mNumbers);
- }
- });
-
- //Find View that shows Colors Category
- TextView marathiColors = (TextView) findViewById(R.id.marathi_colors);
-
- //Set a ClickListener on that View
- marathiColors.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link MarathiColorsActivity}
- Intent mColors = new Intent(MarathiActivity.this, MarathiColorsActivity.class);
-
- //Start the new Activity;
- startActivity(mColors);
- }
- });
-
- //Find View that shows Phrases Category
- TextView marathiPhrases = (TextView) findViewById(R.id.marathi_phrases);
-
- //Set a ClickListener on that View
- marathiPhrases.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View view) {
- //Creates new Intent to open {@link MarathiPhrasesActivity}
- Intent mPhrases = new Intent(MarathiActivity.this, MarathiPhrasesActivity.class);
-
- //Start the new Activity;
- startActivity(mPhrases);
- }
- });
+ // Set the adapter onto the view pager
+ viewPager.setAdapter(adapter);
}
}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiAlphabetsFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiAlphabetsFragment.java
new file mode 100644
index 0000000..ca98e23
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiAlphabetsFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.Marathi;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class MarathiAlphabetsFragment extends Fragment {
+
+
+ public MarathiAlphabetsFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiCategoryAdapter.java b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiCategoryAdapter.java
new file mode 100644
index 0000000..8c771db
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiCategoryAdapter.java
@@ -0,0 +1,47 @@
+package com.shah.langtutor.Marathi;
+
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentPagerAdapter;
+
+
+/**
+ * Created by lenovo on 18-12-2017.
+ */
+
+public class MarathiCategoryAdapter extends FragmentPagerAdapter {
+ /**
+ * Create a new {@link MarathiCategoryAdapter} object.
+ *
+ * @param fm is the fragment manager that will keep each fragment's state in the adapter
+ * across swipes.
+ */
+ public MarathiCategoryAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ /**
+ * Return the {@link Fragment} that should be displayed for the given page number.
+ */
+ @Override
+ public Fragment getItem(int position) {
+ if (position == 0) {
+ return new MarathiAlphabetsFragment();
+ } else if (position == 1) {
+ return new MarathiNumbersFragment();
+ } else if (position == 2) {
+ return new MarathiColorsFragment();
+ } else {
+ return new MarathiPhrasesFragment();
+ }
+ }
+
+ /**
+ * Return the total number of pages.
+ */
+ @Override
+ public int getCount() {
+ return 4;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiColorsFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiColorsFragment.java
new file mode 100644
index 0000000..cf6a33f
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiColorsFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.Marathi;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class MarathiColorsFragment extends Fragment {
+
+
+ public MarathiColorsFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiNumbersFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiNumbersFragment.java
new file mode 100644
index 0000000..e904515
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiNumbersFragment.java
@@ -0,0 +1,154 @@
+package com.shah.langtutor.Marathi;
+
+
+import android.content.Context;
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+import com.shah.langtutor.Word;
+import com.shah.langtutor.WordAdapter;
+
+import java.util.ArrayList;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class MarathiNumbersFragment extends Fragment {
+
+ private MediaPlayer mMediaPlayer;
+
+ //Handles Audio Focus while playing a sound file
+ private AudioManager mAudioManager;
+
+ AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener =
+ new AudioManager.OnAudioFocusChangeListener() {
+ @Override
+ public void onAudioFocusChange(int focusChange) {
+ if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT ||
+ focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK){
+ mMediaPlayer.pause();
+ mMediaPlayer.seekTo(0);
+ }
+ else if (focusChange == AudioManager.AUDIOFOCUS_GAIN){
+ mMediaPlayer.start();
+ }
+ else if(focusChange == AudioManager.AUDIOFOCUS_LOSS){
+ releaseMediaPlayer();
+ }
+ }
+ };
+
+ //For checking whether the audio is done playing or not
+ private MediaPlayer.OnCompletionListener mCompletionListener = new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ releaseMediaPlayer();
+ }
+ };
+
+
+ public MarathiNumbersFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+
+ View rootView = inflater.inflate(R.layout.words_list, container,false);
+
+ //Create and set uo {@link AudioManager} to request Audio Focus
+ mAudioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
+
+ //Creating an ArrayList of words
+ final ArrayList words = new ArrayList();
+
+ words.add(new Word(R.string.marathi_number_one_script,R.string.marathi_number_one,
+ R.string.english_number_one,R.drawable.number_one));
+ words.add(new Word(R.string.marathi_number_two_script,R.string.marathi_number_two,
+ R.string.english_number_two,R.drawable.number_two));
+ words.add(new Word(R.string.marathi_number_three_script,R.string.marathi_number_three,
+ R.string.english_number_three,R.drawable.number_three));
+ words.add(new Word(R.string.marathi_number_four_script,R.string.marathi_number_four,
+ R.string.english_number_four,R.drawable.number_four));
+ words.add(new Word(R.string.marathi_number_five_script,R.string.marathi_number_five,
+ R.string.english_number_five,R.drawable.number_five));
+ words.add(new Word(R.string.marathi_number_six_script,R.string.marathi_number_six,
+ R.string.english_number_six,R.drawable.number_six));
+ words.add(new Word(R.string.marathi_number_seven_script,R.string.marathi_number_seven,
+ R.string.english_number_seven,R.drawable.number_seven));
+ words.add(new Word(R.string.marathi_number_eight_script,R.string.marathi_number_eight,
+ R.string.english_number_eight,R.drawable.number_eight));
+ words.add(new Word(R.string.marathi_number_nine_script,R.string.marathi_number_nine,
+ R.string.english_number_nine,R.drawable.number_nine));
+ words.add(new Word(R.string.marathi_number_two_script,R.string.marathi_number_ten,
+ R.string.english_number_ten,R.drawable.number_ten));
+
+ WordAdapter adapter = new WordAdapter(getActivity(),words,R.color.category_numbers);
+
+ ListView listView = (ListView)rootView.findViewById(R.id.list);
+
+ listView.setAdapter(adapter);
+
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+
+ //Get the {@link Word} object at the given position user clicked on
+ Word word = words.get(position);
+
+ //Release the MediaPlayer if exists because we are about to play a new sound
+ releaseMediaPlayer();
+
+ //Request Audio Focus for playback
+ int result = mAudioManager.requestAudioFocus(mOnAudioFocusChangeListener,
+ //Use the music stream
+ AudioManager.STREAM_MUSIC,
+ //Request Permanent Focus
+ AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+
+ if(result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
+ //Create and set up {@link MediaPlayer} for the audio resource associated with the current word
+ mMediaPlayer = MediaPlayer.create(getActivity(), word.getAudioResourceId());
+ //Start the audio file
+ mMediaPlayer.start();
+ //Set up a listener on the Mediaplayer so that we can stop an release the resources
+ mMediaPlayer.setOnCompletionListener(mCompletionListener);
+
+ }
+ }
+ });
+
+ return rootView;
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ releaseMediaPlayer();
+ }
+
+ /**
+ * Clean up MediaPlayer by releasing its resources
+ */
+ private void releaseMediaPlayer(){
+
+ if(mMediaPlayer != null){
+ mMediaPlayer.release();
+ mMediaPlayer = null;
+ //Abandon audio Focus when playback complete
+ mAudioManager.abandonAudioFocus(mOnAudioFocusChangeListener);
+ }
+ }
+
+}
diff --git a/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiPhrasesFragment.java b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiPhrasesFragment.java
new file mode 100644
index 0000000..938ac0c
--- /dev/null
+++ b/LangTutor/app/src/main/java/com/shah/langtutor/Marathi/MarathiPhrasesFragment.java
@@ -0,0 +1,31 @@
+package com.shah.langtutor.Marathi;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.shah.langtutor.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class MarathiPhrasesFragment extends Fragment {
+
+
+ public MarathiPhrasesFragment() {
+ // Required empty public constructor
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.phrases_list, container,false);
+ return rootView;
+ }
+
+}
diff --git a/LangTutor/app/src/main/res/layout/activity_french.xml b/LangTutor/app/src/main/res/layout/activity_french.xml
index b2ff3fc..5ab7558 100644
--- a/LangTutor/app/src/main/res/layout/activity_french.xml
+++ b/LangTutor/app/src/main/res/layout/activity_french.xml
@@ -1,75 +1,14 @@
-
-
+ android:layout_height="match_parent"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/LangTutor/app/src/main/res/layout/activity_gujarati.xml b/LangTutor/app/src/main/res/layout/activity_gujarati.xml
index c04477a..ec390b5 100644
--- a/LangTutor/app/src/main/res/layout/activity_gujarati.xml
+++ b/LangTutor/app/src/main/res/layout/activity_gujarati.xml
@@ -1,75 +1,13 @@
-
-
+ android:layout_height="match_parent"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/LangTutor/app/src/main/res/layout/activity_hindi.xml b/LangTutor/app/src/main/res/layout/activity_hindi.xml
index adb438e..a5798db 100644
--- a/LangTutor/app/src/main/res/layout/activity_hindi.xml
+++ b/LangTutor/app/src/main/res/layout/activity_hindi.xml
@@ -1,75 +1,14 @@
-
-
+ android:layout_height="match_parent"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/LangTutor/app/src/main/res/layout/activity_marathi.xml b/LangTutor/app/src/main/res/layout/activity_marathi.xml
index d17c705..aab7de7 100644
--- a/LangTutor/app/src/main/res/layout/activity_marathi.xml
+++ b/LangTutor/app/src/main/res/layout/activity_marathi.xml
@@ -1,76 +1,14 @@
-
-
+ android:layout_height="match_parent"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/LangTutor/app/src/main/res/values/strings.xml b/LangTutor/app/src/main/res/values/strings.xml
index 013c012..9f3cd78 100644
--- a/LangTutor/app/src/main/res/values/strings.xml
+++ b/LangTutor/app/src/main/res/values/strings.xml
@@ -34,7 +34,7 @@
Black
White
Yellow
-
+
Where are you going?
What is your name?
@@ -163,4 +163,7 @@
नऊ
दहा
+
+ Hello blank fragment
+