diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 45ca3f1..e662e15 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -5,7 +5,8 @@
android:versionName="1.0" >
-
+
+
diff --git a/bin/AndProject.apk b/bin/AndProject.apk
index 761485b..256832c 100644
Binary files a/bin/AndProject.apk and b/bin/AndProject.apk differ
diff --git a/bin/classes.dex b/bin/classes.dex
index aa3ec58..b893d95 100644
Binary files a/bin/classes.dex and b/bin/classes.dex differ
diff --git a/bin/classes/bonsai/app/AndroidProjectActivity.class b/bin/classes/bonsai/app/AndroidProjectActivity.class
index 850b06a..d46b6f1 100644
Binary files a/bin/classes/bonsai/app/AndroidProjectActivity.class and b/bin/classes/bonsai/app/AndroidProjectActivity.class differ
diff --git a/bin/classes/bonsai/app/BonsaiActivity$1.class b/bin/classes/bonsai/app/BonsaiActivity$1.class
index 9c38fe8..b5af923 100644
Binary files a/bin/classes/bonsai/app/BonsaiActivity$1.class and b/bin/classes/bonsai/app/BonsaiActivity$1.class differ
diff --git a/bin/classes/bonsai/app/BonsaiActivity$2.class b/bin/classes/bonsai/app/BonsaiActivity$2.class
index 3294865..efbfadd 100644
Binary files a/bin/classes/bonsai/app/BonsaiActivity$2.class and b/bin/classes/bonsai/app/BonsaiActivity$2.class differ
diff --git a/bin/classes/bonsai/app/BonsaiActivity.class b/bin/classes/bonsai/app/BonsaiActivity.class
index c756868..22cf075 100644
Binary files a/bin/classes/bonsai/app/BonsaiActivity.class and b/bin/classes/bonsai/app/BonsaiActivity.class differ
diff --git a/bin/classes/bonsai/app/EditBonsaiActivity.class b/bin/classes/bonsai/app/EditBonsaiActivity.class
index 9681925..5723950 100644
Binary files a/bin/classes/bonsai/app/EditBonsaiActivity.class and b/bin/classes/bonsai/app/EditBonsaiActivity.class differ
diff --git a/bin/classes/bonsai/app/MoreActivity.class b/bin/classes/bonsai/app/MoreActivity.class
index 5ea3cf4..443aeb8 100644
Binary files a/bin/classes/bonsai/app/MoreActivity.class and b/bin/classes/bonsai/app/MoreActivity.class differ
diff --git a/bin/classes/bonsai/app/R$drawable.class b/bin/classes/bonsai/app/R$drawable.class
index 204062c..9993256 100644
Binary files a/bin/classes/bonsai/app/R$drawable.class and b/bin/classes/bonsai/app/R$drawable.class differ
diff --git a/bin/classes/bonsai/app/R$id.class b/bin/classes/bonsai/app/R$id.class
index 5b89099..8aee981 100644
Binary files a/bin/classes/bonsai/app/R$id.class and b/bin/classes/bonsai/app/R$id.class differ
diff --git a/bin/classes/bonsai/app/R$layout.class b/bin/classes/bonsai/app/R$layout.class
index 0acee21..8aebcb2 100644
Binary files a/bin/classes/bonsai/app/R$layout.class and b/bin/classes/bonsai/app/R$layout.class differ
diff --git a/bin/classes/bonsai/app/R$menu.class b/bin/classes/bonsai/app/R$menu.class
new file mode 100644
index 0000000..afe25c6
Binary files /dev/null and b/bin/classes/bonsai/app/R$menu.class differ
diff --git a/bin/classes/bonsai/app/R$string.class b/bin/classes/bonsai/app/R$string.class
index 035d149..51fa789 100644
Binary files a/bin/classes/bonsai/app/R$string.class and b/bin/classes/bonsai/app/R$string.class differ
diff --git a/bin/classes/bonsai/app/R.class b/bin/classes/bonsai/app/R.class
index 81a4f18..1f8c57f 100644
Binary files a/bin/classes/bonsai/app/R.class and b/bin/classes/bonsai/app/R.class differ
diff --git a/bin/classes/bonsai/app/SelectBonsaiActivity.class b/bin/classes/bonsai/app/SelectBonsaiActivity.class
index e9682a2..df9b1a5 100644
Binary files a/bin/classes/bonsai/app/SelectBonsaiActivity.class and b/bin/classes/bonsai/app/SelectBonsaiActivity.class differ
diff --git a/bin/classes/bonsai/app/StartActivity.class b/bin/classes/bonsai/app/StartActivity.class
index dbf7708..761c759 100644
Binary files a/bin/classes/bonsai/app/StartActivity.class and b/bin/classes/bonsai/app/StartActivity.class differ
diff --git a/bin/classes/bonsai/app/TaskActivity$1.class b/bin/classes/bonsai/app/TaskActivity$1.class
new file mode 100644
index 0000000..476bcc4
Binary files /dev/null and b/bin/classes/bonsai/app/TaskActivity$1.class differ
diff --git a/bin/classes/bonsai/app/TaskActivity$2.class b/bin/classes/bonsai/app/TaskActivity$2.class
new file mode 100644
index 0000000..5e6e061
Binary files /dev/null and b/bin/classes/bonsai/app/TaskActivity$2.class differ
diff --git a/bin/classes/bonsai/app/TaskActivity.class b/bin/classes/bonsai/app/TaskActivity.class
index 010e286..80ab8eb 100644
Binary files a/bin/classes/bonsai/app/TaskActivity.class and b/bin/classes/bonsai/app/TaskActivity.class differ
diff --git a/bin/classes/bonsai/app/alarm/CheckRiego.class b/bin/classes/bonsai/app/alarm/CheckRiego.class
new file mode 100644
index 0000000..01a0eb3
Binary files /dev/null and b/bin/classes/bonsai/app/alarm/CheckRiego.class differ
diff --git a/bin/classes/bonsai/app/alarm/alarmChecker$1.class b/bin/classes/bonsai/app/alarm/alarmChecker$1.class
new file mode 100644
index 0000000..4d5a3a8
Binary files /dev/null and b/bin/classes/bonsai/app/alarm/alarmChecker$1.class differ
diff --git a/bin/classes/bonsai/app/alarm/alarmChecker.class b/bin/classes/bonsai/app/alarm/alarmChecker.class
new file mode 100644
index 0000000..14fae84
Binary files /dev/null and b/bin/classes/bonsai/app/alarm/alarmChecker.class differ
diff --git a/bin/classes/bonsai/app/weather/Weather.class b/bin/classes/bonsai/app/weather/Weather.class
index fe4b9b5..920a01a 100644
Binary files a/bin/classes/bonsai/app/weather/Weather.class and b/bin/classes/bonsai/app/weather/Weather.class differ
diff --git a/bin/classes/bonsai/app/weather/XmlHandler.class b/bin/classes/bonsai/app/weather/XmlHandler.class
index d889157..6cbfa1a 100644
Binary files a/bin/classes/bonsai/app/weather/XmlHandler.class and b/bin/classes/bonsai/app/weather/XmlHandler.class differ
diff --git a/bin/res/drawable/ic_menu_chart.png b/bin/res/drawable/ic_menu_chart.png
new file mode 100644
index 0000000..3c77ef8
Binary files /dev/null and b/bin/res/drawable/ic_menu_chart.png differ
diff --git a/bin/res/drawable/ic_menu_filter.png b/bin/res/drawable/ic_menu_filter.png
new file mode 100644
index 0000000..03e01ac
Binary files /dev/null and b/bin/res/drawable/ic_menu_filter.png differ
diff --git a/bin/res/drawable/ic_menu_flag.png b/bin/res/drawable/ic_menu_flag.png
new file mode 100644
index 0000000..9d146f1
Binary files /dev/null and b/bin/res/drawable/ic_menu_flag.png differ
diff --git a/bin/resources.ap_ b/bin/resources.ap_
index 1b85efa..427d12a 100644
Binary files a/bin/resources.ap_ and b/bin/resources.ap_ differ
diff --git a/gen/bonsai/app/R.java b/gen/bonsai/app/R.java
index 36b8925..df0e9e4 100644
--- a/gen/bonsai/app/R.java
+++ b/gen/bonsai/app/R.java
@@ -24,78 +24,90 @@ public static final class drawable {
public static final int fog=0x7f020006;
public static final int haze=0x7f020007;
public static final int ic_launcher=0x7f020008;
- public static final int ic_tab_bonsai=0x7f020009;
- public static final int ic_tab_calendar=0x7f02000a;
- public static final int ic_tab_more=0x7f02000b;
- public static final int ic_tab_selectbonsai=0x7f02000c;
- public static final int icy=0x7f02000d;
- public static final int mist=0x7f02000e;
- public static final int mostly_sunny=0x7f02000f;
- public static final int sleet=0x7f020010;
- public static final int smoke=0x7f020011;
- public static final int snow=0x7f020012;
- public static final int storm=0x7f020013;
- public static final int sunny=0x7f020014;
- public static final int thunderstorm=0x7f020015;
+ public static final int ic_menu_chart=0x7f020009;
+ public static final int ic_menu_filter=0x7f02000a;
+ public static final int ic_menu_flag=0x7f02000b;
+ public static final int ic_tab_bonsai=0x7f02000c;
+ public static final int ic_tab_calendar=0x7f02000d;
+ public static final int ic_tab_more=0x7f02000e;
+ public static final int ic_tab_selectbonsai=0x7f02000f;
+ public static final int icy=0x7f020010;
+ public static final int mist=0x7f020011;
+ public static final int mostly_sunny=0x7f020012;
+ public static final int sleet=0x7f020013;
+ public static final int smoke=0x7f020014;
+ public static final int snow=0x7f020015;
+ public static final int storm=0x7f020016;
+ public static final int sunny=0x7f020017;
+ public static final int thunderstorm=0x7f020018;
}
public static final class id {
- public static final int ImageView01=0x7f06000d;
- public static final int bonsaiImage=0x7f060002;
- public static final int bonsairowtext=0x7f060018;
- public static final int btnCountry=0x7f060024;
- public static final int btnPostCode=0x7f060022;
- public static final int button1=0x7f06001e;
- public static final int button2=0x7f06001f;
- public static final int cancelButton=0x7f06002c;
- public static final int donatebutton=0x7f06002a;
- public static final int editAge=0x7f06001b;
- public static final int editCountry=0x7f060023;
- public static final int editHeight=0x7f06001c;
- public static final int editName=0x7f060019;
- public static final int editPostCode=0x7f060021;
- public static final int familySpinner=0x7f06001a;
- public static final int footer=0x7f060013;
- public static final int imageButton1=0x7f060026;
- public static final int imageButton2=0x7f060017;
- public static final int imageButton3=0x7f060027;
- public static final int imageView1=0x7f06002d;
- public static final int imageView2=0x7f06000a;
- public static final int imageView4=0x7f060010;
- public static final int imageWeather=0x7f060008;
- public static final int linearLayout1=0x7f060001;
- public static final int photoURLtext=0x7f06001d;
- public static final int podeButton=0x7f060015;
- public static final int relativeLayout1=0x7f060025;
- public static final int saveButton=0x7f06002b;
- public static final int scrollView1=0x7f060000;
- public static final int spinner1=0x7f060020;
- public static final int tableRow1=0x7f060009;
- public static final int tableRow2=0x7f06000c;
- public static final int tableRow3=0x7f06000f;
- public static final int textFamily=0x7f060004;
- public static final int textName=0x7f060003;
- public static final int textPrune=0x7f060011;
- public static final int textTemperature=0x7f060012;
- public static final int textTransplant=0x7f06000e;
- public static final int textView1=0x7f060028;
- public static final int textView2=0x7f060029;
- public static final int textView3=0x7f060006;
- public static final int textWater=0x7f06000b;
- public static final int textYears=0x7f060005;
- public static final int textweather=0x7f060007;
- public static final int transplantButton=0x7f060016;
- public static final int waterButton=0x7f060014;
+ public static final int ImageView01=0x7f07000d;
+ public static final int MnuOpc1=0x7f07002f;
+ public static final int MnuOpc2=0x7f070030;
+ public static final int MnuOpc3=0x7f070031;
+ public static final int bonsaiImage=0x7f070002;
+ public static final int bonsairowtext=0x7f070018;
+ public static final int btnAlarm=0x7f07002e;
+ public static final int btnCountry=0x7f070027;
+ public static final int btnPostCode=0x7f070025;
+ public static final int button1=0x7f070021;
+ public static final int button2=0x7f070022;
+ public static final int cancelButton=0x7f07001b;
+ public static final int donatebutton=0x7f07002c;
+ public static final int editAge=0x7f07001e;
+ public static final int editCountry=0x7f070026;
+ public static final int editHeight=0x7f07001f;
+ public static final int editName=0x7f07001c;
+ public static final int editPostCode=0x7f070024;
+ public static final int familySpinner=0x7f07001d;
+ public static final int footer=0x7f070013;
+ public static final int imageButton1=0x7f070029;
+ public static final int imageButton2=0x7f070017;
+ public static final int imageButton3=0x7f07002a;
+ public static final int imageView1=0x7f07002d;
+ public static final int imageView2=0x7f07000a;
+ public static final int imageView4=0x7f070010;
+ public static final int imageWeather=0x7f070008;
+ public static final int linearLayout1=0x7f070001;
+ public static final int photoURLtext=0x7f070020;
+ public static final int podeButton=0x7f070015;
+ public static final int relativeLayout1=0x7f070028;
+ public static final int saveButton=0x7f07001a;
+ public static final int scrollView1=0x7f070000;
+ public static final int spinner1=0x7f070023;
+ public static final int tableRow1=0x7f070009;
+ public static final int tableRow2=0x7f07000c;
+ public static final int tableRow3=0x7f07000f;
+ public static final int textFamily=0x7f070004;
+ public static final int textName=0x7f070003;
+ public static final int textPrune=0x7f070011;
+ public static final int textTemperature=0x7f070012;
+ public static final int textTransplant=0x7f07000e;
+ public static final int textView1=0x7f070019;
+ public static final int textView2=0x7f07002b;
+ public static final int textView3=0x7f070006;
+ public static final int textWater=0x7f07000b;
+ public static final int textYears=0x7f070005;
+ public static final int textweather=0x7f070007;
+ public static final int transplantButton=0x7f070016;
+ public static final int waterButton=0x7f070014;
}
public static final class layout {
public static final int bonsai=0x7f030000;
public static final int bonsai_row=0x7f030001;
- public static final int editbonsai=0x7f030002;
- public static final int main=0x7f030003;
- public static final int more=0x7f030004;
- public static final int selectbonsai=0x7f030005;
- public static final int start=0x7f030006;
- public static final int task=0x7f030007;
- public static final int task_row=0x7f030008;
+ public static final int calendar=0x7f030002;
+ public static final int editbonsai=0x7f030003;
+ public static final int gallery=0x7f030004;
+ public static final int main=0x7f030005;
+ public static final int more=0x7f030006;
+ public static final int selectbonsai=0x7f030007;
+ public static final int start=0x7f030008;
+ public static final int task=0x7f030009;
+ public static final int task_row=0x7f03000a;
+ }
+ public static final class menu {
+ public static final int menu=0x7f060000;
}
public static final class string {
public static final int app_name=0x7f040000;
diff --git a/res/drawable/ic_menu_chart.png b/res/drawable/ic_menu_chart.png
new file mode 100644
index 0000000..8d3bf2f
Binary files /dev/null and b/res/drawable/ic_menu_chart.png differ
diff --git a/res/drawable/ic_menu_filter.png b/res/drawable/ic_menu_filter.png
new file mode 100644
index 0000000..84176c5
Binary files /dev/null and b/res/drawable/ic_menu_filter.png differ
diff --git a/res/drawable/ic_menu_flag.png b/res/drawable/ic_menu_flag.png
new file mode 100644
index 0000000..5dc6da3
Binary files /dev/null and b/res/drawable/ic_menu_flag.png differ
diff --git a/res/layout/bonsai.xml b/res/layout/bonsai.xml
index 444c4ce..434446d 100644
--- a/res/layout/bonsai.xml
+++ b/res/layout/bonsai.xml
@@ -11,7 +11,7 @@
@@ -105,9 +105,9 @@
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:stretchColumns="2" >
+ android:text="No weather info " />
diff --git a/res/layout/selectbonsai.xml b/res/layout/selectbonsai.xml
index 223fee2..54816ac 100644
--- a/res/layout/selectbonsai.xml
+++ b/res/layout/selectbonsai.xml
@@ -41,4 +41,7 @@
+
+
+
\ No newline at end of file
diff --git a/res/layout/task.xml b/res/layout/task.xml
index 6bcf653..0ce01fa 100644
--- a/res/layout/task.xml
+++ b/res/layout/task.xml
@@ -31,4 +31,14 @@
+
+
+
\ No newline at end of file
diff --git a/res/menu/menu.xml b/res/menu/menu.xml
new file mode 100644
index 0000000..63188a1
--- /dev/null
+++ b/res/menu/menu.xml
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/src/bonsai/app/BonsaiActivity.java b/src/bonsai/app/BonsaiActivity.java
index c60b45d..5a4bbe9 100644
--- a/src/bonsai/app/BonsaiActivity.java
+++ b/src/bonsai/app/BonsaiActivity.java
@@ -9,6 +9,8 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
+import android.view.Menu;
+import android.view.MenuInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
@@ -40,6 +42,16 @@ public class BonsaiActivity extends Activity {
private String location;
private double temperature;
+ public boolean isWeatherAvail() {
+ return weatherAvail;
+ }
+
+
+
+ public double getTemperature() {
+ return temperature;
+ }
+
private String imageWeather;
private final Handler handler = new Handler();
@@ -259,7 +271,7 @@ private void checkPode() {
// LOGICA DE TRANSPLANTE
if(lastpode == 0) textPrune.setText("No info about " + name + " prunes.\nMaybe never pruned.");
- else if(age < 2) { // Los bonsais con menos de dos a–os se suelen defoliar al 50% cada 2 meses, aprox
+ else if(age < 2) { // Los bonsais con menos de dos a�os se suelen defoliar al 50% cada 2 meses, aprox
if(hoursTime - lastpode > 60 * 24) textPrune.setText("Defoliate your bonsai 50%");
else textPrune.setText("Your bonsai prune is not necessary");
}
@@ -302,7 +314,7 @@ public void run() {
public void setTempInfo() {
try{
- textWeather.setText(Double.toString(w.getTempMedia())+"¼C");
+ textWeather.setText(Integer.toString(w.getTempMedia())+"ºC");
} catch (Exception e) {
}
@@ -378,28 +390,21 @@ public void setWeatherComment() {
if(s.equals("icy")){
if(situation.equals("Exterior"))
textTemperature.setText("Your Bonsai is frozen, please put it indoor");
- }
- if(situation.equals("Interior"))
- textTemperature.setText("Your Bonsai would like to have some sunbathing today");
-
- if(s.equals("smoke"))
- if(s.equals("snow")){
+ }
+ if(s.equals("snow")||s.equals("chance_of_snow")){
if(situation.equals("Exterior"))
textTemperature.setText("Your Bonsai looks like snowman");
}
- if(s.equals("storm")){
+ if(s.equals("thunderstorm")){
if(situation.equals("Exterior"))
textTemperature.setText("Your Bonsai is scare of thunderstorm");
}
- if(s.equals("sunny")){
+ if(s.equals("sunny")||s.equals("mostly_sunny")){
if(situation.equals("Interior"))
textTemperature.setText("Your Bonsai would like to " +
"have some sunbathing today");
}
- if(s.equals("thunderstorm")){
- if(situation.equals("Exterior"))
- textTemperature.setText("Your Bonsai is scare of thunderstorm");
- }
+
} catch (Exception e) {
}
@@ -449,4 +454,11 @@ public void makeTransplant(View v) {
onResume();
}
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.menu, menu);
+ return true;
+ }
+
}
\ No newline at end of file
diff --git a/src/bonsai/app/StartActivity.java b/src/bonsai/app/StartActivity.java
index ece76fc..e00c5b3 100644
--- a/src/bonsai/app/StartActivity.java
+++ b/src/bonsai/app/StartActivity.java
@@ -17,7 +17,7 @@ public void onCreate(Bundle savedInstanceState) {
}
public void goStart(View v) {
- // Aqu’ sacar’amos el mensaje en el Toast para imprimirlo en un mensajito emergente
+ // Aquà sacar�amos el mensaje en el Toast para imprimirlo en un mensajito emergente
//Toast.makeText(this, "Donation Webpage", Toast.LENGTH_LONG).show();
finish();
diff --git a/src/bonsai/app/TaskActivity.java b/src/bonsai/app/TaskActivity.java
index addf20c..92cd515 100644
--- a/src/bonsai/app/TaskActivity.java
+++ b/src/bonsai/app/TaskActivity.java
@@ -1,11 +1,26 @@
package bonsai.app;
+import java.util.Calendar;
import java.util.Date;
+import java.util.List;
+import bonsai.app.alarm.alarmChecker;
+import bonsai.app.weather.Weather;
+import bonsai.app.weather.XmlParserSax;
+
+import android.app.AlarmManager;
import android.app.ListActivity;
+import android.app.PendingIntent;
+
+import android.app.ProgressDialog;
+
+import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
+import android.view.View;
import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.Toast;
public class TaskActivity extends ListActivity {
@@ -15,17 +30,34 @@ public class TaskActivity extends ListActivity {
private String[] tasks;
private int cont;
+ //He de calcular otra vez la temperatura, ya que es posible que solo
+ //utilice esta actividad de la aplicación, posteriormente investigaré una manera
+ //de asegurarse que no hay que hacerlo dos veces, si cambio entre esta actividad y
+ //BonsaiActivity
+ private ProgressDialog dialog;
+ private String location;
+ private boolean flagWeather=false;
+ private long idtemp;
+ private Weather w;
+ private List weather;
+ Button m_btnAlarma = null;
+ private static PendingIntent pendingIntent;
+
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.task);
-
-
-
// ListView lv = getListView();
// lv.setTextFilterEnabled(true);
+
+ m_btnAlarma = ((Button)findViewById(R.id.btnAlarm));
+ m_btnAlarma.setOnClickListener(
+ new View.OnClickListener() {
+ public void onClick(View view) {
+ CambiarEstadoAlarma();
+ }});
@@ -47,6 +79,14 @@ public void onResume() {
bonsaisCursor.moveToFirst();
for(int i = 0; i < bonsaisCursor.getCount(); i++) {
long id = bonsaisCursor.getLong(bonsaisCursor.getColumnIndexOrThrow(BonsaiDbUtil.KEY_ROWID));
+ Cursor bonsai = bonsaidb.fetchBonsai(id);
+ startManagingCursor(bonsai);
+ //si la localización del siguiente bonsai, es la misma que este no
+ //vuelvo a calcular la temperatura
+ if(location!=bonsai.getString(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_LOCALIZATION)))
+ flagWeather=false;
+ if(flagWeather==false);
+ checkTemp(id);
String possibletask = checkWater(id);
if(possibletask != null) {
tasks[cont] = possibletask;
@@ -79,18 +119,17 @@ public void onResume() {
}
setListAdapter(new ArrayAdapter(this, R.layout.task_row, finaltasks));
-
}
- private String checkWater(long id) {
+ private String checkWater(long id) {
String name;
String family;
long lastwatered;
long waterfrec;
int height = 30;
- int temperature = 20;
long hoursTime = (new Date().getTime())/(1000*60*60);
+
try {
@@ -105,18 +144,23 @@ private String checkWater(long id) {
startManagingCursor(cfamily);
waterfrec = cfamily.getInt(cfamily.getColumnIndexOrThrow(FamilyDbUtil.KEY_WATER_FRECUENCY));
+
+
+
// LOGICA DE REGADO
if(lastwatered == 0) return ("Set water info on " + name);
- else if(temperature > 35) return("Water " + name + " 2 times with " + height/4 + " cl.");
- else if(temperature < 0) return null;
+ else if(w.getTempMax() > 35) return("Water " + name + " 2 times with " + height/4 + " cl.");
+ else if(w.getTempMedia() < 0) return null;
else if((hoursTime - lastwatered) > waterfrec) return("Water " + name + " today once with " + height/2 +" cl.");
else return null;
+
} catch(Exception e) {
System.out.println(e.toString());
return null;
}
+
}
private String checkTransplant(long id) {
@@ -187,7 +231,7 @@ private String checkPode(long id) {
// LOGICA DE TRANSPLANTE
if(lastpode == 0) return("Set info about " + name + " prunes.");
- else if(age < 2) { // Los bonsais con menos de dos a–os se suelen defoliar al 50% cada 2 meses, aprox
+ else if(age < 2) { // Los bonsais con menos de dos a�os se suelen defoliar al 50% cada 2 meses, aprox
if(hoursTime - lastpode > 60 * 24) return("Defoliate " + name + " 50%");
else return null;
}
@@ -199,4 +243,94 @@ else if(age < 2) { // Los bonsais con menos de dos a
return null;
}
}
+
+
+
+
+
+ private void checkTemp(long id) {
+ dialog = ProgressDialog.show(this, "", "Data obtaining…", true);
+ idtemp=id;
+
+ Thread thread = new Thread() {
+ @Override
+ public void run() {
+ try{
+ Cursor bonsai = bonsaidb.fetchBonsai(idtemp);
+ startManagingCursor(bonsai);
+ location = bonsai.getString(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_LOCALIZATION));
+ XmlParserSax saxparser = new XmlParserSax("http://www.google.com/ig/api?weather="+location);
+ dialog.dismiss();
+ weather = saxparser.parse();
+ w=weather.get(0);
+ System.out.println("La temperatura de w es " +w.getTempMax());
+
+ }catch(Exception e){
+ Toast tx;
+ System.out.println(e.toString());
+ tx = Toast.makeText(getApplicationContext(), "Conexion is not aviable", Toast.LENGTH_LONG);
+ tx.show();
+ dialog.dismiss();
+ }
+ dialog.dismiss();
+ }
+
+
+ };
+ thread.start();
+ flagWeather=true;
+
+
+ }
+
+
+ /**
+ * Desactiva o activa la alarma, estableciendola al estado contrario del actual
+ */
+ private void CambiarEstadoAlarma()
+ {
+ if (pendingIntent == null)
+ {
+ //La alarma está desactivada, la activamos
+ ActivarAlarma();
+ }else
+ {
+ //La alarma está activada, la desactivamos
+ DesactivarAlarma();
+ }
+ }
+
+ private void DesactivarAlarma()
+ {
+ AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
+ alarmManager.cancel(pendingIntent);
+
+ m_btnAlarma.setText("Alarm OFF");
+ pendingIntent = null;
+
+ Toast.makeText(TaskActivity.this, "Notifications is OFF", Toast.LENGTH_LONG).show();
+
+ }
+
+ private void ActivarAlarma()
+ {
+
+ int comprobacionIntervaloSegundos = 1;
+
+ Intent myIntent = new Intent(TaskActivity.this, alarmChecker.class);
+ pendingIntent = PendingIntent.getService(TaskActivity.this, 0, myIntent, 0);
+
+ AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(System.currentTimeMillis());
+ calendar.add(Calendar.SECOND, 10);
+ alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), comprobacionIntervaloSegundos * 1000, pendingIntent);
+
+ m_btnAlarma.setText("Alarm ON");
+
+ Toast.makeText(TaskActivity.this, "Notification is ON", Toast.LENGTH_LONG).show();
+
+ }
+
}
\ No newline at end of file
diff --git a/src/bonsai/app/alarm/CheckRiego.java b/src/bonsai/app/alarm/CheckRiego.java
new file mode 100644
index 0000000..a7fc0fe
--- /dev/null
+++ b/src/bonsai/app/alarm/CheckRiego.java
@@ -0,0 +1,141 @@
+package bonsai.app.alarm;
+
+import bonsai.app.BonsaiDbUtil;
+import bonsai.app.FamilyDbUtil;
+import android.app.ListActivity;
+import android.database.Cursor;
+import java.util.Date;
+import java.util.List;
+import bonsai.app.weather.Weather;
+import bonsai.app.weather.XmlParserSax;
+import android.widget.Toast;
+
+/**
+ *
+ * @author ruben y raul
+ * Clase que contiene un métod que calcula para los bonsais de la tabla si
+ * tienen alguna tarea pendiente relaccionada con el riego
+ *
+ *
+ */
+
+public class CheckRiego extends ListActivity {
+
+ private Weather w;
+ private List weather;
+ BonsaiDbUtil bonsaidb;
+ FamilyDbUtil familydb;
+
+ /**
+ * Método encargado de verificar si los bonsais tienen
+ * tareas pendientes
+ * @return true si hay tareas pendientes y false en caso contrario
+ *
+ */
+
+ public boolean check(){
+ bonsaidb = new BonsaiDbUtil(this); // Construinos el DDBBAdapter
+ bonsaidb.open();
+ familydb = new FamilyDbUtil(this); // Construinos el DDBBAdapter
+ familydb.open();
+
+
+ Cursor bonsaisCursor = bonsaidb.fetchAllBonsais();
+ startManagingCursor(bonsaisCursor);
+ String[] tasks = new String[bonsaisCursor.getCount() * 3];
+ int cont = 0;
+
+ bonsaisCursor.moveToFirst();
+ for(int i = 0; i < bonsaisCursor.getCount(); i++) {
+ long id = bonsaisCursor.getLong(bonsaisCursor.getColumnIndexOrThrow(BonsaiDbUtil.KEY_ROWID));
+ Cursor bonsai = bonsaidb.fetchBonsai(id);
+ startManagingCursor(bonsai);
+ checkTemp(id);
+ String possibletask = checkWater(id);
+ if(possibletask != null) {
+ tasks[cont] = possibletask;
+ cont++;
+ }
+ if(i < bonsaisCursor.getCount()-1) bonsaisCursor.moveToNext();
+ }
+ int cuenta = 0;
+ for(int i = 0; i < tasks.length; i++) {
+ if(tasks[i] != null) cuenta++;
+ }
+ if (cuenta==0)return false;
+ else return true;
+
+ }
+
+
+
+
+
+ private String checkWater(long id) {
+ String name;
+ String family;
+ long lastwatered;
+ long waterfrec;
+ int height = 30;
+ long hoursTime = (new Date().getTime())/(1000*60*60);
+
+
+
+ try {
+ Cursor bonsai = bonsaidb.fetchBonsai(id);
+ startManagingCursor(bonsai);
+ name = bonsai.getString(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_NAME));
+ family = bonsai.getString(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_FAMILY));
+ lastwatered = bonsai.getInt(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_LAST_WATER));
+ height = bonsai.getInt(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_HEIGHT));
+
+ Cursor cfamily = familydb.fetchFamilybyName(family);
+ startManagingCursor(cfamily);
+ waterfrec = cfamily.getInt(cfamily.getColumnIndexOrThrow(FamilyDbUtil.KEY_WATER_FRECUENCY));
+
+
+
+
+ // LOGICA DE REGADO
+
+ if(lastwatered == 0) return ("Set water info on " + name);
+ else if(w.getTempMax() > 35) return("Water " + name + " 2 times with " + height/4 + " cl.");
+ else if(w.getTempMedia() < 0) return null;
+ else if((hoursTime - lastwatered) > waterfrec) return("Water " + name + " today once with " + height/2 +" cl.");
+ else return null;
+
+
+ } catch(Exception e) {
+ System.out.println(e.toString());
+ return null;
+ }
+
+
+ }
+
+
+
+
+
+ private void checkTemp(long id) {
+ try{
+ Cursor bonsai = bonsaidb.fetchBonsai(id);
+ startManagingCursor(bonsai);
+ String location = bonsai.getString(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_LOCALIZATION));
+ XmlParserSax saxparser = new XmlParserSax("http://www.google.com/ig/api?weather="+location);
+ weather = saxparser.parse();
+ w=weather.get(0);
+ System.out.println("La temperatura de w es " +w.getTempMax());
+
+ }catch(Exception e){
+ Toast tx;
+ System.out.println(e.toString());
+ tx = Toast.makeText(getApplicationContext(), "Conexion is not aviable", Toast.LENGTH_LONG);
+ tx.show();
+
+
+ }
+
+ }
+
+}
diff --git a/src/bonsai/app/alarm/alarmChecker.java b/src/bonsai/app/alarm/alarmChecker.java
new file mode 100644
index 0000000..8c38ef7
--- /dev/null
+++ b/src/bonsai/app/alarm/alarmChecker.java
@@ -0,0 +1,113 @@
+package bonsai.app.alarm;
+
+
+import bonsai.app.*;
+
+import android.app.NotificationManager;
+import android.app.Service;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+
+import android.app.Notification;
+
+import android.app.PendingIntent;
+
+import android.util.Log;
+
+
+
+public class alarmChecker extends Service implements Runnable {
+
+public static final int APP_ID_NOTIFICATION = 0;
+private NotificationManager mManager;
+
+
+private final int MSG_KEY_NOTIFOFF = 1;
+private final int MSG_KEY_NOTIFOK = 2;
+
+/**
+ * Método del hilo asÃncrono, que revisa las tareas y comprueba si hay alguna para mostrar
+ */
+public void run() {
+
+ CheckRiego c = null;
+ boolean b=c.check();
+ b=true;
+
+ Log.e("alarmChecker", "se comprobarion las tareas y el resultado fué " + b);
+ if (b==false)
+ //Respondemos que no hay tareas
+ handler.sendEmptyMessage(MSG_KEY_NOTIFOFF);
+ else{
+ handler.sendEmptyMessage(MSG_KEY_NOTIFOK);
+ }
+}
+
+
+
+/**
+ * Procesa eventos desde el hilo run
+ */
+private Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what){
+ case MSG_KEY_NOTIFOK: //Hemos obtenido que hay tareas pendientes
+ Notificar();
+ break;
+ }
+ }
+};
+
+/**
+ * prepara y lanza la notificacion
+ */
+private void Notificar() {
+
+ //Prepara la actividad que se abrira cuando el usuario pulse la notificacion
+ Intent intentNot = new Intent(this, TaskActivity.class);
+
+ //Prepara la notificacion
+ Notification notification = new Notification(R.drawable.ic_launcher, "Hay cambios", System.currentTimeMillis());
+ notification.setLatestEventInfo(this, getString(R.string.app_name), "Notificación de Bonsai Cares",
+ PendingIntent.getActivity(this.getBaseContext(), 0, intentNot, PendingIntent.FLAG_CANCEL_CURRENT));
+
+ //Le añade sonido
+ notification.defaults |= Notification.DEFAULT_SOUND;
+ //Le añade vibración
+ notification.defaults |= Notification.DEFAULT_VIBRATE;
+
+ //Le añade luz mediante LED
+ notification.defaults |= Notification.DEFAULT_LIGHTS;
+
+ //La notificación se detendrá cuando el usuario pulse en ella
+ notification.flags = Notification.FLAG_AUTO_CANCEL;
+
+ //Intenta establecer el color y el parpadeo de la bombilla lED
+ try
+ {
+ notification.ledARGB = 0xff00ff00;
+ notification.ledOnMS = 300;
+ notification.ledOffMS = 1000;
+ notification.flags |= Notification.FLAG_SHOW_LIGHTS;
+ }catch(Exception ex)
+ {
+ //Nothing
+ }
+
+ //Lanza la notificación
+ mManager.notify(APP_ID_NOTIFICATION, notification);
+
+ }
+
+@Override
+public IBinder onBind(Intent intent) {
+ // TODO Auto-generated method stub
+ return null;
+}
+
+ //interface events
+
+}
\ No newline at end of file
diff --git a/src/bonsai/app/weather/Weather.java b/src/bonsai/app/weather/Weather.java
index fdac95d..5c7b009 100644
--- a/src/bonsai/app/weather/Weather.java
+++ b/src/bonsai/app/weather/Weather.java
@@ -6,23 +6,28 @@ public class Weather {
private int tempMin;
private double tempMediaC;
private String icon;
- public int getTempMax() {
- return tempMax;
+ public double getTempMax() {
+ double t=(tempMax-32)/1.8;
+ return t;
}
public void setTempMax(int tempMax) {
this.tempMax = tempMax;
}
- public int getTempMin() {
- return tempMin;
+ public double getTempMin() {
+ double t=(tempMin-32)/1.8;
+ return t;
}
public void setTempMin(int tempMin) {
this.tempMin = tempMin;
}
- public double getTempMedia() {
- int tempMedia=(tempMax+tempMin)/2;
- tempMediaC=5*tempMedia/9;
- return tempMediaC;
+ public int getTempMedia() {
+ double t1=(tempMax-32)/1.8;
+ System.out.println("tempMax es "+tempMax+ " y en C es "+t1);
+ double t2=(tempMin-32)/1.8;
+ System.out.println("tempMin es "+tempMin+ " y en C es "+t2);
+ tempMediaC=(t1+t2)/2;
+ return (int) tempMediaC;
}
public String getIcon() {
diff --git a/src/bonsai/app/weather/XmlHandler.java b/src/bonsai/app/weather/XmlHandler.java
index 91a0569..3a3c8f8 100644
--- a/src/bonsai/app/weather/XmlHandler.java
+++ b/src/bonsai/app/weather/XmlHandler.java
@@ -33,7 +33,7 @@ public void startElement (String uri, String name, String qName, Attributes atts
if(qName.compareToIgnoreCase("high") == 0) {
int high = Integer.parseInt(atts.getValue(0));
System.out.println("High: " + high);
- weatherActual.setTempMin(high);
+ weatherActual.setTempMax(high);
}
if(qName.compareToIgnoreCase("icon") == 0) {
if(n>0){