--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:layout_weight="0" >
+
+ <RelativeLayout
+ android:id="@+id/strut"
+ android:layout_width="10dip"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true" >
+
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/callsign_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_toLeftOf="@+id/strut" >
+
+ <TextView
+ android:id="@+id/callsign_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/callsign_label" />
+
+ <TextView
+ android:id="@+id/callsign_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@id/callsign_label"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/state_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_toRightOf="@+id/strut" >
+
+ <TextView
+ android:id="@+id/state_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/state_label" />
+
+ <TextView
+ android:id="@+id/state_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/state_label"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/speed_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_below="@+id/callsign_container"
+ android:layout_toLeftOf="@+id/strut" >
+
+ <TextView
+ android:id="@+id/speed_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/speed_label" />
+
+ <TextView
+ android:id="@+id/speed_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/speed_label"
+ android:layout_toLeftOf="@+id/speed_units"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <TextView
+ android:id="@+id/speed_units"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignBaseline="@id/speed_value"
+ android:layout_alignParentRight="true"
+ android:layout_below="@id/speed_label"
+ android:gravity="right"
+ android:paddingLeft="10dip"
+ android:text="@string/speed_units"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/accel_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/state_container"
+ android:layout_toRightOf="@+id/strut" >
+
+ <TextView
+ android:id="@+id/accel_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/accel_label" />
+
+ <TextView
+ android:id="@+id/accel_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/accel_label"
+ android:layout_toLeftOf="@+id/accel_units"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <TextView
+ android:id="@+id/accel_units"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignBaseline="@+id/accel_value"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/accel_label"
+ android:gravity="right"
+ android:paddingLeft="10dip"
+ android:text="@string/accel_units"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/range_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_below="@+id/speed_container"
+ android:layout_toLeftOf="@+id/strut" >
+
+ <TextView
+ android:id="@+id/range_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/range_label" />
+
+ <TextView
+ android:id="@+id/range_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/range_label"
+ android:layout_toLeftOf="@+id/range_units"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <TextView
+ android:id="@+id/range_units"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignBaseline="@+id/range_value"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/range_label"
+ android:gravity="right"
+ android:paddingLeft="10dip"
+ android:text="@string/range_units"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/altitude_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@id/accel_container"
+ android:layout_toRightOf="@id/strut" >
+
+ <TextView
+ android:id="@+id/altitude_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/altitude_label" />
+
+ <TextView
+ android:id="@+id/altitude_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/altitude_label"
+ android:layout_toLeftOf="@+id/altitude_units"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <TextView
+ android:id="@+id/altitude_units"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignBaseline="@+id/altitude_value"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/altitude_label"
+ android:gravity="right"
+ android:paddingLeft="10dip"
+ android:text="@string/altitude_units"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/azimuth_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:layout_below="@id/range_container"
+ android:layout_toLeftOf="@id/strut" >
+
+ <TextView
+ android:id="@+id/azimuth_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/azimuth_label" />
+
+ <TextView
+ android:id="@+id/azimuth_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/azimuth_label"
+ android:layout_toLeftOf="@+id/azimuth_units"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <TextView
+ android:id="@+id/azimuth_units"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/azimuth_label"
+ android:gravity="right"
+ android:paddingLeft="10dip"
+ android:text="@string/azimuth_units"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/bearing_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/altitude_container"
+ android:layout_toRightOf="@+id/strut" >
+
+ <TextView
+ android:id="@+id/bearing_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/bearing_label" />
+
+ <TextView
+ android:id="@+id/bearing_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/bearing_label"
+ android:layout_toLeftOf="@+id/bearing_units"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <TextView
+ android:id="@+id/bearing_units"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/bearing_label"
+ android:gravity="right"
+ android:paddingLeft="10dip"
+ android:text="@string/bearing_units"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/latitude_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/azimuth_container" >
+
+ <TextView
+ android:id="@+id/latitude_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/latitude_label" />
+
+ <TextView
+ android:id="@+id/latitude_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/latitude_label"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ </RelativeLayout>
+
+ <RelativeLayout
+ android:id="@+id/longitude_container"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/latitude_container" >
+
+ <TextView
+ android:id="@+id/longitude_label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/longitude_label" />
+
+ <TextView
+ android:id="@+id/longitude_value"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentRight="true"
+ android:layout_below="@+id/longitude_label"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ </RelativeLayout>
+
+ <TextView
+ android:id="@+id/text"
+ android:layout_width="fill_parent"
+ android:layout_height="0dip"
+ android:layout_alignParentBottom="true"
+ android:layout_below="@id/longitude_container"
+ android:gravity="bottom"
+ android:scrollbars="vertical"
+ android:textSize="7dp"
+ android:typeface="monospace" />
+
+ </RelativeLayout>
// Layout Views
private TextView mTitle;
private TextView mSerialView;
+ private TextView mCallsignView;
+ private TextView mStateView;
+ private TextView mSpeedView;
+ private TextView mAccelView;
+ private TextView mRangeView;
+ private TextView mAltitudeView;
+ private TextView mAzimuthView;
+ private TextView mBearingView;
+ private TextView mLatitudeView;
+ private TextView mLongitudeView;
// Service
private boolean mIsBound = false;
}
break;
case MSG_TELEMETRY:
+ ad.update_ui((AltosState) msg.obj);
// TEST!
ad.mSerialView.setText(Dumper.dump(msg.obj));
break;
}
}
+ void update_ui(AltosState state) {
+ mCallsignView.setText(state.data.callsign);
+ mStateView.setText(state.data.state());
+ double speed = state.speed;
+ if (!state.ascent)
+ speed = state.baro_speed;
+ mSpeedView.setText(String.format("%6.0f", speed));
+ mAccelView.setText(String.format("%6.0f", state.acceleration));
+ mRangeView.setText(String.format("%6.0f", state.range));
+ mAltitudeView.setText(String.format("%6.0f", state.height));
+ mAzimuthView.setText(String.format("%3.0f", state.elevation));
+ if (state.from_pad != null)
+ mBearingView.setText(String.format("%3.0f", state.from_pad.bearing));
+ mLatitudeView.setText(pos(state.gps.lat, "N", "S"));
+ mLongitudeView.setText(pos(state.gps.lon, "W", "E"));
+ }
+
+ String pos(double p, String pos, String neg) {
+ String h = pos;
+ if (p < 0) {
+ h = neg;
+ p = -p;
+ }
+ int deg = (int) Math.floor(p);
+ double min = (p - Math.floor(p)) * 60.0;
+ return String.format("%s %d° %9.6f", h, deg, min);
+ }
@Override
public void onCreate(Bundle savedInstanceState) {
// Set up the window layout
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
- setContentView(R.layout.main);
+ //setContentView(R.layout.main);
+ setContentView(R.layout.altosdroid);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
// Set up the custom title
mTitle = (TextView) findViewById(R.id.title_right_text);
// Set up the temporary Text View
- mSerialView = (TextView) findViewById(R.id.in);
+ mSerialView = (TextView) findViewById(R.id.text);
mSerialView.setMovementMethod(new ScrollingMovementMethod());
mSerialView.setClickable(false);
mSerialView.setLongClickable(false);
+ mCallsignView = (TextView) findViewById(R.id.callsign_value);
+ mStateView = (TextView) findViewById(R.id.state_value);
+ mSpeedView = (TextView) findViewById(R.id.speed_value);
+ mAccelView = (TextView) findViewById(R.id.accel_value);
+ mRangeView = (TextView) findViewById(R.id.range_value);
+ mAltitudeView = (TextView) findViewById(R.id.altitude_value);
+ mAzimuthView = (TextView) findViewById(R.id.azimuth_value);
+ mBearingView = (TextView) findViewById(R.id.bearing_value);
+ mLatitudeView = (TextView) findViewById(R.id.latitude_value);
+ mLongitudeView = (TextView) findViewById(R.id.longitude_value);
+
// Get local Bluetooth adapter
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();