]> rtime.felk.cvut.cz Git - orte.git/blob - orte/Robot_Demo/src/org/ocera/orte/demo/MainActivity.java
ROBOT_DEMO: be less verbose
[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 import org.ocera.orte.types.DomainProp;
6 import org.ocera.orte.types.ORTEConstant;
7
8 import android.app.Activity;
9 import android.content.Context;
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  
20 public class MainActivity extends Activity {
21         
22         private Manager manager = null;
23     private String[] mgrs = {"192.168.1.5","192.168.1.8"};
24         private MotionSpeedPublish motion_speed = null;
25         private HokuyoScanSubscribe hokuyo_scan = null;
26     private SensorManager mSensorManager = null;
27     private Sensor mGravity = null;
28     private SensorEventListener accel = null;
29     private PowerManager mPowerManager = null;
30     private WakeLock mWakeLock = null;
31     private DomainApp appDomain = null;
32     private HokuyoView hokuyo_view = null;
33     private MenuItem speed_item = null;
34     private MenuItem hokuyo_item = null;
35
36     static {
37         System.loadLibrary("jorte");     
38     }
39
40     @Override
41     protected void onResume() {
42         super.onResume();
43
44         mWakeLock.acquire();
45     }
46
47     @Override
48     protected void onPause() {
49         super.onPause();
50         
51         if (motion_speed != null && !motion_speed.isCancelled()) {
52                 motion_speed.cancel();
53             mSensorManager.unregisterListener(accel);
54                 speed_item.setTitle("Start speed");
55         }
56
57         if (hokuyo_scan != null && !hokuyo_scan.isCancelled()) {
58                         hokuyo_view.run(false);
59                         hokuyo_scan.cancel();
60                         hokuyo_item.setTitle("Start hokuyo");
61         }
62         
63         mWakeLock.release();
64     }
65     
66     @Override
67     protected void onDestroy() {
68         super.onDestroy();
69         
70         if (appDomain != null) {
71                 appDomain.destroy();
72                 appDomain = null;
73         }
74         
75         if (manager != null) {
76                 manager.destroy();
77                 manager = null;
78         }
79     }
80         
81     @Override
82     public void onCreate(Bundle savedInstanceState) {
83         super.onCreate(savedInstanceState);
84         setContentView(R.layout.hokuyo_view);
85         
86         mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
87         mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
88         
89         mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
90         mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
91         
92         hokuyo_view = (HokuyoView) findViewById(R.id.hokuyo_view);
93         
94         manager = new Manager(mgrs);
95
96         MyEvents events = new MyEvents();
97         appDomain = new DomainApp(ORTEConstant.ORTE_DEFAULT_DOMAIN,
98                                                           DomainProp.defaultPropsCreate(),
99                                                           events,
100                                                           false);
101     }
102     
103         @Override
104         public boolean onCreateOptionsMenu(Menu menu) {
105                 getMenuInflater().inflate(R.menu.activity_main, menu);
106
107                 return true;
108         }
109         
110         @Override
111         public boolean onOptionsItemSelected (MenuItem item) {
112                 System.out.println(item.getTitle());
113                 
114                 if(item.getTitle().equals("Start speed")) {
115                         accel = new HandleAccelerometer();
116                         mSensorManager.registerListener(accel, mGravity, SensorManager.SENSOR_DELAY_UI);
117                         if (motion_speed == null)
118                                 motion_speed = new MotionSpeedPublish(mGravity.getMaximumRange(),appDomain);
119                         motion_speed.start();
120                         speed_item = item;
121                         item.setTitle("Stop speed");
122                 }
123                 else if (item.getTitle().equals("Stop speed")) {
124                         mSensorManager.unregisterListener(accel);
125                         motion_speed.cancel();
126                         item.setTitle("Start speed");
127                 }
128                 else if (item.getTitle().equals("Start hokuyo")) {
129                         if (hokuyo_scan == null)
130                                 hokuyo_scan = new HokuyoScanSubscribe(appDomain, hokuyo_view);
131                         hokuyo_scan.start();
132                         hokuyo_view.run(true);
133                         hokuyo_item = item;
134                         item.setTitle("Stop hokuyo");
135                 }
136                 else if (item.getTitle().equals("Stop hokuyo")) {
137                         hokuyo_view.run(false);
138                         hokuyo_scan.cancel();
139                         item.setTitle("Start hokuyo");
140                 }
141                 else if (item.getTitle().equals("Lift up")) {
142                         
143                 }
144                 else if (item.getTitle().equals("Lift down")) {
145                         
146                 }
147                 else if (item.getTitle().equals("Magnet on")) {
148                         
149                 }
150                 else if (item.getTitle().equals("Magnet off")) {
151                         
152                 }
153                 else if (item.getTitle().equals("Exit")) {
154                         finish();
155                 }
156                 
157                 return true;
158         }
159         
160     private class HandleAccelerometer implements SensorEventListener {
161
162         @Override
163         public void onAccuracyChanged(Sensor sensor, int accuracy) {}
164
165         @Override
166         public void onSensorChanged(SensorEvent event) {
167                  if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
168                          if (motion_speed != null)
169                                  motion_speed.setSpeed(event.values[0], event.values[1]);
170                  }
171         }
172     }
173 }