Advertisement
Guest User

Untitled

a guest
Jul 5th, 2015
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 18.20 KB | None | 0 0
  1. package com.tiesna.tracker;
  2.  
  3.  
  4. import java.util.ArrayList;
  5.  
  6. import com.tiesna.tracker.helper.JSONParser;
  7. import com.tiesna.tracker.helper.SessionManager;
  8. import com.tiesna.tracker.helper.SQLiteHandler;
  9. import java.util.HashMap;
  10.  
  11. import java.util.ArrayList;
  12. import java.util.List;
  13.  
  14. import org.apache.http.NameValuePair;
  15. import org.apache.http.message.BasicNameValuePair;
  16. import org.json.JSONObject;
  17.  
  18. import android.os.AsyncTask;
  19. import android.os.Bundle;
  20. import android.app.Activity;
  21. import android.app.ProgressDialog;
  22. import android.view.Menu;
  23. import android.view.View;
  24. import android.widget.Button;
  25. import android.widget.EditText;
  26. import android.widget.Toast;
  27.  
  28.  
  29.  
  30. import NavDrawerListAdapter.NavDrawerListAdapter;
  31. import android.annotation.SuppressLint;
  32. import android.annotation.TargetApi;
  33. import android.app.ActivityManager;
  34. import android.app.ActivityManager.RunningServiceInfo;
  35. import android.app.AlertDialog;
  36. import android.content.Context;
  37. import android.content.DialogInterface;
  38. import android.content.Intent;
  39. import android.content.SharedPreferences;
  40. import android.content.SharedPreferences.Editor;
  41. import android.content.res.Configuration;
  42. import android.content.res.TypedArray;
  43. import android.graphics.Color;
  44. import android.graphics.drawable.ColorDrawable;
  45. import android.os.Build;
  46. import android.os.Bundle;
  47. import android.os.CountDownTimer;
  48. import android.support.v4.app.ActionBarDrawerToggle;
  49. import android.support.v4.app.FragmentActivity;
  50. import android.support.v4.app.FragmentManager;
  51. import android.support.v4.app.FragmentTransaction;
  52. import android.support.v4.widget.DrawerLayout;
  53. import android.view.Gravity;
  54. import android.view.LayoutInflater;
  55. import android.view.Menu;
  56. import android.view.MenuItem;
  57. import android.view.View;
  58. import android.widget.AdapterView;
  59. import android.widget.EditText;
  60. import android.widget.ListView;
  61. import android.widget.TextView;
  62. import android.widget.Toast;
  63.  
  64.  
  65. import com.tiesna.tracker.R;
  66.  
  67. @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
  68. public class MainActivity extends FragmentActivity {
  69.    
  70.     String latitude,longitude;
  71.     Button submit;
  72.     JSONParser jParser = new JSONParser();
  73.     ProgressDialog pDialog;
  74.     private static String url = "http://192.168.43.213/skripsi/api/insert.php";
  75.    
  76.     private SQLiteHandler db;
  77.     private SessionManager session;
  78.  
  79.     private DrawerLayout mDrawerLayout;
  80.     private ListView mDrawerList;
  81.     private ActionBarDrawerToggle mDrawerToggle;
  82.  
  83.     // nav drawer title
  84.     private CharSequence mDrawerTitle;
  85.  
  86.     // used to store app title
  87.     private CharSequence mTitle;
  88.  
  89.     // slide menu items
  90.     private String[] navMenuTitles;
  91.     private TypedArray navMenuIcons;
  92.  
  93.     private ArrayList<NavDrawerItem> navDrawerItems;
  94.     private NavDrawerListAdapter adapter;
  95.  
  96.     SetGeofenceFragment mSetGeofenceFragment;
  97.  
  98.     FragmentTransaction mFragmentTransaction;
  99.  
  100.     FragmentManager fragmentManager;
  101.  
  102.     Menu menu;
  103.    
  104.     static MainActivity mainActivity;
  105.    
  106.     SharedPreferences sharedpreferences;
  107.     public static final String MyPREFERENCES = "MyPrefs" ;
  108.     Editor editor;
  109.     int i,j,k,l,m;
  110.     AlertDialog  alertForMobileNumber;
  111.     String lastnumber="";
  112.     CounterClass timer;
  113.     int itemSave = -1;
  114.     int itemselected = -1;
  115.    
  116.     public static MainActivity activity()
  117.     {
  118.         return mainActivity;
  119.     }
  120.    
  121.     @Override
  122.     protected void onCreate(Bundle savedInstanceState) {
  123.         super.onCreate(savedInstanceState);
  124.         setContentView(R.layout.activity_main);
  125.        
  126.         input input = new input();
  127.         input.execute();
  128.        
  129.         mainActivity = this;
  130.         latitude = "-6.711647";
  131.         longitude ="108.5413";
  132.        
  133.        
  134.        
  135.        
  136.         db = new SQLiteHandler(getApplicationContext());
  137.         session = new SessionManager(getApplicationContext());
  138.          
  139.         if (!session.isLoggedIn()) {
  140.             logoutUser();
  141.         }
  142.        
  143.        
  144.        
  145.        
  146.          
  147.          timer = new CounterClass(100000000, 40000);
  148.          
  149.          timer.start();
  150.          mTitle = mDrawerTitle = getTitle();
  151.        
  152.         // load slide menu items
  153.         navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
  154.  
  155.         // nav drawer icons from resources
  156.         navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons);
  157.  
  158.         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
  159.         mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
  160.  
  161.         navDrawerItems = new ArrayList<NavDrawerItem>();
  162.  
  163.         navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
  164.         navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
  165.         navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
  166.         navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1)));
  167.         navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1), true, "22"));
  168.  
  169.         alertForMobileNumber = new AlertDialog.Builder(this).create();
  170.         alertForMobileNumber.setTitle("Invalid number");
  171.         alertForMobileNumber.setMessage("Mobile number must be of atleast 10 characters");
  172.  
  173.         // Recycle the typed array
  174.         navMenuIcons.recycle();
  175.        
  176.        
  177.         // setting the nav drawer list adapter
  178.         adapter = new NavDrawerListAdapter(getApplicationContext(),
  179.                 navDrawerItems);
  180.         mDrawerList.setAdapter(adapter);
  181.  
  182.         // enabling action bar app icon and behaving it as toggle button
  183.         getActionBar().setDisplayHomeAsUpEnabled(true);
  184.         getActionBar().setHomeButtonEnabled(true);
  185.         getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FF0000")));
  186.         getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));    
  187.        
  188.         mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
  189.                 R.drawable.ic_drawer, //nav menu toggle icon
  190.                 R.string.app_name, // nav drawer open - description for accessibility
  191.                 R.string.app_name // nav drawer close - description for accessibility
  192.                 )
  193.         {
  194.             public void onDrawerClosed(View view) {
  195.                 getActionBar().setTitle(mTitle);
  196.                 // calling onPrepareOptionsMenu() to show action bar icons
  197.                 invalidateOptionsMenu();
  198.             }
  199.  
  200.             public void onDrawerOpened(View drawerView) {
  201.                 getActionBar().setTitle(mDrawerTitle);
  202.                 // calling onPrepareOptionsMenu() to hide action bar icons
  203.                 invalidateOptionsMenu();
  204.             }
  205.         };
  206.         mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
  207.        
  208.                 if (savedInstanceState == null)
  209.                 {
  210.                    
  211.                    
  212.                     fragmentManager = getSupportFragmentManager();
  213.                     mFragmentTransaction =  fragmentManager.beginTransaction();
  214.  
  215.                     mSetGeofenceFragment = new SetGeofenceFragment();
  216.  
  217.                     mFragmentTransaction.add(R.id.frame_container, mSetGeofenceFragment);
  218.                     mFragmentTransaction.commit();
  219.                 }
  220.     }
  221.  
  222.     // logout user
  223.     private void logoutUser() {
  224.         // TODO Auto-generated method stub
  225.         session.setLogin(false);
  226.          
  227.         db.deleteUsers();
  228.  
  229.         // Launching the login activity
  230.         Intent intent = new Intent(MainActivity.this, LoginActivity.class);
  231.         startActivity(intent);
  232.         finish();
  233.        
  234.     }
  235.  
  236.     /// json kirim data
  237.     public class input extends AsyncTask<String, String, String>
  238.     {
  239.        
  240.         HashMap<String, String> user = db.getUserDetails();
  241.         String email = user.get("email");
  242.         String success;
  243.  
  244.         @Override
  245.         protected void onPreExecute() {
  246.             super.onPreExecute();
  247.             pDialog = new ProgressDialog(MainActivity.this);
  248.             pDialog.setMessage("Sending Data to server...");
  249.             pDialog.setIndeterminate(false);
  250.             pDialog.show();
  251.         }
  252.  
  253.        
  254.         @Override
  255.         protected String doInBackground(String... arg0) {
  256.             String strEMAIL = email.toString();
  257.             String strNama = latitude.toString();
  258.             String strProdi = longitude.toString();
  259.            
  260.  
  261.             List<NameValuePair> params = new ArrayList<NameValuePair>();
  262.             params.add(new BasicNameValuePair("email", strEMAIL));
  263.             params.add(new BasicNameValuePair("latitude", strNama));
  264.             params.add(new BasicNameValuePair("longitude", strProdi));
  265.            
  266.  
  267.             JSONObject json = jParser.makeHttpRequest(url, "POST", params);
  268.  
  269.             try {
  270.                 success = json.getString("success");
  271.  
  272.             } catch (Exception e) {
  273.                 Toast.makeText(getApplicationContext(), "Error",
  274.                         Toast.LENGTH_LONG).show();
  275.             }
  276.             return null;
  277.         }
  278.         protected void onPostExecute(String file_url) {
  279.             // dismiss the dialog once done
  280.             pDialog.dismiss();
  281.  
  282.             if (success.equals("1"))
  283.             {
  284.                 Toast.makeText(getApplicationContext(), "kirim data Sukses!!!", Toast.LENGTH_LONG).show();
  285.             }
  286.             else
  287.             {
  288.                 Toast.makeText(getApplicationContext(), "kirim data Gagal!!!", Toast.LENGTH_LONG).show();
  289.                
  290.             }
  291.         }
  292.     }
  293.    
  294.     ///// json kirim data selesai
  295.    
  296.    
  297.    
  298.    
  299.    
  300.    
  301.     public void setvisiblemenu()
  302.     {
  303.        
  304.         menu.setGroupVisible(R.menu.main, true);
  305.     }
  306.  
  307.     public void setinvisiblemenu()
  308.     {
  309.         menu.setGroupVisible(R.menu.main, false);
  310.     }
  311.  
  312.  
  313.     @Override
  314.     public boolean onCreateOptionsMenu(Menu menu) {
  315.         // Inflate the menu; this adds items to the action bar if it is present.
  316.         getMenuInflater().inflate(R.menu.main, menu);
  317.         this.menu =menu;
  318.         return true;
  319.     }
  320.     @Override
  321.     protected void onStart() {
  322.         // TODO Auto-generated method stub
  323. //      EasyTracker.getInstance(this).activityStart(this);
  324.         super.onStart();
  325.     }
  326.  
  327.     @Override
  328.     protected void onResume() {
  329.         // TODO Auto-generated method stub
  330.         timer.start();
  331.         super.onResume();
  332.        
  333.     }
  334.  
  335.     @Override
  336.     protected void onDestroy() {
  337.         // TODO Auto-generated method stub
  338.         super.onDestroy();
  339.  
  340.     }
  341.  
  342.     @Override
  343.     protected void onStop() {
  344.         // TODO Auto-generated method stub
  345.         timer.cancel();
  346. //      EasyTracker.getInstance(this).activityStop(this);
  347.         super.onStop();
  348.     }
  349.  
  350.     private class SlideMenuClickListener implements ListView.OnItemClickListener
  351.     {
  352.         @Override
  353.         public void onItemClick(AdapterView<?> parent, View view, int position,long id)
  354.         {
  355.             // display view for selected nav drawer item
  356.             displayView(position);
  357.         }
  358.     }
  359.  
  360.     private void displayView(int position) {
  361.         switch (position) {
  362.        
  363.        
  364.         case 0:
  365.            
  366.            
  367.             break;
  368.            
  369.         case 1:
  370.             LayoutInflater layoutInflater = LayoutInflater.from(getApplicationContext());
  371.             View promptView = layoutInflater.inflate(R.layout.alert_target, null);
  372.            
  373.             AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
  374.             alertDialogBuilder.setTitle("Mobile Number");
  375.            
  376.             alertDialogBuilder.setView(promptView);
  377.  
  378.             sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
  379.             editor = sharedpreferences.edit();
  380.  
  381.             final EditText input = (EditText) promptView.findViewById(R.id.alert_target_editText_phone);
  382.             if(sharedpreferences.contains("number"))
  383.             {
  384.  
  385.                 lastnumber=sharedpreferences.getString("number",lastnumber);
  386.                 input.setText(lastnumber);
  387.             }
  388.             else
  389.             {
  390.                 System.out.println("number is empty");
  391.             }
  392.  
  393.  
  394.             // setup a dialog window
  395.             alertDialogBuilder.setCancelable(false)
  396.  
  397.             .setPositiveButton("OK", new DialogInterface.OnClickListener() {
  398.  
  399.                 public void onClick(DialogInterface dialog, int id) {
  400.                     if(input.length()<10)
  401.                     {
  402.                         alertForMobileNumber.setButton("OK",new DialogInterface.OnClickListener() {
  403.                             public void onClick(final DialogInterface dialog, final int which) {
  404.  
  405.  
  406.                             }
  407.                         });
  408.  
  409.                         alertForMobileNumber.show();
  410.                         return;
  411.                     }
  412.                     else
  413.                     {
  414.                         String s=input.getText().toString();
  415.  
  416.                         editor.putString("number", s);
  417.                         editor.commit();
  418.                     }
  419.                 }
  420.             })
  421.  
  422.             .setNegativeButton("Cancel",
  423.                     new DialogInterface.OnClickListener() {
  424.                 public void onClick(DialogInterface dialog, int id) {
  425.                     dialog.cancel();
  426.                 }
  427.             });
  428.             alertDialogBuilder.show();
  429.             mDrawerLayout.closeDrawers();
  430.             break;
  431.         case 2:
  432.             final CharSequence[] items={"Just once", "Twice in 10 mins", "Every 3 mins", "Every 10 mins", "Every hour"};
  433.             final AlertDialog.Builder builder=new AlertDialog.Builder(this);
  434.             builder.setTitle("Alert Geofence");
  435.  
  436.             sharedpreferences =getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
  437.             editor = sharedpreferences.edit();
  438.  
  439.             int selected = sharedpreferences.getInt("item",-1);
  440.  
  441.             itemSave =  sharedpreferences.getInt("timer",-1);
  442.             itemselected = selected;
  443.  
  444.             builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
  445.  
  446.                 @Override
  447.                 public void onClick(DialogInterface dialog, int which) {
  448.  
  449.                     System.out.println("which "+itemselected);
  450.                     if(itemselected != -1 )
  451.                     {
  452.                         editor.putInt("timer",itemSave);
  453.                         editor.putInt("item",itemselected);
  454.                         editor.commit();
  455.  
  456.                         if(sharedpreferences.contains("number"))
  457.                         {
  458.                             lastnumber=sharedpreferences.getString("number",lastnumber);
  459.                             if(lastnumber.equals("")){
  460.                                 System.out.println("number is but empty");
  461.                                 alertForMobileNumber.setTitle("Mobile Number Empty");
  462.                                 alertForMobileNumber.setMessage("Please first enter the Mobile Number");
  463.                                 alertForMobileNumber.setButton("OK",new DialogInterface.OnClickListener() {
  464.                                     public void onClick(final DialogInterface dialog, final int which) {
  465.                                     }
  466.                                 });
  467.                                 alertForMobileNumber.show();
  468.                             }
  469.                             else {
  470.                                 Intent mIntent = new Intent(getApplicationContext(), MyService.class);
  471.                                 mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  472.                                 mIntent.setAction("com.tiesna.tracker.MyService");
  473.                                 if(isMyServiceRunning(MyService.class))
  474.                                 {
  475.                                     stopService(mIntent);
  476.                                     startService(mIntent);
  477.                                 }
  478.                                 else
  479.                                 {
  480.                                     startService(mIntent);
  481.                                 }
  482.                             }
  483.                         }
  484.                         else
  485.                         {
  486.                             alertForMobileNumber.setTitle("No kosong");
  487.                             alertForMobileNumber.setMessage("Silahkan masukan no hp");
  488.                             alertForMobileNumber.setButton("OK",new DialogInterface.OnClickListener() {
  489.                                 public void onClick(final DialogInterface dialog, final int which) {
  490.                                 }
  491.                             });
  492.                             alertForMobileNumber.show();
  493.                         }
  494.                     }
  495.                     else
  496.                     {
  497.                         Toast.makeText(getApplicationContext(),"Select timer", Toast.LENGTH_SHORT).show();
  498.                     }
  499.                 }
  500.             });
  501.  
  502.             builder.setSingleChoiceItems(items,selected, new DialogInterface.OnClickListener() {
  503.  
  504.                 @Override
  505.                 public void onClick(DialogInterface dialog, int which) {
  506.                     // TODO Auto-generated method stub
  507.                     if("Just once".equals(items[which]))
  508.                     {
  509.                         itemSave = 3000000;
  510.                         itemselected = which;
  511.                     }
  512.                     if("Twice in 10 mins".equals(items[which]))
  513.                     {
  514.                         itemSave = 300000;
  515.                         itemselected = which;
  516.                     }
  517.                     else if("Every 3 mins".equals(items[which]))
  518.                     {
  519.                         itemSave = 180000;
  520.                         itemselected = which;
  521.                     }
  522.                     else if("Every 10 mins".equals(items[which]))
  523.                     {
  524.                         itemSave = 600000;
  525.                         itemselected = which;
  526.                     }
  527.                     else if("Every hour".equals(items[which]))
  528.                     {
  529.                         itemSave = 3600000;
  530.                         itemselected = which;
  531.                     }
  532.                 }
  533.             });
  534.             builder.show();
  535.             mDrawerLayout.closeDrawers();
  536.             break;
  537.         case 3:
  538.            
  539.            
  540.             AlertDialog.Builder builder1=new AlertDialog.Builder(this);
  541.  
  542.             builder1.setTitle("Disable Geofence");
  543.             builder1.setMessage("Are you sure you want to disbale Geofence alerts?");
  544.  
  545.             builder1.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
  546.  
  547.                 @Override
  548.                 public void onClick(DialogInterface dialog, int which) {
  549.  
  550.  
  551.                     new input().execute();
  552.                     Intent trollIntent = new Intent(getApplicationContext(),MyService.class);
  553.  
  554.                     stopService(trollIntent);  
  555.  
  556.                 }
  557.             });
  558.  
  559.             builder1.setNegativeButton("No", new DialogInterface.OnClickListener() {
  560.  
  561.                 @Override
  562.                 public void onClick(DialogInterface dialog, int which) {}
  563.             });
  564.  
  565.             builder1.show();
  566.             mDrawerLayout.closeDrawers();
  567.             break;
  568.            
  569.         case 4:
  570.             session.setLogin(false);
  571.             db.deleteUsers();
  572.             // Launching the login activity
  573.             Intent intent = new Intent(MainActivity.this, LoginActivity.class);
  574.             startActivity(intent);
  575.             finish();
  576.        
  577.             break;
  578.         default:
  579.             break;
  580.         }
  581.  
  582.  
  583.     }
  584.    
  585.     @Override
  586.     public boolean onOptionsItemSelected(MenuItem item) {
  587.         // toggle nav drawer on selecting action bar app icon/title
  588.         if (mDrawerToggle.onOptionsItemSelected(item)) {
  589.             return true;
  590.         }
  591.         // Handle action bar actions click
  592.         switch (item.getItemId())
  593.         {
  594.         case R.id.menu_currentLocation:
  595.             mSetGeofenceFragment.currentLocation();
  596.             return true;
  597.         case R.id.menu_showGeofence:
  598.             mSetGeofenceFragment.showGeofence();
  599.             return true;
  600.         case R.id.menu_setGeofence:
  601.             mSetGeofenceFragment.SetGeofence();
  602.             return true;
  603.         default:
  604.             return super.onOptionsItemSelected(item);
  605.         }
  606.     }
  607.  
  608.     /***
  609.      * Called when invalidateOptionsMenu() is triggered
  610.      */
  611.     @Override
  612.     public boolean onPrepareOptionsMenu(Menu menu) {
  613.         // if nav drawer is opened, hide the action items
  614.         boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
  615.         //menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
  616.         return super.onPrepareOptionsMenu(menu);
  617.     }
  618.  
  619.     @Override
  620.     public void setTitle(CharSequence title) {
  621.         mTitle = title;
  622.         getActionBar().setTitle(mTitle);
  623.     }
  624.  
  625.     /**
  626.      * When using the ActionBarDrawerToggle, you must call it during
  627.      * onPostCreate() and onConfigurationChanged()...
  628.      */
  629.  
  630.     @Override
  631.     protected void onPostCreate(Bundle savedInstanceState) {
  632.         super.onPostCreate(savedInstanceState);
  633.         // Sync the toggle state after onRestoreInstanceState has occurred.
  634.         mDrawerToggle.syncState();
  635.     }
  636.  
  637.     @Override
  638.     public void onConfigurationChanged(Configuration newConfig) {
  639.         super.onConfigurationChanged(newConfig);
  640.         // Pass any configuration change to the drawer toggls
  641.         mDrawerToggle.onConfigurationChanged(newConfig);
  642.     }
  643.     private boolean isMyServiceRunning(Class<?> serviceClass) {
  644.         ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
  645.         for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
  646.             if (serviceClass.getName().equals(service.service.getClassName())) {
  647.                 return true;
  648.             }
  649.         }
  650.         return false;
  651.     }
  652.    
  653.     @TargetApi(Build.VERSION_CODES.GINGERBREAD)
  654.     @SuppressLint("NewApi")
  655.     public class CounterClass extends CountDownTimer {
  656.         public CounterClass(long millisInFuture, long countDownInterval) {
  657.             super(millisInFuture, countDownInterval);
  658.         }
  659.  
  660.         @Override
  661.         public void onFinish() {
  662.  
  663.         }
  664.  
  665.         @SuppressLint("NewApi")
  666.         @TargetApi(Build.VERSION_CODES.GINGERBREAD)
  667.         @Override
  668.         public void onTick(long millisUntilFinished) {
  669.  
  670.         }
  671.     }
  672.  
  673. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement