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.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;
23 public class MainActivity extends Activity {
24 private Dialog voltageDialog = null;
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;
43 System.loadLibrary("jorte");
47 protected void onResume() {
54 protected void onPause() {
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");
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");
71 if (hokuyo_scan != null && !hokuyo_scan.isCancelled()) {
72 hokuyo_view.run(false);
74 hokuyo_view.invalidate();
75 hokuyo_item.setTitle("Start LRF");
82 protected void onDestroy() {
85 if (appDomain != null) {
90 if (manager != null) {
97 public void onCreate(Bundle savedInstanceState) {
98 super.onCreate(savedInstanceState);
99 setContentView(R.layout.hokuyo_view);
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);
106 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
107 mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
109 hokuyo_view = (HokuyoView) findViewById(R.id.hokuyo_view);
111 manager = new Manager(mgrs);
113 appDomain = new DomainApp();
117 public boolean onCreateOptionsMenu(Menu menu) {
118 getMenuInflater().inflate(R.menu.activity_main, menu);
124 public boolean onOptionsItemSelected (MenuItem item) {
125 System.out.println(item.getTitle());
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");
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");
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");
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");
158 else if (item.getTitle().equals("Start LRF")) {
159 if (hokuyo_scan == null)
160 hokuyo_scan = new HokuyoScanSubscribe(appDomain, hokuyo_view);
162 hokuyo_view.run(true);
163 hokuyo_view.invalidate();
165 item.setTitle("Stop LRF");
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");
173 else if (item.getTitle().equals("Lift up")) {
176 else if (item.getTitle().equals("Lift down")) {
179 else if (item.getTitle().equals("Magnet on")) {
182 else if (item.getTitle().equals("Magnet off")) {
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() {
190 public void onClick(View arg0) {
191 voltageDialog.dismiss();
194 voltageDialog.show();
196 else if (item.getTitle().equals("Exit")) {
203 private class HandleAccelerometer implements SensorEventListener {
206 public void onAccuracyChanged(Sensor sensor, int accuracy) {}
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]);