]> rtime.felk.cvut.cz Git - orte.git/blob - orte/Robot_Demo/src/org/ocera/orte/demo/MainActivity.java
ROBOT_DEMO: prepare for voltage monitor
[orte.git] / orte / Robot_Demo / src / org / ocera / orte / demo / MainActivity.java
1 package org.ocera.orte.demo;
2
3 import org.ocera.orte.DomainApp;
4 import org.ocera.orte.Manager;
5
6 import android.app.Activity;
7 import android.app.Dialog;
8 import android.content.Context;
9 import android.content.pm.ActivityInfo;
10 import android.hardware.Sensor;
11 import android.hardware.SensorEvent;
12 import android.hardware.SensorEventListener;
13 import android.hardware.SensorManager;
14 import android.os.Bundle;
15 import android.os.PowerManager;
16 import android.os.PowerManager.WakeLock;
17 import android.view.Menu;
18 import android.view.MenuItem;
19 import android.view.View;
20 import android.view.View.OnClickListener;
21 import android.widget.Button;
22  
23 public class MainActivity extends Activity {
24         private Dialog voltageDialog = null;
25         
26         private Manager manager = null;
27     private String[] mgrs = {"192.168.1.5","192.168.1.8","192.168.1.29","10.1.1.1"};
28         private MotionSpeedPublish motion_speed_publ = null;
29         private MotionSpeedSubscribe motion_speed_subs = null;
30         private HokuyoScanSubscribe hokuyo_scan = null;
31     private SensorManager mSensorManager = null;
32     private Sensor mGravity = null;
33     private SensorEventListener accel = null;
34     private PowerManager mPowerManager = null;
35     private WakeLock mWakeLock = null;
36     private DomainApp appDomain = null;
37     private HokuyoView hokuyo_view = null;
38     private MenuItem speed_publ_item = null;
39     private MenuItem speed_subs_item = null;
40     private MenuItem hokuyo_item = null;
41
42     static {
43         System.loadLibrary("jorte");     
44     }
45
46     @Override
47     protected void onResume() {
48         super.onResume();
49
50         mWakeLock.acquire();
51     }
52
53     @Override
54     protected void onPause() {
55         super.onPause();
56         
57         if (motion_speed_publ != null && !motion_speed_publ.isCancelled()) {
58                 motion_speed_publ.cancel();
59             mSensorManager.unregisterListener(accel);
60             this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
61                 speed_publ_item.setTitle("Start motion control");
62         }
63         
64         if (motion_speed_subs != null && !motion_speed_subs.isCancelled()) {
65                 hokuyo_view.runMotion(false);
66                 motion_speed_subs.cancel();
67                 hokuyo_view.invalidate();
68                 speed_subs_item.setTitle("Start motion monitor");
69         }
70
71         if (hokuyo_scan != null && !hokuyo_scan.isCancelled()) {
72                         hokuyo_view.run(false);
73                         hokuyo_scan.cancel();
74                         hokuyo_view.invalidate();
75                         hokuyo_item.setTitle("Start LRF");
76         }
77         
78         mWakeLock.release();
79     }
80     
81     @Override
82     protected void onDestroy() {
83         super.onDestroy();
84         
85         if (appDomain != null) {
86                 appDomain.destroy();
87                 appDomain = null;
88         }
89         
90         if (manager != null) {
91                 manager.destroy();
92                 manager = null;
93         }
94     }
95         
96         @Override
97     public void onCreate(Bundle savedInstanceState) {
98         super.onCreate(savedInstanceState);
99         setContentView(R.layout.hokuyo_view);
100         
101         voltageDialog = new Dialog(this,R.style.voltage_dialog);
102         voltageDialog.setCancelable(false);
103         mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
104         mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
105         
106         mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
107         mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
108         
109         hokuyo_view = (HokuyoView) findViewById(R.id.hokuyo_view);
110         
111         manager = new Manager(mgrs);
112
113         appDomain = new DomainApp();
114     }
115     
116         @Override
117         public boolean onCreateOptionsMenu(Menu menu) {
118                 getMenuInflater().inflate(R.menu.activity_main, menu);
119
120                 return true;
121         }
122         
123         @Override
124         public boolean onOptionsItemSelected (MenuItem item) {
125                 System.out.println(item.getTitle());
126                 
127                 if(item.getTitle().equals("Start motion control")) {
128                         accel = new HandleAccelerometer();
129                         mSensorManager.registerListener(accel, mGravity, SensorManager.SENSOR_DELAY_GAME);
130                         if (motion_speed_publ == null)
131                                 motion_speed_publ = new MotionSpeedPublish(mGravity.getMaximumRange(),appDomain);
132                         motion_speed_publ.start();
133                         speed_publ_item = item;
134                         this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
135                         item.setTitle("Stop motion control");
136                 }
137                 else if (item.getTitle().equals("Stop motion control")) {
138                         mSensorManager.unregisterListener(accel);
139                         motion_speed_publ.cancel();
140                         this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
141                         item.setTitle("Start motion control");
142                 }
143                 else if (item.getTitle().equals("Start motion monitor")) {
144                         if (motion_speed_subs == null)
145                                 motion_speed_subs = new MotionSpeedSubscribe(appDomain, hokuyo_view);
146                         motion_speed_subs.start();
147                         hokuyo_view.runMotion(true);
148                         hokuyo_view.invalidate();
149                         speed_subs_item = item;
150                         item.setTitle("Stop motion monitor");
151                 }
152                 else if (item.getTitle().equals("Stop motion monitor")) {
153                         hokuyo_view.runMotion(false);
154                         motion_speed_subs.cancel();
155                         hokuyo_view.invalidate();
156                         item.setTitle("Start motion monitor");
157                 }
158                 else if (item.getTitle().equals("Start LRF")) {
159                         if (hokuyo_scan == null)
160                                 hokuyo_scan = new HokuyoScanSubscribe(appDomain, hokuyo_view);
161                         hokuyo_scan.start();
162                         hokuyo_view.run(true);
163                         hokuyo_view.invalidate();
164                         hokuyo_item = item;
165                         item.setTitle("Stop LRF");
166                 }
167                 else if (item.getTitle().equals("Stop LRF")) {
168                         hokuyo_view.run(false);
169                         hokuyo_scan.cancel();
170                         hokuyo_view.invalidate();
171                         item.setTitle("Start LRF");
172                 }
173                 else if (item.getTitle().equals("Lift up")) {
174                         
175                 }
176                 else if (item.getTitle().equals("Lift down")) {
177                         
178                 }
179                 else if (item.getTitle().equals("Magnet on")) {
180                         
181                 }
182                 else if (item.getTitle().equals("Magnet off")) {
183                         
184                 }
185                 else if (item.getTitle().equals("Voltage monitor")) {
186                         voltageDialog.setContentView(R.layout.status_dialog);
187                         Button okButton = (Button)voltageDialog.findViewById(R.id.button1);
188                         okButton.setOnClickListener(new OnClickListener() {
189                                 @Override
190                                 public void onClick(View arg0) {
191                                         voltageDialog.dismiss();
192                                 }
193                         });
194                         voltageDialog.show();
195                 }
196                 else if (item.getTitle().equals("Exit")) {
197                         finish();
198                 }
199                 
200                 return true;
201         }
202         
203     private class HandleAccelerometer implements SensorEventListener {
204
205         @Override
206         public void onAccuracyChanged(Sensor sensor, int accuracy) {}
207
208         @Override
209         public void onSensorChanged(SensorEvent event) {
210                  if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
211                          if (motion_speed_publ != null)
212                                  motion_speed_publ.setSpeed(event.values[0], event.values[1]);
213                  }
214         }
215     }
216 }