1 package org.ocera.orte.demo;
3 import org.ocera.orte.DomainApp;
4 import org.ocera.orte.Manager;
5 import org.ocera.orte.types.DomainProp;
6 import org.ocera.orte.types.ORTEConstant;
8 import android.app.Activity;
9 import android.content.Context;
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;
20 public class MainActivity extends Activity {
22 private Manager manager = null;
23 private String[] mgrs = {"192.168.1.5","192.168.1.8"};
24 private MotionSpeedPublish motion_speed = null;
25 private HokuyoScanSubscribe hokuyo_scan = null;
26 private SensorManager mSensorManager = null;
27 private Sensor mGravity = null;
28 private SensorEventListener accel = null;
29 private PowerManager mPowerManager = null;
30 private WakeLock mWakeLock = null;
31 private DomainApp appDomain = null;
32 private HokuyoView hokuyo_view = null;
33 private MenuItem speed_item = null;
34 private MenuItem hokuyo_item = null;
37 System.loadLibrary("jorte");
41 protected void onResume() {
48 protected void onPause() {
51 if (motion_speed != null && !motion_speed.isCancelled()) {
52 motion_speed.cancel();
53 mSensorManager.unregisterListener(accel);
54 speed_item.setTitle("Start speed");
57 if (hokuyo_scan != null && !hokuyo_scan.isCancelled()) {
58 hokuyo_view.run(false);
60 hokuyo_item.setTitle("Start hokuyo");
67 protected void onDestroy() {
70 if (appDomain != null) {
75 if (manager != null) {
82 public void onCreate(Bundle savedInstanceState) {
83 super.onCreate(savedInstanceState);
84 setContentView(R.layout.hokuyo_view);
86 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
87 mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
89 mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
90 mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
92 hokuyo_view = (HokuyoView) findViewById(R.id.hokuyo_view);
94 manager = new Manager(mgrs);
96 MyEvents events = new MyEvents();
97 appDomain = new DomainApp(ORTEConstant.ORTE_DEFAULT_DOMAIN,
98 DomainProp.defaultPropsCreate(),
104 public boolean onCreateOptionsMenu(Menu menu) {
105 getMenuInflater().inflate(R.menu.activity_main, menu);
111 public boolean onOptionsItemSelected (MenuItem item) {
112 System.out.println(item.getTitle());
114 if(item.getTitle().equals("Start speed")) {
115 accel = new HandleAccelerometer();
116 mSensorManager.registerListener(accel, mGravity, SensorManager.SENSOR_DELAY_UI);
117 if (motion_speed == null)
118 motion_speed = new MotionSpeedPublish(mGravity.getMaximumRange(),appDomain);
119 motion_speed.start();
121 item.setTitle("Stop speed");
123 else if (item.getTitle().equals("Stop speed")) {
124 mSensorManager.unregisterListener(accel);
125 motion_speed.cancel();
126 item.setTitle("Start speed");
128 else if (item.getTitle().equals("Start hokuyo")) {
129 if (hokuyo_scan == null)
130 hokuyo_scan = new HokuyoScanSubscribe(appDomain, hokuyo_view);
132 hokuyo_view.run(true);
134 item.setTitle("Stop hokuyo");
136 else if (item.getTitle().equals("Stop hokuyo")) {
137 hokuyo_view.run(false);
138 hokuyo_scan.cancel();
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]);