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 +