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","10.1.1.4"};
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_item.setTitle("Start hokuyo");
65 protected void onDestroy() {
68 if (appDomain != null) {
73 if (manager != null) {
80 public void onCreate(Bundle savedInstanceState) {
81 super.onCreate(savedInstanceState);
82 setContentView(R.layout.hokuyo_view);
84 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
85 mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
87 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
88 mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
90 hokuyo_view = (HokuyoView) findViewById(R.id.hokuyo_view);
92 manager = new Manager(mgrs);
94 appDomain = new DomainApp();
98 public boolean onCreateOptionsMenu(Menu menu) {
99 getMenuInflater().inflate(R.menu.activity_main, menu);
105 public boolean onOptionsItemSelected (MenuItem item) {
106 System.out.println(item.getTitle());
108 if(item.getTitle().equals("Start speed")) {
109 accel = new HandleAccelerometer();
110 mSensorManager.registerListener(accel, mGravity, SensorManager.SENSOR_DELAY_UI);
111 if (motion_speed == null)
112 motion_speed = new MotionSpeedPublish(mGravity.getMaximumRange(),appDomain);
113 motion_speed.start();
115 item.setTitle("Stop speed");
117 else if (item.getTitle().equals("Stop speed")) {
118 mSensorManager.unregisterListener(accel);
119 motion_speed.cancel();
120 item.setTitle("Start speed");
122 else if (item.getTitle().equals("Start hokuyo")) {
123 if (hokuyo_scan == null)
124 hokuyo_scan = new HokuyoScanSubscribe(appDomain, hokuyo_view);
126 hokuyo_view.run(true);
128 item.setTitle("Stop hokuyo");
130 else if (item.getTitle().equals("Stop hokuyo")) {
131 hokuyo_view.run(false);
132 hokuyo_scan.cancel();
133 item.setTitle("Start hokuyo");
135 else if (item.getTitle().equals("Lift up")) {
138 else if (item.getTitle().equals("Lift down")) {
141 else if (item.getTitle().equals("Magnet on")) {
144 else if (item.getTitle().equals("Magnet off")) {
147 else if (item.getTitle().equals("Exit")) {
154 private class HandleAccelerometer implements SensorEventListener {
157 public void onAccuracyChanged(Sensor sensor, int accuracy) {}
160 public void onSensorChanged(SensorEvent event) {
161 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
162 if (motion_speed != null)
163 motion_speed.setSpeed(event.values[0], event.values[1]);