Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Приложение Б. Исходный код




AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.maria.testnavbar" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <uses-permission android:name="android.permission.VIBRATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <uses-library android:name="com.google.android.maps" /> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyCwPRFb3zxhSRw_697sXDGiHHut2xUqF9A" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <activity android:name=".Activities.MainActivity" android:label="@string/app_name" > </activity> <activity android:name=".Activities.AuthActivity" android:label="@string/app_name" > </activity> <receiver android:name=".Services.AlarmReciever" android:process=":remote" /> <receiver android:name=".Widget.NewAppWidget" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/new_app_widget_info" /> </receiver> <service android:name=".Widget.WidgetService" android:exported="false" android:permission="android.permission.BIND_REMOTEVIEWS" /> <activity android:name=".Activities.RegisterActivity" android:label="@string/title_activity_register" > </activity> <activity android:name=".Activities.Voice" android:label="ToDo" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

 

Основные методы класса DBWorker.java

 

  @Override public void onCreate(SQLiteDatabase db) { String SQL_CREATE_ENTRIES = "CREATE TABLE 'task' (" + "_id integer PRIMARY KEY AUTOINCREMENT," + "sID integer NULL," + "userID integer NOT NULL," + "checked integer NULL," + "text varchar(500) NOT NULL," + "dueDate INTEGER NULL," + "notice INTEGER NULL," + "repeatID integer NULL," + "locationNotice integer NULL, " + "lastChange INTEGER NOT NULL);"; db.execSQL(SQL_CREATE_ENTRIES);   SQL_CREATE_ENTRIES = "CREATE TABLE 'user' (" + "_id integer PRIMARY KEY AUTOINCREMENT," + "sID integer NULL," + "login varchar(100) NOT NULL," + "password varchar(100) NOT NULL," + "email varchar(100) NOT NULL," + "active integer NOT NULL," + "lastChange INTEGER NULL);"; db.execSQL(SQL_CREATE_ENTRIES);   SQL_CREATE_ENTRIES = "CREATE TABLE 'context' (" + "_id integer PRIMARY KEY AUTOINCREMENT," + "sID integer NULL," + "userID integer NOT NULL," + "title varchar(100) NOT NULL," + "lastChange INTEGER NULL);"; db.execSQL(SQL_CREATE_ENTRIES);   SQL_CREATE_ENTRIES = "CREATE TABLE 'point' (" + "_id integer PRIMARY KEY AUTOINCREMENT," + "contextID integer NULL, " + "sID integer NULL," + "description varchar(100) NOT NULL," + "lat varchar(100) NOT NULL," + "lng varchar(100) NOT NULL, " + "lastChange INTEGER NULL);"; db.execSQL(SQL_CREATE_ENTRIES);   SQL_CREATE_ENTRIES = "CREATE TABLE 'task_context'(" + "_id integer PRIMARY KEY AUTOINCREMENT," + "taskID integer NOT NULL," + "contextID integer NOT NULL)"; db.execSQL(SQL_CREATE_ENTRIES);   SQL_CREATE_ENTRIES = "CREATE TABLE 'subtask' (" + "_id integer PRIMARY KEY NOT NULL," + "sID integer NULL," + "taskID integer NOT NULL," + "text varchar(500) NOT NULL," + "lastChange INTEGER NULL)"; db.execSQL(SQL_CREATE_ENTRIES); }   @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS 'task'"); db.execSQL("DROP TABLE IF EXISTS 'user'"); db.execSQL("DROP TABLE IF EXISTS 'context'"); db.execSQL("DROP TABLE IF EXISTS 'point'"); db.execSQL("DROP TABLE IF EXISTS 'subtask'"); db.execSQL("DROP TABLE IF EXISTS 'task_context'"); onCreate(db); }   public UserContext checkUser(){ UserContext user = new UserContext(); SQLiteDatabase db = this.getReadableDatabase(); String query = "SELECT * FROM 'user' WHERE (active = '1') limit 1"; Cursor cursor = db.rawQuery(query, null); if (cursor.getCount() > 0){ cursor.moveToFirst(); user = new UserContext(); user.setID(cursor.getInt(0)); user.setsID(cursor.getInt(1)); user.setLogin(cursor.getString(2)); user.setPassword(cursor.getString(3)); user.setEmail(cursor.getString(4)); user.setActive(cursor.getInt(5)); return user; } else{ return user; } }   public UserContext authUser(String email, String pass){ UserContext user = new UserContext(); Calendar cal = Calendar.getInstance(); long curDate = cal.getTime().getTime()/1000; SQLiteDatabase db = this.getWritableDatabase(); String query = "SELECT * FROM 'user' WHERE (email = '" + email + "' and password = '"+ pass +"')"; Cursor cursor = db.rawQuery(query, null); if (cursor.getCount() > 0){ cursor.moveToFirst(); user = new UserContext(); user.setID(cursor.getInt(0)); user.setsID(cursor.getInt(1)); user.setLogin(cursor.getString(2)); user.setPassword(cursor.getString(3)); user.setEmail(cursor.getString(4)); user.setActive(cursor.getInt(5)); } db.close(); if (user.getLogin()!= null) { SQLiteDatabase db1 = this.getWritableDatabase(); ContentValues newValues = new ContentValues(); newValues.put("login", user.getLogin()); newValues.put("password", user.getPassword()); newValues.put("email", user.getEmail()); newValues.put("active", 1); newValues.put("lastChange", curDate); String where = "_id =" + user.getID(); db1.update("user", newValues, where, null); db1.close(); } return user; }   public UserContext registerUser(UserContext user){ Calendar cal = Calendar.getInstance(); long curDate = cal.getTime().getTime()/1000; SQLiteDatabase db = this.getWritableDatabase(); String insertQuery = "INSERT INTO 'user' ('sID','login', 'password', 'email', 'active', 'lastChange') VALUES ('"+user.getsID()+"','" + user.getLogin() + "', '" + user.getPassword() + "', '"+user.getEmail()+"', '1', 'curDate')"; db.execSQL(insertQuery); String query = "SELECT * FROM 'user' order by _id DESC limit 1"; Cursor cursor = db.rawQuery(query, null); int id = 0; if (cursor.moveToFirst()) { do { id = cursor.getInt(0); } while (cursor.moveToNext()); } user.setID(id); db.close(); return user; }   public void Exit() { UserContext user = new UserContext(); Calendar cal = Calendar.getInstance(); long curDate = cal.getTime().getTime()/1000; SQLiteDatabase db = this.getReadableDatabase(); String query = "SELECT * FROM 'user' WHERE (active = '1') limit 1"; Cursor cursor = db.rawQuery(query, null); if (cursor.getCount() > 0){ cursor.moveToFirst(); user = new UserContext(); user.setID(cursor.getInt(0)); user.setsID(cursor.getInt(1)); user.setLogin(cursor.getString(2)); user.setPassword(cursor.getString(3)); user.setEmail(cursor.getString(4)); user.setActive(cursor.getInt(5)); } db.close(); if (user.getLogin()!=null){ SQLiteDatabase db1 = this.getWritableDatabase(); ContentValues newValues = new ContentValues(); newValues.put("login", user.getLogin()); newValues.put("password", user.getPassword()); newValues.put("email", user.getEmail()); newValues.put("active", 0); newValues.put("sID", user.getsID()); newValues.put("lastChange", curDate); String where = "_id = '"+user.getID()+"'"; db1.update("user", newValues, where, null); db1.close(); } } public int newTask(TaskContext task){ SQLiteDatabase db = this.getWritableDatabase(); long curDate = 0; if (task.getlChSec()>0){ curDate = task.getlChSec(); } else { Calendar cal = Calendar.getInstance(); curDate = cal.getTime().getTime()/1000; } Long due = null; Long notice = null; if (task.getDueDate()!=null){ due = task.getDueDate().getTime()/1000; } if (task.getNotice()!= null) { notice = task.getNotice().getTime()/1000; } String insertQuery = "INSERT INTO 'task' " + "('userID', 'checked', 'text', 'dueDate', 'notice', 'repeatID', 'locationNotice', 'lastChange', 'sID') " + "VALUES " + "('" +task.getUserID() + "', " + "'" + task.getChecked() + "', " + "'" + task.getText() + "', " + "'" + due + "', " + "'" + notice + "', " + "'" + task.getRepeatID() + "', " + "'" + task.getLocationNotice() + "', " + "'" + curDate + "'," + "'" + task.getsID() + "')"; db.execSQL(insertQuery); String query = "SELECT * FROM 'task' order by _id DESC limit 1"; Cursor cursor = db.rawQuery(query, null); int id = 0 if (cursor.moveToFirst()) { do { id = cursor.getInt(0); } while (cursor.moveToNext()); } task.setID(id); db.close(); return task.getID(); } public void changeTask(TaskContext task) { SQLiteDatabase db = this.getWritableDatabase(); Calendar cal = Calendar.getInstance(); long curDate = cal.getTime().getTime()/1000; ContentValues newValues = new ContentValues(); Long due = null; Long notice = null; if (task.getDueDate()!=null){ due = task.getDueDate().getTime()/1000; } if (task.getNotice()!= null) { notice = task.getNotice().getTime()/1000; } newValues.put("sID ", task.getsID()); newValues.put("userID", task.getUserID()); newValues.put("checked", task.getChecked()); newValues.put("text", task.getText()); newValues.put("dueDate", due); newValues.put("notice", notice); newValues.put("repeatID", task.getRepeatID()); newValues.put("locationNotice", task.getLocationNotice()); newValues.put("lastChange", curDate); String where = "_id =" + task.getID(); db.update("task", newValues, where, null); db.close(); }   public void deleteTask(TaskContext task) { SQLiteDatabase db = this.getWritableDatabase(); String deleteQuery = "DELETE FROM 'task' WHERE userID = '"+task.getUserID()+"' and _id = '"+task.getID()+"'"; db.execSQL(deleteQuery); db.close(); }   public TaskContext getTaskById (int id){ SQLiteDatabase db = this.getReadableDatabase(); String query = "SELECT * FROM 'task' WHERE _id = '" + id + "'"; Cursor cursor = db.rawQuery(query, null); TaskContext task = new TaskContext(); if (cursor.moveToFirst()) { do { task = new TaskContext(); task.setID(cursor.getInt(0)); task.setsID(cursor.getInt(1)); task.setUserID(cursor.getInt(2)); task.setChecked(cursor.getInt(3)); task.setText(cursor.getString(4)); Date dt = new Date(cursor.getLong(5)*1000); task.setDueDate(dt); dt = new Date(cursor.getLong(6)*1000); task.setNotice(dt); task.setRepeatID(cursor.getInt(7)); task.setLocationNotice(cursor.getInt(8)); } while (cursor.moveToNext()); } return task; } public ArrayList<TaskContext> getTasksByContext(int contextID){ ArrayList<TaskContext> tasks = new ArrayList<TaskContext>(); SQLiteDatabase db = this.getReadableDatabase(); String query = "SELECT * FROM 'task_context' WHERE contextID = '" + contextID + "'"; Cursor cursor = db.rawQuery(query, null); TaskContext task = new TaskContext(); int taskID; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(appContext); boolean done = prefs.getBoolean("done_tasks", false); String selectQuery; if (cursor.moveToFirst()) { do { taskID = cursor.getInt(1);   if (done){ task = getUncheckedTaskById(taskID); } else{ task = getTaskById(taskID); } tasks.add(task); } while (cursor.moveToNext()); } return tasks; } public ArrayList<TaskContext> getTasksWithoutContext(UserContext user){ ArrayList<TaskContext> tasks = new ArrayList<TaskContext>(); ArrayList<TaskContext> res = new ArrayList<TaskContext>(); tasks = getAllTasks(user); SQLiteDatabase db = this.getReadableDatabase(); String query; Cursor cursor; for (int i = 0; i<tasks.size(); i++){ query = "SELECT * FROM 'task_context' WHERE taskID = '"+tasks.get(i).getID()+"'"; cursor = db.rawQuery(query, null); if (!cursor.moveToFirst()) { res.add(tasks.get(i)); } } return res; } public void addSubTask(SubtaskContext subtask){ Calendar cal = Calendar.getInstance(); long curDate = cal.getTime().getTime()/1000; SQLiteDatabase db = this.getWritableDatabase(); String insertQuery = "INSERT INTO 'subtask' " + "('taskID', 'text', 'lastChange') " + "VALUES " + "('" +subtask.getTaskID() + "', " + "'" + subtask.getText() + "', " + "'" + curDate + "')"; db.execSQL(insertQuery); db.close(); }   public void removeSubTaskByID(int id){ SQLiteDatabase db = this.getWritableDatabase(); String deleteQuery = "DELETE FROM 'subtask' WHERE _id = '"+id+"'"; db.execSQL(deleteQuery); db.close(); } public int addContext(ContextContext cnt){ SQLiteDatabase db = this.getWritableDatabase(); long curDate; if (cnt.getlChSec()>0) { curDate = cnt.getlChSec(); } else { Calendar cal = Calendar.getInstance(); curDate = cal.getTime().getTime() / 1000; } String insertQuery = "INSERT INTO 'context' " + "('userID', 'title', 'sID', 'lastChange') " + "VALUES " + "('" + cnt.getUserID() + "'," + "'" + cnt.getTitle() +"'," + "'" + cnt.getsID() + "'," + "'"+curDate+"')"; db.execSQL(insertQuery); String query = "SELECT * FROM 'context' order by _id DESC limit 1"; Cursor cursor = db.rawQuery(query, null); int id = 0; if (cursor.moveToFirst()) { do { id = cursor.getInt(0); } while (cursor.moveToNext()); } db.close(); return id; } public int addPoint(PointContext point){ SQLiteDatabase db = this.getWritableDatabase(); Calendar cal = Calendar.getInstance(); long curDate = cal.getTime().getTime()/1000; String insertQuery = "INSERT INTO 'point' " + "('description', 'lat', 'lng', 'contextID', 'sID', 'lastChange') " + "VALUES " + "('" + point.getDescription() + "'," + "'" + point.getLat() + "', " + "'" + point.getLng() + "', " + "'" + point.getContextID() + "', " + "'" + point.getsID() + "'," + "'"+curDate+"')"; db.execSQL(insertQuery); String query = "SELECT * FROM 'point' order by _id DESC limit 1"; Cursor cursor = db.rawQuery(query, null); int id = 0; if (cursor.moveToFirst()) { do { id = cursor.getInt(0); } while (cursor.moveToNext()); } db.close(); return id; }   public PointContext getPointByID(int id){ SQLiteDatabase db = this.getReadableDatabase(); String query = "SELECT * FROM 'point' WHERE _id = '" + id + "'"; Cursor cursor = db.rawQuery(query, null); PointContext point = new PointContext(); if (cursor.moveToFirst()) { do { point = new PointContext(); point.setID(cursor.getInt(0)); point.setContextID(cursor.getInt(1)); point.setsID(cursor.getInt(2)); point.setDescription(cursor.getString(3)); point.setLat(cursor.getString(4)); point.setLng(cursor.getString(5)); } while (cursor.moveToNext()); } db.close(); return point; }   public void removePoint(int id){ SQLiteDatabase db = this.getWritableDatabase(); PointContext point = getPointByID(id); String deleteQuery = "DELETE FROM 'point' WHERE _id = '"+id+"'"; db.execSQL(deleteQuery); db.close(); }   public ArrayList<PointContext> getPointsByContextID(int id){ SQLiteDatabase db = this.getWritableDatabase(); ArrayList<PointContext> points = new ArrayList<PointContext>(); String selectQuery = "SELECT * FROM point where contextID = '"+id+"'"; Cursor cursor = db.rawQuery(selectQuery, null); PointContext point; if (cursor.moveToFirst()) { do { point = new PointContext(); point.setID(cursor.getInt(0)); point.setsID(cursor.getInt(2)); point.setContextID(cursor.getInt(1)); point.setDescription(cursor.getString(3)); point.setLat(cursor.getString(4)); point.setLng(cursor.getString(5)); points.add(point); } while (cursor.moveToNext()); } db.close(); return points; }

 

Класс AsyncRequest.java

public class AsyncRequest extends AsyncTask<RequestContext, Void, ResponseContext> {   Context context;   public AsyncRequest(Context context) { super(); this.context = context; }   @Override protected void onPreExecute() { super.onPreExecute(); }   @Override protected ResponseContext doInBackground(RequestContext... request) {   ResponseContext resp = new ResponseContext(); JSONObject obj; DefaultHttpClient client = new DefaultHttpClient(); HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); HttpResponse response = null; StringEntity se; client.getParams().setParameter("http.protocol.content-charset", HTTP.UTF_8); String credentials = request[0].getLogin() + ":" + request[0].getPass(); String base64EncodedCredentials = Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); int status = -1; try { switch (request[0].getMethod()){ case "GET": HttpGet get = new HttpGet(request[0].getUrl()); get.addHeader("Authorization", "Basic " + base64EncodedCredentials); response = client.execute(get); break; case "POST": HttpPost post = new HttpPost(request[0].getUrl()); se = new StringEntity(request[0].getJsonData().toString(), "UTF-8"); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8")); post.addHeader("Authorization", "Basic " + base64EncodedCredentials); post.addHeader("Content-Encoding", HTTP.UTF_8); post.setEntity(se); response = client.execute(post); break; case "PUT": HttpPut put = new HttpPut(request[0].getUrl()); se = new StringEntity(request[0].getJsonData().toString(), "UTF-8"); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8")); put.addHeader("Authorization", "Basic " + base64EncodedCredentials); put.addHeader("Content-Encoding", HTTP.UTF_8); put.setEntity(se); response = client.execute(put); break; case "DELETE": MyDelete delete = new MyDelete(request[0].getUrl()); se = new StringEntity(request[0].getJsonData().toString()); se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); delete.addHeader("Authorization", "Basic " + base64EncodedCredentials); delete.setEntity(se); response = client.execute(delete); break; default: break; }   if(response!=null){ status = response.getStatusLine().getStatusCode(); resp.setResponseCode(status); is = response.getEntity().getContent(); }   obj = readStream(is); resp.setResponse(obj); return resp; } catch(Exception e) { Log.e("NewError!", e.toString()); return resp; } }   @Override protected void onPostExecute(ResponseContext jsonData) { } }

 

Основные методы класса WebWorker.java

  public UserContext registerUser(String email, String login, String pass) { UserContext newUser = new UserContext(); try { JSONObject json = new JSONObject(); json.put("name", login); json.put("email", email); json.put("password", pass); RequestContext request = new RequestContext(); request.setMethod("POST"); request.setJsonData(json); request.setUrl("http://irinn.us/api/v1.0/user/"); AsyncRequest async = new AsyncRequest(cnt); async.execute(request); ResponseContext response = async.get();   switch (response.getResponseCode()) { case -1: //Toast.makeText(cnt, "Ошибка с запросом", Toast.LENGTH_LONG).show(); break; case 201: newUser = getToken(pass, email); break; case 405: // Toast.makeText(cnt, "Пользователь с таким email уже существует", Toast.LENGTH_LONG).show(); break; case 400: //Toast.makeText(cnt, "Вообще ничего не отправилось(", Toast.LENGTH_LONG).show(); break; default: //Toast.makeText(cnt, "Вообще не понятно, что вернулось с сервера", Toast.LENGTH_LONG).show(); break; } } catch (JSONException e) { Log.d("Error JSONException: ", e.toString()); } catch (InterruptedException e) { Log.d("Error InterruptedExc: ", e.toString()); } catch (ExecutionException e) { Log.d("Error ExecutionExc: ", e.toString()); } return newUser; } boolean ret = false; try { Calendar cal = Calendar.getInstance(); Date curDate = cal.getTime(); RequestContext request = new RequestContext(); JSONObject json = new JSONObject(); json.put("checked", task.getChecked()); if (task.getDueDate()!= null) { json.put("due_date", task.getDueDate().getTime() / 1000); } else { json.put("due_date", 0); } json.put("last_change", curDate.getTime() / 1000); json.put("notice", task.getNotice()); json.put("location_notice", task.getLocationNotice()); json.put("repeat_id", task.getRepeatID()); json.put("text", task.getText()); json.put("contexts", scID); request.setMethod("PUT"); request.setUrl("http://irinn.us/api/v1.0/tasks/" + task.getsID()); request.setJsonData(json); request.setLogin(user.getEmail()); request.setPass(user.getPassword()); AsyncRequest async = new AsyncRequest (cnt); async.execute(request); ResponseContext response = async.get();   switch (response.getResponseCode()) { case 200: ret = true; break; } } catch (JSONException ex) { Log.e("ERROR", ex.toString()); } catch (ExecutionException ex) { Log.e("ERROR", ex.toString()); } catch (InterruptedException ex) { Log.e("ERROR", ex.toString()); } return ret; }   public void makeFullSync(UserContext user) { DBWorker db = new DBWorker(cnt); try { RequestContext request = new RequestContext(); request.setLogin(user.getEmail()); request.setPass(user.getPassword()); request.setMethod("GET"); request.setUrl("http://irinn.us/api/v1.0/contexts/"); AsyncRequest async = new AsyncRequest (cnt); async.execute(request); ResponseContext response = async.get();   switch (response.getResponseCode()) { case 200: JSONArray contexts = response.getResponse().getJSONArray("contexts"); for (int i = 0; i < contexts.length(); i++) { JSONObject context = contexts.getJSONObject(i); JSONArray pointsIDs = context.getJSONArray("points");   ContextContext contextDB = new ContextContext(); contextDB.setUserID(user.getID()); contextDB.setTitle(context.getString("title")); contextDB.setsID(context.getInt("id")); contextDB.setlChSec(context.getInt("last_change"));   int newCNTID = db.addContext(contextDB);   for (int k = 0; k < pointsIDs.length(); k++) {   int id = pointsIDs.getInt(k); getPointByServerID(user, id, newCNTID); } } break; } request = new RequestContext(); request.setLogin(user.getEmail()); request.setPass(user.getPassword()); request.setMethod("GET"); request.setUrl("http://irinn.us/api/v1.0/tasks/"); async = new AsyncRequest (cnt); async.execute(request); response = async.get(); switch (response.getResponseCode()) { case 200: JSONArray tasks = response.getResponse().getJSONArray("tasks"); for (int i = 0; i < tasks.length(); i++) { JSONObject task = tasks.getJSONObject(i); String t = task.getString("subtask"); JSONArray subIDs = null; if (t!= "null") subIDs = task.getJSONArray("subtask"); t = task.getString("contexts"); JSONArray t_cnt = null; if (t!= "null") t_cnt = task.getJSONArray("contexts"); TaskContext taskDB = new TaskContext(); taskDB.setUserID(user.getID()); taskDB.setsID(task.getInt("id")); taskDB.setLastChange(new Date(task.getInt("last_change") * 1000)); taskDB.setChecked(task.getInt("checked")); taskDB.setDueDate(new Date((long) task.getInt("due_date") * 1000)); taskDB.setNotice(new Date((long) task.getInt("notice") * 1000)); taskDB.setRepeatID(task.getInt("repeat_id")); taskDB.setText(task.getString("text")); taskDB.setLocationNotice(task.getInt("location_notice")); int newTaskID = db.newTask(taskDB); if (subIDs!= null) { for (int k = 0; k < subIDs.length(); k++) { int id = subIDs.getInt(k); getSubTaskByServerID(user, id, newTaskID); } } if (t_cnt!= null) { for (int l = 0; l < t_cnt.length(); l++) { int id = t_cnt.getInt(l); db.saveTaskContextFromServer(newTaskID, id); } } } break; } } catch (JSONException ex) { Log.e("ERROR", ex.toString()); } catch (ExecutionException ex) { Log.e("ERROR", ex.toString()); } catch (InterruptedException ex) { Log.e("ERROR", ex.toString()); } String now = Long.toString(Calendar.getInstance().getTimeInMillis() / 1000); int nnow = Integer.parseInt(now); SharedPreferences.Editor editor = mSettings.edit(); editor.putInt("sync", nnow); editor.apply(); }   public void makeSync(UserContext user) {   if (hasInternetConnection()) { String APP_PREFERENCES_COUNTER = "sync"; SharedPreferences mSettings = cnt.getSharedPreferences("mysettings", Context.MODE_PRIVATE); int sync = mSettings.getInt("sync", 0); if (sync == 0) { makeFullSync(user); } else { syncContexts(user, sync); syncTasks(user, sync); String now = Long.toString(Calendar.getInstance().getTimeInMillis() / 1000); int nnow = Integer.parseInt(now); SharedPreferences.Editor editor = mSettings.edit(); editor.putInt("sync", nnow); editor.apply(); } } }   public void syncContexts(UserContext user, int lastSync) { DBWorker db = new DBWorker(cnt); try { RequestContext request = new RequestContext(); request.setLogin(user.getEmail()); request.setPass(user.getPassword()); request.setMethod("GET"); request.setUrl("http://irinn.us/api/v1.0/contexts/sync/" + lastSync); AsyncRequest async = new AsyncRequest (cnt); async.execute(request); ResponseContext response = async.get(); switch (response.getResponseCode()) { case 200: JSONArray contexts = response.getResponse().getJSONArray("contexts"); for (int i = 0; i < contexts.length(); i++) { JSONObject context = contexts.getJSONObject(i); JSONArray pointsIDs = context.getJSONArray("points"); ContextContext contextDB = new ContextContext(); contextDB.setUserID(user.getID()); contextDB.setTitle(context.getString("title")); contextDB.setsID(context.getInt("id")); contextDB.setlChSec(context.getInt("last_change")); ContextContext DBCheck = db.getContextLastChangeFromSID(contextDB); if (DBCheck.getlChSec() == 0) { int id = db.addContext(contextDB); contextDB.setID(id); for (int k = 0; k < pointsIDs.length(); k++) { int pID = pointsIDs.getInt(k); getPointByServerID(user, pID, id); } } else if (DBCheck.getlChSec() < contextDB.getlChSec()) { db.updateContextFromServer(contextDB); db.removeAllContextPoints(DBCheck.getID()); for (int k = 0; k < pointsIDs.length(); k++) { int pID = pointsIDs.getInt(k); getPointByServerID(user, pID, DBCheck.getID()); } } else { updateContext(contextDB, user); for (int k = 0; k < pointsIDs.length(); k++) { int pID = pointsIDs.getInt(k); PointContext pnt = new PointContext(); pnt.setsID(pID); deletePoint(pnt, user); } ArrayList<PointContext> pnts = db.getPointsByContextID(DBCheck.getID()); for (int k = 0; k < pnts.size(); k++) { addPoint(pnts.get(k), DBCheck, user); } } } break; } } catch (JSONException ex) { Log.e("ERROR", ex.toString()); } catch (ExecutionException ex) { Log.e("ERROR", ex.toString()); } catch (InterruptedException ex) { Log.e("ERROR", ex.toString()); } ArrayList<ContextContext> newLocalCont = db.getAllUnsyncContexts(user); if (newLocalCont.size() > 0) { for (int i = 0; i < newLocalCont.size(); i++) { ContextContext scont = addContext(newLocalCont.get(i).getTitle(), user); db.updateContext(scont); ArrayList<PointContext> newLocalPoints = db.getPointsByContextID(newLocalCont.get(i).getID()); for (int k = 0; k < newLocalPoints.size(); k++) { PointContext nPoint = addPoint(newLocalPoints.get(k), scont, user); db.updatePoint(nPoint); } } } }   public void syncTasks(UserContext user, int lastSync) { DBWorker db = new DBWorker(cnt); try { RequestContext request = new RequestContext(); request.setLogin(user.getEmail()); request.setPass(user.getPassword()); request.setMethod("GET"); request.setUrl("http://irinn.us/api/v1.0/tasks/sync/" + lastSync); AsyncRequest async = new AsyncRequest (cnt); async.execute(request); ResponseContext response = async.get(); switch (response.getResponseCode()) { case 200: JSONArray tasks = response.getResponse().getJSONArray("tasks"); for (int i = 0; i < tasks.length(); i++) { JSONObject task = tasks.getJSONObject(i); String t = task.getString("subtask"); JSONArray subIDs = null; if (t!= "null") subIDs = task.getJSONArray("subtask"); t = task.getString("contexts"); JSONArray t_cnt = null; if (t!= "null") t_cnt = task.getJSONArray("contexts"); TaskContext taskDB = new TaskContext(); taskDB.setUserID(user.getID()); taskDB.setsID(task.getInt("id")); taskDB.setlChSec(task.getInt("last_change")); taskDB.setChecked(task.getInt("checked")); taskDB.setDueDate(new Date((long) task.getInt("due_date") * 1000)); taskDB.setNotice(new Date((long) task.getInt("notice") * 1000)); taskDB.setRepeatID(task.getInt("repeat_id")); taskDB.setText(task.getString("text")); taskDB.setLocationNotice(task.getInt("location_notice")); TaskContext DBCheck = db.getTaskLastChangeFromSID(taskDB); if (DBCheck.getlChSec() == 0) { int id = db.newTask(taskDB); taskDB.setID(id); if (subIDs!= null) { for (int k = 0; k < subIDs.length(); k++) { int pID = subIDs.getInt(k); getSubTaskByServerID(user, pID, id); } } if (t_cnt!= null) { for (int l = 0; l < t_cnt.length(); l++) { int rid = t_cnt.getInt(l); db.saveTaskContextFromServer(id, rid); } } } else if (DBCheck.getlChSec() < taskDB.getlChSec()) { db.updateTaskFromServer(taskDB); db.removeAllSubtasks(DBCheck.getID()); if (subIDs!= null) { for (int k = 0; k < subIDs.length(); k++) { int subID = subIDs.getInt(k); getSubTaskByServerID(user, subID, DBCheck.getID()); } } for (int l = 0; l < t_cnt.length(); l++) { int id = t_cnt.getInt(l); db.saveTaskContextFromServer(DBCheck.getID(), id); } } else { String cnts = db.getTaskContextServerIDs(DBCheck, user); updateTask(DBCheck, user, cnts); if (subIDs!= null) { for (int k = 0; k < subIDs.length(); k++) { int pID = subIDs.getInt(k); SubtaskContext pnt = new SubtaskContext(); pnt.setsID(pID); deleteSubTask(pnt, user); } } ArrayList<SubtaskContext> pnts = db.getSubTaskListByTaskID(DBCheck.getID()); for (int k = 0; k < pnts.size(); k++) { addSubTask(pnts.get(k), user, DBCheck.getsID()); } } } break; } } catch (JSONException ex) { Log.e("ERROR", ex.toString()); } catch (ExecutionException ex) { Log.e("ERROR", ex.toString()); } catch (InterruptedException ex) { Log.e("ERROR", ex.toString()); } ArrayList<TaskContext> newLocalTasks = db.getAllUnsyncTask(user); if (newLocalTasks.size() > 0) { for (int i = 0; i < newLocalTasks.size(); i++) { String cnts = db.getTaskContextServerIDs(newLocalTasks.get(i), user); int tsID = addTask(newLocalTasks.get(i), user, cnts); db.changeTask(newLocalTasks.get(i)); ArrayList<SubtaskContext> pnts = db.getSubTaskListByTaskID(newLocalTasks.get(i).getID()); for (int k = 0; k < pnts.size(); k++) { addSubTask(pnts.get(k), user, newLocalTasks.get(i).getsID()); } } }   }     public boolean hasInternetConnection() { ConnectivityManager cm = (ConnectivityManager) cnt.getSystemService(Context.CONNECTIVITY_SERVICE); if (cm == null) { return false; } NetworkInfo[] netInfo = cm.getAllNetworkInfo(); if (netInfo == null) { return false; } for (NetworkInfo ni: netInfo) { if (ni.getTypeName().equalsIgnoreCase("WIFI")) if (ni.isConnected()) { Log.d(this.toString(), "test: wifi conncetion found"); return true; } if (ni.getTypeName().equalsIgnoreCase("MOBILE")) if (ni.isConnected()) { Log.d(this.toString(), "test: mobile connection found"); return true; } } return false; }    

 

Класс ContextNotify.java

public class ContextNotify {   Context cnt; Double curLatitude; Double curLongtitude; SimpleLocation location; DBWorker db; UserContext user;   ContextContext curContext; int curContextID;   public static final String APP_PREFERENCES = "mysettings"; public static final String APP_PREFERENCES_VAR = "curContext"; private SharedPreferences mSettings;   private static final int NOTIFICATION_ID = 1000;   public ContextNotify(Context context){ this.cnt = context; location = new SimpleLocation(cnt); db = new DBWorker(cnt); mSettings = cnt.getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE); user = db.checkUser();   }   public String CheckContext(){   if (!location.hasLocationEnabled()) { SimpleLocation.openSettings(cnt); } String n = null; curLatitude = location.getLatitude(); curLongtitude = location.getLongitude(); ArrayList<PointContext> points = new ArrayList<PointContext>(); points = db.getAllPoints(); for (int i=0; i<points.size(); i++){ Double distance = location.calculateDistance(curLatitude, curLongtitude, Double.parseDouble(points.get(i).getLat()), Double.parseDouble(points.get(i).getLng())); if (distance < 250){ curContextID = points.get(i).getContextID(); curContext = db.getContextByID(curContextID); if (curContext.getUserID() == user.getID()){ break; } else { curContextID = 0; } } }   int setCnt = mSettings.getInt(APP_PREFERENCES_VAR, 0); if (curContextID > 0 && setCnt > 0 && curContextID!=setCnt){ n = createNotify(); SharedPreferences.Editor editor = mSettings.edit(); editor.putInt(APP_PREFERENCES_VAR, curContextID); editor.apply(); } else if (curContextID > 0 && setCnt == 0){ n = createNotify(); SharedPreferences.Editor editor = mSettings.edit(); editor.putInt(APP_PREFERENCES_VAR, curContextID); editor.apply(); } else if (curContextID==setCnt){   } else { SharedPreferences.Editor editor = mSettings.edit(); editor.putInt(APP_PREFERENCES_VAR, 0); editor.apply(); } if (n!=null) return n; else return null; }   public String createNotify() { if (curContextID > 0) { String remTitle = ""; ArrayList<TaskContext> taskList = db.getNotifyTasksByContext(curContextID); if (taskList.size() == 1) { remTitle = taskList.get(0).getText(); } else { if (taskList.size() > 0) { for (int i = 0; i < taskList.size(); i++) { if (i!= 0) remTitle += "; "; remTitle += taskList.get(i).getText(); } } } if (remTitle.length()>0){ Intent notificationIntent = new Intent(cnt, MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(cnt,0, notificationIntent,PendingIntent.FLAG_CANCEL_CURRENT); Notification.Builder builder = new Notification.Builder(cnt); Resources res = cnt.getResources(); builder.setContentIntent(contentIntent) .setSmallIcon(R.mipmap.ic_action_about) .setLargeIcon(BitmapFactory.decodeResource(res, R.mipmap.ic_action_event)) .setTicker("ToDO!") .setWhen(System.currentTimeMillis()) .setAutoCancel(true) .setContentTitle(curContext.getTitle()); builder.setContentText(remTitle); Notification notification = builder.build(); long[] vibrate = new long[]{1000, 1000}; notification.ledARGB = Color.GREEN; notification.ledOffMS = 0; notification.ledOnMS = 1; notification.flags = notification.flags | Notification.FLAG_SHOW_LIGHTS;   NotificationManager notificationManager = (NotificationManager) cnt.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(NOTIFICATION_ID, notification);   } } return null; }   }

 

AlarmReceiver.java

public class AlarmReciever extends BroadcastReceiver { DBWorker db; private static final int NOTIFY_ID = 101; @Override public void onReceive(Context context, Intent intent) { try { Integer taskID = Integer.parseInt(intent.getAction()); db = new DBWorker(context); TaskContext task = db.getTaskById(taskID); Intent notificationIntent = new Intent(context, MainActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); Resources res = context.getResources(); Notification.Builder builder = new Notification.Builder(context); builder.setContentIntent(contentIntent) .setSmallIcon(R.mipmap.ic_action_about) .setLargeIcon(BitmapFactory.decodeResource(res, R.mipmap.ic_action_event)) .setTicker("ToDO!") .setWhen(System.currentTimeMillis()) .setAutoCancel(true) .setContentTitle("Напоминание") .setContentText(task.getText()); Notification notification = builder.build(); long[] vibrate = new long[]{1000, 1000}; notification.vibrate = vibrate; notification.ledARGB = Color.GREEN; notification.ledOffMS = 0; notification.ledOnMS = 1; notification.flags = notification.flags | Notification.FLAG_SHOW_LIGHTS;   NotificationManager notificationManager = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(NOTIFY_ID, notification); } catch (NumberFormatException e){ Log.d("Error", e.toString()); } } }

 

 


 

“______” ________________ 20__ г.

 

Последний лист дипломного проекта

 

Дипломный проект выполнен мною самостоятельно. Использованные в работе материалы из опубликованной научной, учебной литературы и Интернет имеют ссылки на них.

 

 

Отпечатано в 2 экземплярах.

Библиография 27 наименования.

Один экземпляр сдан на кафедру.

 

 

Маликова Мария Александровна

 

Дата

 

 

[Е1]В современных условиях возникает проблема: эффективного распределения времени.

[Е2]

[Е3]Ежедневное планирование необходимо для эффективного управления временем.

[I4]В Ведении также должны быть прописаны: Объект исследования, предмет исследования, задание работы, методологические, теоритические и информационные основы исследования.

 

[I5]Глава 1. Образ и анализ задач контекстно-ориентированного планирования.

[I6]Важной функцией данного приложения является напоминание.

[I7]Планирование помогает определить поаледовательность выполнения задач и их согласованность между собой.

[I8]Составляя планы, человек ставит перед собой задачи.

[I9]цели

[I10]по разделам

[I11]На карте представлены контексты. Например,

[I12]Повтор предложения.

[I13]Для пользователя сервиса Google, приложение станет очень удобным и полезным.

[I14]Кнопки «Сегодня», «завтра», «Через неделю» помогут назначить время и сроки выпонения поставленой цели.

[I15]По задумке создателей, он подходит исключительно для членов семьи.

[I16]планы

[I17]Новое предложение

[I18]Если необходимо создать напоминание, то пользователь может воспользоваться будильником, таймерои или стикирами.

[I19]На данной диаграмме представлены основные операции, осуществляемые пользователем. Они реализуются в следующей последовательности:

1. фиксция задачи в текстовом виде с помощью блокнота или текстового редактора;

2. создание напоминания с использованием блокнота или стикеров, а также выходные данные каждой операции и элементы управления.

 

[I20]Рис. 2 Уровень модели – диаграмма декомпозиции IFDEF0 [I20]

 

[I21]На рис. 3. Изображен [I21] порядок операций. Они еобходимы для фиксации задач в текстовом виде.

[I22]Пропущена запятая

[I23]Глава 2. Проектирование системы контекстно-ориентированного планирования задач.

[I24]Информационной системы (в дальнейшем будет использоваться ИС)

[I25]В ввиде иерархичной структуры

[I26]Пропущенна запятая после слово диаграмма

[I27]работы





Поделиться с друзьями:


Дата добавления: 2016-11-24; Мы поможем в написании ваших работ!; просмотров: 413 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

В моем словаре нет слова «невозможно». © Наполеон Бонапарт
==> читать все изречения...

3970 - | 3925 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.