Back to project page android-project.
The source code is released under:
GNU General Public License
If you think the Android project android-project listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package pl.wroc.pwr.patryk; // ww w. jav a2 s .c o m import java.util.EventListener; import java.util.List; import java.util.Locale; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.app.ListFragment; import android.content.Context; import android.content.Intent; import android.location.LocationManager; import android.os.Bundle; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements ActionBar.TabListener { /** * The {@link android.support.v4.view.PagerAdapter} that will provide * fragments for each of the sections. We use a {@link FragmentPagerAdapter} * derivative, which will keep every loaded fragment in memory. If this * becomes too memory intensive, it may be best to switch to a * {@link android.support.v13.app.FragmentStatePagerAdapter}. */ SectionsPagerAdapter mSectionsPagerAdapter; /** * The {@link ViewPager} that will host the section contents. */ ViewPager mViewPager; protected static final int SECTION_MAIN = 1; protected static final int SECTION_DB_TABLE = 2; protected LocationManager locationManger; protected MyLocationListener locationListener; private CoordinatesDataSource coordinates_data_source; protected MyArrayAdapter adapter; //protected List<EventListener> eventListenerList; protected RunningListenerImpl listener; protected Context context; public static final int LOCATION_SETTINGS_REQUEST_CODE = 768; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); coordinates_data_source = new CoordinatesDataSource(getApplicationContext()); coordinates_data_source.open(); List<Coordinate> values = coordinates_data_source.getAllCoordinates(); adapter = new MyArrayAdapter(getApplicationContext(), values); //setListAdapter(adapter); // Set up the action bar. final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // Create the adapter that will return a fragment for each of the three // primary sections of the activity. mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager(), this); // Set up the ViewPager with the sections adapter. mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); // When swiping between different sections, select the corresponding tab. // We can also use ActionBar.Tab#select() to do this if we have a reference to the Tab. mViewPager .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); } }); // For each of the sections in the app, add a tab to the action bar. for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { // Create a tab with text corresponding to the page title defined by the adapter. // Also specify this Activity object, which implements the TabListener // interface, as the callback (listener) for when this tab is selected. actionBar.addTab(actionBar.newTab() .setText(mSectionsPagerAdapter.getPageTitle(i)) .setTabListener(this)); } locationListener = new MyLocationListener( this, getApplicationContext(), coordinates_data_source); locationManger = (LocationManager) getSystemService(Context.LOCATION_SERVICE); /* eventListenerList = new ArrayList<EventListener>(); RunningListenerImpl listener = new RunningListenerImpl(this); this.addEventListener(listener);*/ RunningListenerImpl listener = new RunningListenerImpl(this); this.setListener(listener); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { // When the given tab is selected, switch to the corresponding page in // the ViewPager. mViewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override protected void onPause() { super.onPause(); coordinates_data_source.close(); } @Override protected void onResume() { super.onResume(); coordinates_data_source.open(); } public MyArrayAdapter getMyListAdapter(){ return adapter; } /* public void addEventListener(EventListener listener){ eventListenerList.add(listener); } public void removeEventListener(EventListener listener){ eventListenerList.remove(listener); }*/ public void setListener(EventListener listener){ this.listener = (RunningListenerImpl) listener; } public void clear(){ adapter.clear(); coordinates_data_source.deleteAll(); Toast.makeText(getApplicationContext(), "Deleted all coordinate points", Toast.LENGTH_SHORT).show(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.v("MYAPP", "requestCode: " + requestCode); Log.v("MYAPP", "resultCode: " + resultCode); if(requestCode == MainActivity.LOCATION_SETTINGS_REQUEST_CODE) { /* String provider = Settings.Secure.getString( activity.getApplicationContext().getContentResolver(), Settings.Secure.LOCATION_MODE);*/ boolean isLocationProviderEnabled = locationManger.isProviderEnabled( LocationManager.GPS_PROVIDER); Log.v("MYAPP", "isLocationProviderEnabled: " + isLocationProviderEnabled); if(isLocationProviderEnabled){ listener.onRunningChange(true); } } } /** * A {@link FragmentPagerAdapter} that returns a fragment corresponding to * one of the sections/tabs/pages. */ public class SectionsPagerAdapter extends FragmentPagerAdapter { private MainActivity activity; public SectionsPagerAdapter(FragmentManager fm, MainActivity activity) { super(fm); this.activity = activity; } @Override public Fragment getItem(int position) { // getItem is called to instantiate the fragment for the given page. // Return a PlaceholderFragment (defined as a static inner class below). Fragment toReturn = null; switch (position) { case 0: toReturn = PlaceholderFragment.newInstance(position + 1, activity); break; case 1: toReturn = MyListFragment.newInstance(position + 1, activity); ((MyListFragment) toReturn).setListAdapter(adapter); default: break; } return toReturn; } @Override public int getCount() { // Show 2 total pages. return 2; } @Override public CharSequence getPageTitle(int position) { Locale l = Locale.getDefault(); switch (position) { case 0: return getString(R.string.title_main).toUpperCase(l); case 1: return getString(R.string.title_table_points).toUpperCase(l); } return null; } } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { /** * The fragment argument representing the section number for this fragment. */ private static final String ARG_SECTION_NUMBER = "section_number"; private MainActivity activity; /** * Returns a new instance of this fragment for the given section number. */ public static PlaceholderFragment newInstance(int sectionNumber, MainActivity activity) { PlaceholderFragment fragment = new PlaceholderFragment(); fragment.activity = activity; Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; } public PlaceholderFragment() { } @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { int current_section = getArguments().getInt(ARG_SECTION_NUMBER); int current_layout; switch (current_section) { case SECTION_MAIN: current_layout = R.layout.fragment_main; break; case SECTION_DB_TABLE: current_layout = R.layout.fragment_table_points; break; default: current_layout = R.layout.fragment_main; break; } View rootView = inflater.inflate(current_layout, container, false); return rootView; } /* (non-Javadoc) * @see android.app.Fragment#onActivityCreated(android.os.Bundle) */ @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Button buttonClear = (Button) getActivity().findViewById(R.id.button_clear); buttonClear.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { activity.clear(); } }); Button buttonStart = (Button) getActivity().findViewById(R.id.button_start); buttonStart.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { activity.locationManger.requestLocationUpdates( LocationManager.GPS_PROVIDER, 500, 1, activity.locationListener); activity.listener.onRunningChange(true); } }); Button buttonStop = (Button) getActivity().findViewById(R.id.button_stop); buttonStop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { activity.locationManger.removeUpdates(activity.locationListener); activity.listener.onRunningChange(false); } }); } } /** * Custom ListFragment containing a for listing */ public static class MyListFragment extends ListFragment{ /** * The fragment argument representing the section number for this fragment. */ private static final String ARG_SECTION_NUMBER = "section_number"; @SuppressWarnings("unused") private MainActivity activity; //private LocationManager locationManager; /** * Returns a new instance of this fragment for the given section number. */ public static MyListFragment newInstance(int sectionNumber, MainActivity activity) { MyListFragment fragment = new MyListFragment(); fragment.activity = activity; Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; } public MyListFragment(){} /* (non-Javadoc) * @see android.app.ListFragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) */ @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { int current_section = getArguments().getInt(ARG_SECTION_NUMBER); int current_layout; switch (current_section) { case SECTION_MAIN: current_layout = R.layout.fragment_main; break; case SECTION_DB_TABLE: current_layout = R.layout.fragment_table_points; break; default: current_layout = R.layout.fragment_main; break; } View rootView = inflater.inflate(current_layout, container, false); return rootView; } } }