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