Скачать 443.6 Kb.
|
long id) { try { TextView textView = (TextView) itemClicked; String strText = textView.getText().toString(); // получаем текст нажатого элемента Intent intent = (new Intent(getActivity(), InfoActivity.class)); Task task = tasksMap.get(strText); // Toast.makeText(getActivity(),"this json:"+ task.getJson(), Toast.LENGTH_SHORT).show(); intent.putExtra("name", task.getJson()); startActivity(intent); } catch (JSONException e) { e.printStackTrace(); } } }); } catch (JSONException e) { Log.d("Except",e.toString()); } return v; } public static void refreshTasks(){//обновляет список активных задач try { if (tasks!=null) { tasks = TaskDao.getActiveTasks(); ArrayAdapter adapter = new ArrayAdapter(activity, android.R.layout.simple_list_item_1, tasks); listView.setAdapter(adapter); for (Task t : tasks) { tasksMap.put(t.getTaskName(), t); } } } catch (JSONException e) { e.printStackTrace(); } } } Листинг Б.4, лист 2 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.myproject.taskmanager.R; import com.myproject.taskmanager.dao.TaskDao; import com.myproject.taskmanager.pojo.Task; import com.myproject.taskmanager.service.MyService; import org.json.JSONException; //активность, позволяющая отсрочить задачу или завершить public class DelayActivity extends Activity { Task task; @Override protected void onCreate(Bundle savedInstanceState) { try { super.onCreate(savedInstanceState); setContentView(R.layout.delay_view); String value = getIntent().getStringExtra("name"); task = new Task(value); TaskDao.delete(task); TextView textView = (TextView) findViewById(R.id.textView3); textView.setText(task.getTaskName()); TextView textView1= (TextView) findViewById(R.id.textView4); textView1.setText(task.getDescription()); Button delay10 = (Button) findViewById(R.id.button4); delay10.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); Button delay30 = (Button) findViewById(R.id.button5); delay30.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { task.setDate(task.getDate()+20*60*1000); finish(); } }); Button close = (Button) findViewById(R.id.button6); close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { task.setStatusFinished(); finish(); } }); }catch (Exception e){ e.printStackTrace(); } Листинг Б.5, лист 1 } @Override public void finish() { try { TaskDao.saveTask(task); } catch (JSONException e) { e.printStackTrace(); } ActiveActivity.refreshTasks(); FinishActivity.refreshTasks(); super.finish(); startService(new Intent(this, MyService.class)); } } Листинг Б.5, лист 2 import org.json.JSONException; import org.json.JSONObject; //класс описывающий всю необходимую для программы информацию об объекте public class Task { private String taskName; private String description; private Long date; private String status; public Task() { } public Task(String taskName, String description, Long date) { this.taskName = taskName; this.description = description; this.date = date; status = "Active"; } public Task(String json) throws JSONException { JSONObject task = new JSONObject(json); this.taskName = task.getString("taskName"); this.description = task.getString("description"); this.date = task.getLong("date"); this.status = task.getString("status"); } public String getJson() throws JSONException { JSONObject json = new JSONObject(); json.put("taskName", taskName); json.put("description", description); json.put("date", date); json.put("status", status); return json.toString(); } @Override public String toString() { return taskName; } public String getTaskName() { return taskName; } public void setTaskName(String taskName) { this.taskName = taskName; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Long getDate() { return date; Листинг Б.6, лист 1 } public void setDate(Long date) { this.date = date; } public String getStatus() { return status; } public void setStatusActive() { this.status = "Active"; } public void setStatusFinished() { this.status = "Finished"; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Task task = (Task) o; if (!date.equals(task.date)) return false; if (description != null ? !description.equals(task.description) : task.description != null) return false; if (status != null ? !status.equals(task.status) : task.status != null) return false; if (!taskName.equals(task.taskName)) return false; return true; } @Override public int hashCode() { int result = taskName.hashCode(); result = 31 * result + (description != null ? description.hashCode() : 0); result = 31 * result + date.hashCode(); result = 31 * result + (status != null ? status.hashCode() : 0); return result; } } Листинг Б.6, лист 2 import android.content.SharedPreferences; import com.myproject.taskmanager.pojo.Task; import org.json.JSONException; import java.util.ArrayList; import java.util.List; import java.util.Map; //класс для работы с данными в памяти телефона. public class TaskDao { static SharedPreferences sPref; public static void init(SharedPreferences Pref){ sPref = Pref; } public static void saveTask(Task task) throws JSONException { SharedPreferences.Editor ed = sPref.edit(); ed.putString(task.getJson(),task.getJson()); ed.commit(); } public static void delete(Task task) throws JSONException { SharedPreferences.Editor ed = sPref.edit(); ed.remove(task.getJson()); ed.commit(); } public static List getActiveTasks() throws JSONException { //возвращает список активных задач List tasks = new ArrayList<>(); MapjsonMap = (Map) sPref.getAll(); for (final Map.Entry entry : jsonMap.entrySet()) { Task t = new Task(entry.getValue()); if (t.getStatus().equals("Active")) tasks.add(t); } return tasks; } public static List getFinishedTasks() throws JSONException { List tasks = new ArrayList<>(); MapjsonMap = (Map) sPref.getAll(); for (final Map.Entry entry : jsonMap.entrySet()) { Task t = new Task(entry.getValue()); if (t.getStatus().equals("Finished")) tasks.add(t); } return tasks; } } Листинг Б.7, лист 1 import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.BitmapFactory; import android.os.IBinder; import com.myproject.taskmanager.R; import com.myproject.taskmanager.activity.DelayActivity; import com.myproject.taskmanager.dao.TaskDao; import com.myproject.taskmanager.pojo.Task; import java.util.Date; import java.util.Random; public class MyService extends Service { //сервис мониторинга задач. через фиксированный период времени проверяет сроки задач. //запускает поток для работы приложения в фоновом режиме SharedPreferences sPref; public MyService() { } @Override public IBinder onBind(Intent intent) { throw new UnsupportedOperationException("Not yet implemented"); } @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { sPref = getSharedPreferences("SP", MODE_APPEND); TaskDao.init(sPref); new Thread(new Runnable() { public void run() { verify(); } }).start(); return Service.START_STICKY; } private void verify() { while (true) { try { for (Task task: TaskDao.getActiveTasks()){ Date d = new Date(); if (task.getDate() TaskDao.delete(task); task.setDate(d.getTime() + 10 * 60 * 1000); Листинг Б.8, лист 1 TaskDao.saveTask(task); Intent intent = new Intent(getApplicationContext(), DelayActivity.class); intent.putExtra("name", task.getJson()); PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); Notification.Builder builder = new Notification.Builder(getApplicationContext()); builder .setContentIntent(pendingIntent) .setSmallIcon(R.drawable.ic_launcher) .setLargeIcon(BitmapFactory.decodeResource(getApplication().getResources(), R.drawable.ic_launcher)) .setTicker("Новое уведомление") .setWhen(System.currentTimeMillis()) .setAutoCancel(true) .setContentTitle("Уведомление") .setContentText(task.getTaskName()); Notification notification = builder.build(); notification.defaults = Notification.DEFAULT_ALL; try { NotificationManager nm = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); nm.notify(new Random().nextInt(), notification); }catch (Exception e){} stopSelf(); return; } } Thread.sleep(30000); } catch (Exception e) { e.printStackTrace(); } } } } Листинг Б.8, лист 2 Файл разметки «activity_main»: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" android:paddingBottom="16dp" tools:context=".MainActivity"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:weightSum="1"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:weightSum="1"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Активные" android:id="@+id/button" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:onClick="addFragment1" android:paddingLeft="50dp" android:paddingRight="50dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Завершенные" android:id="@+id/button2" android:onClick="addFragment2" android:layout_alignParentTop="true" android:layout_alignParentEnd="true" android:paddingLeft="35dp" android:paddingRight="35dp" /> </<b>LinearLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="376dp" android:id="@+id/fragment1" android:layout_below="@+id/button" android:layout_alignParentStart="true" android:layout_weight="1.11"> </<b>FrameLayout> </<b>LinearLayout> </<b>FrameLayout> Листинг Б.9, лист 1 Файл разметки «delay_view»: xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Large Text" android:id="@+id/textView3" android:layout_gravity="center_horizontal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Medium Text" android:id="@+id/textView4" android:layout_gravity="center_horizontal" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Напомнить через 10 минут" android:id="@+id/button4" android:layout_gravity="center_horizontal" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Напомнить через 30 минут" android:id="@+id/button5" android:layout_gravity="center_horizontal" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Завершить" android:id="@+id/button6" android:layout_gravity="center_horizontal" /> </<b>LinearLayout> Листинг Б.10, лист 1 Файл разметки «info_activity»: xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editTextName" android:hint="Название" android:layout_gravity="center_horizontal" android:layout_marginTop="50dp"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:hint="Доп. информция" android:layout_gravity="center_horizontal" android:layout_marginTop="50dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Время" android:id="@+id/textView" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp"/> <TimePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/timePicker" android:layout_marginTop="10dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Дата" android:id="@+id/textView2" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp"/> <DatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/datePicker" android:layout_marginTop="10dp" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <Button android:layout_width="wrap_content" Листинг Б.11, лист 1 |
Руководство пользователя по установке ap manager II Перед установкой ap manager II на компьютере должно быть установлено следующее программное обеспечение: Mysql serve 0 и Mysql odbc... |
Программа SantaFe Manager Что может звук ? Мультимедиа и электронная почта |
||
Task Answer the following questions using the text |
Инструкция по установке программы: Подключите при помощи прилагаемого... Программа для синхронизации мобильных телефонов с компьютером Cell Phone Manager, главная особенность которой универсальность |
||
Руководство пользователя Введение Программа Rec Manager для EdicMini lcd предназначена для организации доступа к памяти диктофона, а также для настройки диктофона... |
Iqm manager: руководство пользователя |
||
Iqm manager: руководство пользователя |
Iqm manager: руководство пользователя |
||
Благотворительность в зеркале сми Принц Уильям помог носорогам. Он участвует в деятельности благотворительной организации Task Trust которая вырастила в английском... |
Сведения о профессии В переводе с английского слово manager означает – заведующий, директор, управляющий |
||
Инструкция по загрузке файлов через ftp в качестве ftp-клиента можно... В качестве ftp-клиента можно использовать far manager, при использовании другого ftp-клиента необходимо учитывать его особенности... |
Должностная инструкция site qc manager / Менеджер контроля качества... Он назначается руководителем департамента контроля качества головного офиса и входит в состав департамента качества |
||
+ Инструкция на русском В комплекте идет утилита Ozice settings Manager для настройки хард-клавиш и экранных кнопок. Отличительной особенностью OziExplorer... |
Реферат по курсу: Проектирование и разработка scada систем Тема:"... Современный мир — это мир постоянно растущих потребностей, для удовлетворения которых необходим рост прибыли, а значит, кроме всего... |
||
Техническое задание на оказание услуг по технической поддержке системы управления Предмет оказания услуг: услуги по технической поддержке системы управления Microsoft System Center Configuration Manager 2012 (далее-... |
Инструкция по отключению Odyssey Access Client Manager в правом нижнем... Если Вам по договору предоставляется реальный адрес Интернет, то он изменится с X x. 186. X на X x. 187. X это может вызвать неработоспособности... |
Поиск |