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.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;
18 public class MainActivity extends Activity {
20 private Manager manager = null;
21 private String[] mgrs = {"192.168.1.5","192.168.1.8","10.1.1.1"};
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;
35 System.loadLibrary("jorte");
39 protected void onResume() {
46 protected void onPause() {
49 if (motion_speed != null && !motion_speed.isCancelled()) {
50 motion_speed.cancel();
51 mSensorManager.unregisterListener(accel);
52 speed_item.setTitle("Start speed");
55 if (hokuyo_scan != null && !hokuyo_scan.isCancelled()) {
56 hokuyo_view.run(false);
58 hokuyo_view.invalidate();
59 hokuyo_item.setTitle("Start hokuyo");
66 protected void onDestroy() {
69 if (appDomain != null) {
74 if (manager != null) {
81 public void onCreate(Bundle savedInstanceState) {
82 super.onCreate(savedInstanceState);
83 setContentView(R.layout.hokuyo_view);
85 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
86 mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
88 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
89 mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
91 hokuyo_view = (HokuyoView) findViewById(R.id.hokuyo_view);
93 manager = new Manager(mgrs);
95 appDomain = new DomainApp();
99 public boolean onCreateOptionsMenu(Menu menu) {
100 getMenuInflater().inflate(R.menu.activity_main, menu);
106 public boolean onOptionsItemSelected (MenuItem item) {
107 System.out.println(item.getTitle());
109 if(item.getTitle().equals("Start speed")) {
110 accel = new HandleAccelerometer();
111 mSensorManager.registerListener(accel, mGravity, SensorManager.SENSOR_DELAY_GAME);
112 if (motion_speed == null)
113 motion_speed = new MotionSpeedPublish(mGravity.getMaximumRange(),appDomain);
114 motion_speed.start();
116 item.setTitle("Stop speed");
118 else if (item.getTitle().equals("Stop speed")) {
119 mSensorManager.unregisterListener(accel);
120 motion_speed.cancel();
121 item.setTitle("Start speed");
123 else if (item.getTitle().equals("Start hokuyo")) {
124 if (hokuyo_scan == null)
125 hokuyo_scan = new HokuyoScanSubscribe(appDomain, hokuyo_view);
127 hokuyo_view.run(true);
129 item.setTitle("Stop hokuyo");
131 else if (item.getTitle().equals("Stop hokuyo")) {
132 hokuyo_view.run(false);
133 hokuyo_scan.cancel();
134 hokuyo_view.invalidate();
135 item.setTitle("Start hokuyo");
137 else if (item.getTitle().equals("Lift up")) {
140 else if (item.getTitle().equals("Lift down")) {
143 else if (item.getTitle().equals("Magnet on")) {
146 else if (item.getTitle().equals("Magnet off")) {
149 else if (item.getTitle().equals("Exit")) {
156 private class HandleAccelerometer implements SensorEventListener {
159 public void onAccuracyChanged(Sensor sensor, int accuracy) {}
162 public void onSensorChanged(SensorEvent event) {
163 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
164 if (motion_speed != null)
165 motion_speed.setSpeed(event.values[0], event.values[1]);