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","10.1.1.1"};
23 private MotionSpeedPublish motion_speed = null;
24 private HokuyoScanSubscribe hokuyo_scan = null;
25 private SensorManager mSensorManager = null;
26 private Sensor mGravity = null;
27 private SensorEventListener accel = null;
28 private PowerManager mPowerManager = null;
29 private WakeLock mWakeLock = null;
30 private DomainApp appDomain = null;
31 private HokuyoView hokuyo_view = null;
32 private MenuItem speed_item = null;
33 private MenuItem hokuyo_item = null;
36 System.loadLibrary("jorte");
40 protected void onResume() {
47 protected void onPause() {
50 if (motion_speed != null && !motion_speed.isCancelled()) {
51 motion_speed.cancel();
52 mSensorManager.unregisterListener(accel);
53 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
54 speed_item.setTitle("Start speed");
57 if (hokuyo_scan != null && !hokuyo_scan.isCancelled()) {
58 hokuyo_view.run(false);
60 hokuyo_view.invalidate();
61 hokuyo_item.setTitle("Start hokuyo");
68 protected void onDestroy() {
71 if (appDomain != null) {
76 if (manager != null) {
83 public void onCreate(Bundle savedInstanceState) {
84 super.onCreate(savedInstanceState);
85 setContentView(R.layout.hokuyo_view);
87 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
88 mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
90 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
91 mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
93 hokuyo_view = (HokuyoView) findViewById(R.id.hokuyo_view);
95 manager = new Manager(mgrs);
97 appDomain = new DomainApp();
101 public boolean onCreateOptionsMenu(Menu menu) {
102 getMenuInflater().inflate(R.menu.activity_main, menu);
108 public boolean onOptionsItemSelected (MenuItem item) {
109 System.out.println(item.getTitle());
111 if(item.getTitle().equals("Start speed")) {
112 accel = new HandleAccelerometer();
113 mSensorManager.registerListener(accel, mGravity, SensorManager.SENSOR_DELAY_GAME);
114 if (motion_speed == null)
115 motion_speed = new MotionSpeedPublish(mGravity.getMaximumRange(),appDomain);
116 motion_speed.start();
118 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
119 item.setTitle("Stop speed");
121 else if (item.getTitle().equals("Stop speed")) {
122 mSensorManager.unregisterListener(accel);
123 motion_speed.cancel();
124 this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
125 item.setTitle("Start speed");
127 else if (item.getTitle().equals("Start hokuyo")) {
128 if (hokuyo_scan == null)
129 hokuyo_scan = new HokuyoScanSubscribe(appDomain, hokuyo_view);
131 hokuyo_view.run(true);
133 item.setTitle("Stop hokuyo");
135 else if (item.getTitle().equals("Stop hokuyo")) {
136 hokuyo_view.run(false);
137 hokuyo_scan.cancel();
138 hokuyo_view.invalidate();
139 item.setTitle("Start hokuyo");
141 else if (item.getTitle().equals("Lift up")) {
144 else if (item.getTitle().equals("Lift down")) {
147 else if (item.getTitle().equals("Magnet on")) {
150 else if (item.getTitle().equals("Magnet off")) {
153 else if (item.getTitle().equals("Exit")) {
160 private class HandleAccelerometer implements SensorEventListener {
163 public void onAccuracyChanged(Sensor sensor, int accuracy) {}
166 public void onSensorChanged(SensorEvent event) {
167 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
168 if (motion_speed != null)
169 motion_speed.setSpeed(event.values[0], event.values[1]);