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.Handler;
16 import android.os.Message;
17 import android.os.PowerManager;
18 import android.os.PowerManager.WakeLock;
19 import android.view.Menu;
20 import android.view.MenuItem;
21 import android.view.View;
22 import android.view.View.OnClickListener;
23 import android.widget.Button;
24 import android.widget.EditText;
26 public class MainActivity extends Activity {
27 private Dialog voltageDialog = null;
28 static EditText voltage33 = null;
29 static EditText voltage50 = null;
30 static EditText voltage80 = null;
31 static EditText voltageBAT = null;
32 static Handler dialogHandler = new Handler() {
34 public void handleMessage(Message msg) {
35 double[] values = msg.getData().getDoubleArray("voltages");
37 if (voltage33 != null) {
38 voltage33.setText(Double.toString(values[0]));
40 if (voltage50 != null) {
41 voltage50.setText(Double.toString(values[1]));
43 if (voltage80 != null) {
44 voltage80.setText(Double.toString(values[2]));
46 if (voltageBAT != null) {
47 voltageBAT.setText(Double.toString(values[3]));
53 private Manager manager = null;
54 private String[] mgrs = {"192.168.1.5","192.168.1.8","192.168.1.29","10.1.1.1"};
55 private MotionSpeedPublish motion_speed_publ = null;
56 private MotionSpeedSubscribe motion_speed_subs = null;
57 private HokuyoScanSubscribe hokuyo_scan = null;
58 private PwrVoltageSubscribe pwr_voltage = null;
59 private SensorManager mSensorManager = null;
60 private Sensor mGravity = null;
61 private SensorEventListener accel = null;
62 private PowerManager mPowerManager = null;
63 private WakeLock mWakeLock = null;
64 private DomainApp appDomain = null;
65 private HokuyoView hokuyo_view = null;
66 private MenuItem speed_publ_item = null;
67 private MenuItem speed_subs_item = null;
68 private MenuItem hokuyo_item = null;
71 System.loadLibrary("jorte");
75 protected void onResume() {
82 protected void onPause() {
85 if (motion_speed_publ != null && !motion_speed_publ.isCancelled()) {
86 motion_speed_publ.cancel();
87 mSensorManager.unregisterListener(accel);
88 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
89 speed_publ_item.setTitle("Start motion control");
92 if (motion_speed_subs != null && !motion_speed_subs.isCancelled()) {
93 hokuyo_view.runMotion(false);
94 motion_speed_subs.cancel();
95 hokuyo_view.invalidate();
96 speed_subs_item.setTitle("Start motion monitor");
99 if (hokuyo_scan != null && !hokuyo_scan.isCancelled()) {
100 hokuyo_view.run(false);
101 hokuyo_scan.cancel();
102 hokuyo_view.invalidate();
103 hokuyo_item.setTitle("Start LRF");
106 if (pwr_voltage != null && !pwr_voltage.isCancelled()) {
107 if (voltageDialog.isShowing())
108 voltageDialog.dismiss();
109 pwr_voltage.cancel();
116 protected void onDestroy() {
119 if (appDomain != null) {
124 if (manager != null) {
131 public void onCreate(Bundle savedInstanceState) {
132 super.onCreate(savedInstanceState);
133 setContentView(R.layout.hokuyo_view);
135 voltageDialog = new Dialog(this,R.style.voltage_dialog);
136 voltageDialog.setCancelable(false);
137 voltageDialog.setContentView(R.layout.status_dialog);
138 Button okButton = (Button)voltageDialog.findViewById(R.id.button1);
139 okButton.setOnClickListener(new OnClickListener() {
141 public void onClick(View arg0) {
142 voltageDialog.dismiss();
143 pwr_voltage.cancel();
146 voltage33 = (EditText)voltageDialog.findViewById(R.id.editText1);
147 voltage50 = (EditText)voltageDialog.findViewById(R.id.editText2);
148 voltage80 = (EditText)voltageDialog.findViewById(R.id.editText3);
149 voltageBAT = (EditText)voltageDialog.findViewById(R.id.editText4);
151 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
152 mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
154 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
155 mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
157 hokuyo_view = (HokuyoView) findViewById(R.id.hokuyo_view);
159 manager = new Manager(mgrs);
161 appDomain = new DomainApp();
165 public boolean onCreateOptionsMenu(Menu menu) {
166 getMenuInflater().inflate(R.menu.activity_main, menu);
172 public boolean onOptionsItemSelected (MenuItem item) {
173 System.out.println(item.getTitle());
175 if(item.getTitle().equals("Start motion control")) {
176 accel = new HandleAccelerometer();
177 mSensorManager.registerListener(accel, mGravity, SensorManager.SENSOR_DELAY_GAME);
178 if (motion_speed_publ == null)
179 motion_speed_publ = new MotionSpeedPublish(mGravity.getMaximumRange(),appDomain);
180 motion_speed_publ.start();
181 speed_publ_item = item;
182 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
183 item.setTitle("Stop motion control");
185 else if (item.getTitle().equals("Stop motion control")) {
186 mSensorManager.unregisterListener(accel);
187 motion_speed_publ.cancel();
188 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
189 item.setTitle("Start motion control");
191 else if (item.getTitle().equals("Start motion monitor")) {
192 if (motion_speed_subs == null)
193 motion_speed_subs = new MotionSpeedSubscribe(appDomain, hokuyo_view);
194 motion_speed_subs.start();
195 hokuyo_view.runMotion(true);
196 hokuyo_view.invalidate();
197 speed_subs_item = item;
198 item.setTitle("Stop motion monitor");
200 else if (item.getTitle().equals("Stop motion monitor")) {
201 hokuyo_view.runMotion(false);
202 motion_speed_subs.cancel();
203 hokuyo_view.invalidate();
204 item.setTitle("Start motion monitor");
206 else if (item.getTitle().equals("Start LRF")) {
207 if (hokuyo_scan == null)
208 hokuyo_scan = new HokuyoScanSubscribe(appDomain, hokuyo_view);
210 hokuyo_view.run(true);
211 hokuyo_view.invalidate();
213 item.setTitle("Stop LRF");
215 else if (item.getTitle().equals("Stop LRF")) {
216 hokuyo_view.run(false);
217 hokuyo_scan.cancel();
218 hokuyo_view.invalidate();
219 item.setTitle("Start LRF");
221 else if (item.getTitle().equals("Lift up")) {
224 else if (item.getTitle().equals("Lift down")) {
227 else if (item.getTitle().equals("Magnet on")) {
230 else if (item.getTitle().equals("Magnet off")) {
233 else if (item.getTitle().equals("Voltage monitor")) {
234 if (pwr_voltage == null)
235 pwr_voltage = new PwrVoltageSubscribe(appDomain, dialogHandler);
237 voltageDialog.show();
239 else if (item.getTitle().equals("Exit")) {
246 private class HandleAccelerometer implements SensorEventListener {
249 public void onAccuracyChanged(Sensor sensor, int accuracy) {}
252 public void onSensorChanged(SensorEvent event) {
253 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
254 if (motion_speed_publ != null)
255 motion_speed_publ.setSpeed(event.values[0], event.values[1]);