1 package org.ocera.orte.demo;
3 import org.ocera.orte.DomainApp;
4 import org.ocera.orte.Manager;
6 import android.app.Activity;
7 import android.content.Context;
8 import android.content.pm.ActivityInfo;
9 import android.hardware.Sensor;
10 import android.hardware.SensorEvent;
11 import android.hardware.SensorEventListener;
12 import android.hardware.SensorManager;
13 import android.os.Bundle;
14 import android.os.PowerManager;
15 import android.os.PowerManager.WakeLock;
16 import android.view.Menu;
17 import android.view.MenuItem;
19 public class MainActivity extends Activity {
21 private Manager manager = null;
22 private String[] mgrs = {"192.168.1.5","192.168.1.8","192.168.1.29","10.1.1.1"};
23 private MotionSpeedPublish motion_speed_publ = null;
24 private MotionSpeedSubscribe motion_speed_subs = 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_publ_item = null;
34 private MenuItem speed_subs_item = null;
35 private MenuItem hokuyo_item = null;
38 System.loadLibrary("jorte");
42 protected void onResume() {
49 protected void onPause() {
52 if (motion_speed_publ != null && !motion_speed_publ.isCancelled()) {
53 motion_speed_publ.cancel();
54 mSensorManager.unregisterListener(accel);
55 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
56 speed_publ_item.setTitle("Start motion control");
59 if (motion_speed_subs != null && !motion_speed_subs.isCancelled()) {
60 hokuyo_view.runMotion(false);
61 motion_speed_subs.cancel();
62 hokuyo_view.invalidate();
63 speed_subs_item.setTitle("Start motion monitor");
66 if (hokuyo_scan != null && !hokuyo_scan.isCancelled()) {
67 hokuyo_view.run(false);
69 hokuyo_view.invalidate();
70 hokuyo_item.setTitle("Start LRF");
77 protected void onDestroy() {
80 if (appDomain != null) {
85 if (manager != null) {
92 public void onCreate(Bundle savedInstanceState) {
93 super.onCreate(savedInstanceState);
94 setContentView(R.layout.hokuyo_view);
96 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
97 mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
99 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
100 mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
102 hokuyo_view = (HokuyoView) findViewById(R.id.hokuyo_view);
104 manager = new Manager(mgrs);
106 appDomain = new DomainApp();
110 public boolean onCreateOptionsMenu(Menu menu) {
111 getMenuInflater().inflate(R.menu.activity_main, menu);
117 public boolean onOptionsItemSelected (MenuItem item) {
118 System.out.println(item.getTitle());
120 if(item.getTitle().equals("Start motion control")) {
121 accel = new HandleAccelerometer();
122 mSensorManager.registerListener(accel, mGravity, SensorManager.SENSOR_DELAY_GAME);
123 if (motion_speed_publ == null)
124 motion_speed_publ = new MotionSpeedPublish(mGravity.getMaximumRange(),appDomain);
125 motion_speed_publ.start();
126 speed_publ_item = item;
127 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
128 item.setTitle("Stop motion control");
130 else if (item.getTitle().equals("Stop motion control")) {
131 mSensorManager.unregisterListener(accel);
132 motion_speed_publ.cancel();
133 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
134 item.setTitle("Start motion control");
136 else if (item.getTitle().equals("Start motion monitor")) {
137 if (motion_speed_subs == null)
138 motion_speed_subs = new MotionSpeedSubscribe(appDomain, hokuyo_view);
139 motion_speed_subs.start();
140 hokuyo_view.runMotion(true);
141 hokuyo_view.invalidate();
142 speed_subs_item = item;
143 item.setTitle("Stop motion monitor");
145 else if (item.getTitle().equals("Stop motion monitor")) {
146 hokuyo_view.runMotion(false);
147 motion_speed_subs.cancel();
148 hokuyo_view.invalidate();
149 item.setTitle("Start motion monitor");
151 else if (item.getTitle().equals("Start LRF")) {
152 if (hokuyo_scan == null)
153 hokuyo_scan = new HokuyoScanSubscribe(appDomain, hokuyo_view);
155 hokuyo_view.run(true);
156 hokuyo_view.invalidate();
158 item.setTitle("Stop LRF");
160 else if (item.getTitle().equals("Stop LRF")) {
161 hokuyo_view.run(false);
162 hokuyo_scan.cancel();
163 hokuyo_view.invalidate();
164 item.setTitle("Start LRF");
166 else if (item.getTitle().equals("Lift up")) {
169 else if (item.getTitle().equals("Lift down")) {
172 else if (item.getTitle().equals("Magnet on")) {
175 else if (item.getTitle().equals("Magnet off")) {
178 else if (item.getTitle().equals("Exit")) {
185 private class HandleAccelerometer implements SensorEventListener {
188 public void onAccuracyChanged(Sensor sensor, int accuracy) {}
191 public void onSensorChanged(SensorEvent event) {
192 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
193 if (motion_speed_publ != null)
194 motion_speed_publ.setSpeed(event.values[0], event.values[1]);