Compare commits

...

17 Commits

Author SHA1 Message Date
89f8cbfcae WIP 2022-03-18 23:12:20 +02:00
4420af337d cleanups 2022-03-18 15:40:15 +02:00
6b6543ca3f display test positions 2022-03-18 15:22:35 +02:00
f554356af1 small cleanups 2022-03-18 15:03:34 +02:00
0fabbc73be comment line in order to move vehicle 2022-03-17 15:13:25 +02:00
85cf7ae6a4 Merge pull request 'Live Page' (#3) from feature/live into develop
Reviewed-on: #3
2022-03-17 08:20:52 +00:00
91a05ae4d1 start working on history 2022-03-17 10:18:23 +02:00
4f7def273f merge with develop 2022-03-16 16:49:04 +02:00
4439687405 display history 2022-03-16 16:40:34 +02:00
5349558ace display info when on move 2022-03-16 14:41:05 +02:00
b91931e833 small changes 2022-03-16 14:32:28 +02:00
201845da3a display info bubble 2022-03-16 10:54:41 +02:00
2334dc2e3c make marker move 2022-03-15 17:42:58 +02:00
4141b2ab8c Merge pull request '#SD-199 - rework SDMobileActivity and check live messages' (#2) from features/SD-199-livetab-check into develop
Reviewed-on: #2
2022-03-15 13:56:44 +00:00
6cfdb7c221 #SD-199 - rework SDMobileActivity and check live messages 2022-03-15 15:51:30 +02:00
3da44593dd display Markers 2022-03-15 14:45:18 +02:00
4ee6b53d97 Merge pull request '1st version that works' (#1) from initial-commit into develop
Reviewed-on: #1
2022-03-14 10:14:09 +00:00
28 changed files with 2365 additions and 2538 deletions

2
.gitignore vendored
View File

@ -184,5 +184,3 @@ $RECYCLE.BIN/
/.idea/misc.xml
/.idea
/.idea/modules.xml
/.idea/gradle.xml
/.idea/misc.xml

View File

@ -2,6 +2,7 @@ package com.safemobile.activities;
import java.util.ArrayList;
import com.google.android.gms.maps.GoogleMap;
import com.safemobile.lib.Vehicle;
import android.app.Activity;
@ -23,7 +24,7 @@ public abstract class AbstractLiveActivity extends AppCompatActivity {
public abstract void pollReceived(int position, double lat, double lng); // --> UpdatePoll
public abstract void vehicleStatusReceived(long imei, int opCode, int status); // --> UpdateOptions
public abstract void emergencyAlarmReceived(int position, double lat, double lng); // --> UpdateEmergencyAlarm
public abstract GoogleMap getMap(); // --> UpdateEmergencyAlarm
/** Misc */
public AbstractSDParentActivity getParentTab() {

View File

@ -1,9 +1,8 @@
package com.safemobile.activities;
import java.util.ArrayList;
import java.util.Hashtable;
import android.app.TabActivity;
import android.content.BroadcastReceiver;
import com.safemobile.bluetooth.BluetoothTether;
import com.safemobile.lib.AppParams;
import com.safemobile.lib.SM;
import com.safemobile.lib.SuperVehicle;
@ -11,43 +10,21 @@ import com.safemobile.lib.Vehicle;
import com.safemobile.services.TCPhandler;
import com.safemobile.services.TCPmsgParser;
import android.app.Activity;
import android.app.NotificationManager;
import android.app.TabActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.os.Handler;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import java.util.ArrayList;
import java.util.Hashtable;
@SuppressWarnings("deprecation")
public abstract class AbstractSDParentActivity extends TabActivity {
/** UI Elements */
public RelativeLayout layoutLoading;
public ImageView imageViewLoading;
/** Misc */
public Activity activity;
public Context context;
public NotificationManager mNotificationManager;
public boolean displayLogCat = true; // show logCat messages when TCP send was successful
public String imei, mess;
private static final boolean SHOULD_DISPLAY_LOGCAT = true; // show logCat messages when TCP send was successful
private String imei;
private String mess;
public int demoPosition = 0;
/** Lists */
public ArrayList<Vehicle> allVehicle = new ArrayList<Vehicle>();
public Hashtable<Long, SuperVehicle> SuperVehHash = new Hashtable<Long, SuperVehicle>();
public Hashtable<Long, Vehicle> VehHashbySc_id = new Hashtable<Long, Vehicle>();
/** Handler */
public Handler myHandler = new Handler();
/** BlueTooth Tether */
public BluetoothTether bluetoothTether = null;
/** Broadcast Receiver */
public BroadcastReceiver mReceiver = null;
private ArrayList<Vehicle> allVehicle = new ArrayList<>();
private Hashtable<Long, SuperVehicle> superVehHash = new Hashtable<>();
private Hashtable<Long, Vehicle> vehHashByScId = new Hashtable<>();
/** TCP */
protected TCPhandler tcp = null;
@ -66,9 +43,9 @@ public abstract class AbstractSDParentActivity extends TabActivity {
public Object getTCPState() {
// return true if tcp connection is on, false if not connected and null
if(tcp!=null && tcp.isConnectionUP)
if (tcp != null && tcp.isConnectionUP)
return "true";
else if(tcp!=null && !tcp.isConnectionUP)
else if (tcp != null)
return "false";
return null;
}
@ -84,83 +61,78 @@ public abstract class AbstractSDParentActivity extends TabActivity {
public abstract void updateDemoPosition();
public abstract void updateResultsPollInUi(String type);
public abstract double best_zoom(double LATMAX,double LATmin,double LNGMAX,double LNGmin);
public abstract double best_zoom(double latMax,double latMin,double lngMax,double lngMin);
/* SafeDispatch Mobile functions */
/** get Vehicles for an user id */
public boolean getVehicles(int userID)
{
if(tcp == null)
public boolean getVehicles(int userID) {
if (tcp == null)
return false;
boolean res = tcp.Write("0.0", "#21#" + AppParams.USERID + "#");
if(res && displayLogCat)
boolean res = tcp.Write("0.0", "#21#" + userID + "#");
if (res && SHOULD_DISPLAY_LOGCAT)
SM.Debug("Message (getVehs) sent to app server");
else
SM.Debug("Could not send message(getVehs)!!");
return res;
}
/** get vehicles Last Positions for an user id */
public boolean getLastPositions(int userID)
{
if(tcp == null)
public boolean getLastPositions(int userID) {
if (tcp == null)
return false;
boolean res = tcp.Write("0.0", "#25#" + userID + "#");
if(res && displayLogCat)
if (res && SHOULD_DISPLAY_LOGCAT)
SM.Debug("Message (getLastPOS) sent to app server");
else
SM.Debug("Could not send message(getLastSMS)!!");
return res;
}
/** set Enable/Disable a vehicle */
public boolean setVehicleStatus(int radioCode, int opCode, int sc_id, int enable)
{
if(tcp == null)
public boolean setVehicleStatus(int radioCode, int opCode, int sc_id, int enable) {
if (tcp == null)
return false;
boolean res = tcp.Write("0.0", "#"+radioCode+"#"+opCode+"#" + sc_id+"#" + enable + "#");
if(res && displayLogCat)
SM.Debug("Message (Option4Unit) sent to app server radioCode:"+radioCode+ " opCode:"+opCode+ " sc_id:"+sc_id+ " value:" + enable);
boolean res = tcp.Write("0.0", "#" + radioCode + "#" + opCode + "#" + sc_id + "#" + enable + "#");
if (res && SHOULD_DISPLAY_LOGCAT)
SM.Debug("Message (Option4Unit) sent to app server radioCode:" + radioCode + " opCode:" + opCode + " sc_id:" + sc_id + " value:" + enable);
else
SM.Debug("Could not send message(Option4Unit)!!");
return res;
}
/** get Last SMSs for an user */
public boolean getLastSMSs(int userID)
{
if(tcp == null)
public boolean getLastSMSs(int userID) {
if (tcp == null)
return false;
boolean res = tcp.Write("0.0", "#23#" + userID + "#");
if(res && displayLogCat)
if (res && SHOULD_DISPLAY_LOGCAT)
SM.Debug("#Send Request#", "Message [getLastSMSs] sent to app server");
else
SM.Debug("#Send Request#", "Could not send message [getLastSMSs]!!");
return res;
}
/** get SMSs for an user that are recent than timeGMT
* @param sc_id the vehicle imei for which we want the SMSs
* @param timeGMT the unix time for the last message in the grid or messages that are newer than this time */
public boolean getRecentSMSs(int sc_id, long timeGMT)
{
if(tcp == null)
public boolean getRecentSMSs(int sc_id, long timeGMT) {
if (tcp == null)
return false;
boolean res = tcp.Write("0.0", "#22#"+sc_id+"#" +timeGMT+"#");
if(res && displayLogCat)
boolean res = tcp.Write("0.0", "#22#" + sc_id + "#" + timeGMT + "#");
if (res && SHOULD_DISPLAY_LOGCAT)
SM.Debug("#Send Request#", "Message [getRecentSMSs] sent to app server");
else
SM.Debug("#Send Request#", "Could not send message [getRecentSMSs]!!");
return res;
}
@ -174,7 +146,7 @@ public abstract class AbstractSDParentActivity extends TabActivity {
return false;
boolean res = tcp.Write(seqID, "#24#" + AppParams.USERID + "#" + sc_id + "#" + txt + "#");
if(res && displayLogCat)
if(res && SHOULD_DISPLAY_LOGCAT)
SM.Debug("Message [sendSMS] sent to app server sc_id:"+sc_id+ " txt:"+txt);
else
SM.Debug("Could not send message [sendSMS]!!");
@ -183,16 +155,16 @@ public abstract class AbstractSDParentActivity extends TabActivity {
}
public boolean sendAlarmAcknoledge(int alarm_id, int type)
public boolean sendAlarmAcknowledge(int alarm_id, int type)
{
if(tcp == null)
return false;
boolean res = tcp.Write("0.0", "#28#" + alarm_id + "#" + type + "#");
if(res)
SM.Debug("Message [sendAlarmAcknoledge] sent to app server alarm_id:" + alarm_id + " type:" + type);
SM.Debug("Message [sendAlarmAcknowledge] sent to app server alarm_id:" + alarm_id + " type:" + type);
else
SM.Debug("Could not send message [sendAlarmAcknoledge]!!");
SM.Debug("Could not send message [sendAlarmAcknowledge]!!");
return res;
}
@ -226,12 +198,11 @@ public abstract class AbstractSDParentActivity extends TabActivity {
return res;
}
public boolean getHistoryPositions(int sc_id, long timeGMTStart, long timeGMTStop)
{
public boolean getHistoryPositions(int sc_id, long timeGMTStart, long timeGMTStop) {
if(tcp == null)
return false;
String histSeqID = "1."+Integer.toString((int) (System.currentTimeMillis() / 1000L));
String histSeqID = "1."+ (int) (System.currentTimeMillis() / 1000L);
boolean res = tcp.Write(histSeqID,"#26#"+sc_id+"#"+timeGMTStart+"#"+timeGMTStop+"#");
if(res)
SM.Debug("Message [getHistoryPositions] sent to app server");
@ -241,8 +212,7 @@ public abstract class AbstractSDParentActivity extends TabActivity {
return res;
}
public boolean getRadiosList()
{
public boolean getRadiosList() {
if(tcp == null)
return false;
@ -290,7 +260,7 @@ public abstract class AbstractSDParentActivity extends TabActivity {
if(tcp == null)
return false;
boolean res = tcp.Write("0.0", "#27#" + userID + "#"); // = tcp.Write("0.0", "#30#99#" + gwID + "#" + rgwID + "#");
boolean res = tcp.Write("0.0", "#27#" + userID + "#");
if(res)
SM.Debug("Message [GetAlarms] sent to app server");
else
@ -313,11 +283,45 @@ public abstract class AbstractSDParentActivity extends TabActivity {
return res;
}
//public abstract void getVehiclePosition(long imei);
/*
public abstract void onResume();
public abstract void onStart();
public abstract void onPause();
*/
public String getImei() {
return imei;
}
public void setImei(String imei) {
this.imei = imei;
}
public String getMess() {
return mess;
}
public void setMess(String mess) {
this.mess = mess;
}
/** Lists */
public ArrayList<Vehicle> getAllVehicle() {
return allVehicle;
}
public void setAllVehicle(ArrayList<Vehicle> allVehicle) {
this.allVehicle = allVehicle;
}
public Hashtable<Long, SuperVehicle> getSuperVehHash() {
return superVehHash;
}
public void setSuperVehHash(Hashtable<Long, SuperVehicle> superVehHash) {
this.superVehHash = superVehHash;
}
public Hashtable<Long, Vehicle> getVehHashByScId() {
return vehHashByScId;
}
public void setVehHashByScId(Hashtable<Long, Vehicle> vehHashByScId) {
this.vehHashByScId = vehHashByScId;
}
}

View File

@ -21,36 +21,28 @@ public class SuperVehicle extends Vehicle{
// TODO Auto-generated constructor stub
}
public void SetDataFromLastPos(Double _lat,Double _lng,long _time,int _speed,String _Address,Boolean _isON)
{
try
{
public void SetDataFromLastPos(Double _lat,Double _lng,long _time,int _speed,String _Address,Boolean _isON) {
try {
lat = _lat;
lng = _lng;
timeGMT = _time;
speed = _speed;
Address = _Address;
isON = _isON;
}
catch (Exception ex)
{
Log.d("Erorr", "Contert Error:"+ex.toString());
} catch (Exception ex) {
Log.d("Erorr", "Contert Error: "+ ex);
}
}
public void SetNewPosition(Double _lat,Double _lng,long _time,int _speed)
{
try
{
public void SetNewPosition(Double _lat,Double _lng,long _time,int _speed) {
try {
lat = _lat;
lng = _lng;
timeGMT = _time;
speed = _speed;
isON = true;
}
catch (Exception ex)
{
Log.d("Erorr", "Contert Error:"+ex.toString());
} catch (Exception ex) {
Log.d("Erorr", "Contert Error: " + ex);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,140 @@
<?xml version="1.0" encoding="utf-8"?><!--
Copyright (C) 2012 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.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/custom_info_bubble"
android:paddingLeft="7dp"
android:paddingRight="7dp"
android:paddingTop="9dp"
android:orientation="vertical">
<LinearLayout
android:id="@+id/containerTop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/l_bg_gps"
android:orientation="vertical">
<TextView
android:id="@+id/tvUnitName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:ellipsize="end"
android:fontFamily="sans-serif-smallcaps"
android:maxLines="1"
android:paddingTop="5dp"
tools:text="Linux 9910"
android:textColor="#FFFFFF"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvGPSLocation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:ellipsize="end"
android:fontFamily="sans-serif-smallcaps"
android:maxLines="1"
tools:text="[44.41857,26.09585]"
android:textColor="#FFFFFF"
android:textSize="10sp"
tools:ignore="SmallSp" />
</LinearLayout>
<RelativeLayout
android:layout_width="225dp"
android:layout_height="wrap_content"
android:padding="10dp"
android:id="@+id/rlMapInfoBubbleInfo">
<ImageView
android:id="@+id/time"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginRight="5dp"
android:adjustViewBounds="true"
android:src="@drawable/l_time"
android:layout_marginEnd="5dp" />
<TextView
android:id="@+id/tvTimeAgo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/time"
android:layout_alignTop="@+id/time"
android:layout_gravity="center_horizontal"
android:layout_toEndOf="@+id/time"
android:layout_toRightOf="@+id/time"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="1"
tools:text="a year ago [01:05:01]"
android:textColor="#ff000000"
android:textSize="10sp" />
<ImageView
android:id="@+id/speed"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_below="@+id/time"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:adjustViewBounds="true"
android:src="@drawable/l_speed" />
<TextView
android:id="@+id/tvSpeed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/speed"
android:layout_alignTop="@+id/speed"
android:layout_gravity="center_horizontal"
android:layout_toRightOf="@+id/speed"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="1"
tools:text="24 kph"
android:textColor="#ff000000"
android:textSize="10sp" />
<ImageView
android:id="@+id/streetView"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_below="@+id/speed"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:adjustViewBounds="true"
android:src="@drawable/l_street"
android:visibility="visible" />
<TextView
android:id="@+id/tvStreetView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/streetView"
android:layout_gravity="center_horizontal"
android:layout_toRightOf="@+id/streetView"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="5"
tools:text="3601 E Algonquin Rd., Suite 800 Rolling Meadows, IL 60008"
android:textColor="#ff000000"
android:textSize="10sp"
android:visibility="visible" />
</RelativeLayout>
</LinearLayout>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
</resources>

View File

@ -167,11 +167,11 @@ public class AlarmActivity extends Activity {
{
acknowledged.add((alarm.ack == 1)? true: false);
SM.Debug("ALARM", "SC_ID> " + alarm.sc_id + " | "
+ (parentTab.VehHashbySc_id.get(alarm.sc_id) == null ? "null" : parentTab.VehHashbySc_id.get(alarm.sc_id).name ));
+ (parentTab.getVehHashByScId().get(alarm.sc_id) == null ? "null" : parentTab.getVehHashByScId().get(alarm.sc_id).name ));
if (parentTab.VehHashbySc_id.get(alarm.sc_id)!=null)
alarm.unitName = parentTab.VehHashbySc_id.get(alarm.sc_id).name;
if (parentTab.getVehHashByScId().get(alarm.sc_id)!=null)
alarm.unitName = parentTab.getVehHashByScId().get(alarm.sc_id).name;
@ -254,6 +254,6 @@ public class AlarmActivity extends Activity {
private void setACK(int idx, int type)
{
parentTab.executeNetworkStuff(new String[]{OperationCodes.SendAlarmAcknoledge +"", idx + "", type + ""});
//parentTab.sendAlarmAcknoledge(idx, type);
//parentTab.sendAlarmAcknowledge(idx, type);
}
}

View File

@ -0,0 +1,93 @@
package com.safemobile.dispatch;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.Marker;
import com.safemobile.lib.SuperVehicle;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Hashtable;
import java.util.Locale;
public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
private final String TAG = GoogleMapsInfoBubble.class.getName();
private final View mWindow;
private final Hashtable<Long, SuperVehicle> superVehHash;
private final Context context;
public GoogleMapsInfoBubble(LayoutInflater layoutInflater, Context context, Hashtable<Long, SuperVehicle> vehicles) {
this.context = context;
this.superVehHash = vehicles;
mWindow = layoutInflater.inflate(R.layout.map_marker_info_bubble, null);
}
@Override
public View getInfoWindow(@NonNull Marker marker) {
render(marker, mWindow);
return mWindow;
}
@Override
public View getInfoContents(@NonNull Marker marker) {
render(marker, mWindow);
return mWindow;
}
private void render(Marker marker, View view) {
long key = 0;
try {
key = Long.parseLong(marker.getTitle());
} catch (Exception ex) {
Log.v(TAG, "Unable to parse Google Maps Info Bubble title");
}
SuperVehicle vehicle = superVehHash.get(key);
RelativeLayout rlMapInfoBubbleInfo = view.findViewById(R.id.rlMapInfoBubbleInfo);
TextView tvUnitName = view.findViewById(R.id.tvUnitName);
TextView tvGPSLocation = view.findViewById(R.id.tvGPSLocation);
TextView tvTimeAgo = view.findViewById(R.id.tvTimeAgo);
TextView tvSpeed = view.findViewById(R.id.tvSpeed);
TextView tvStreetView = view.findViewById(R.id.tvStreetView);
ImageView streetView = view.findViewById(R.id.streetView);
rlMapInfoBubbleInfo.setVisibility(View.VISIBLE);
boolean isMilitaryTime = false;
Date positionTime = new Date(vehicle.timeGMT);
String timeFormat = isMilitaryTime
? "HH:mm:ss dd.MMM.yyyy"
: "hh:mm:ss a dd.MMM.yyy";
DateFormat format = new SimpleDateFormat(timeFormat, Locale.ENGLISH);
tvTimeAgo.setText(format.format(positionTime));
tvSpeed.setText(String.format(context.getResources().getString(R.string.speedMph), vehicle.speed));
String address = vehicle.Address != null ? vehicle.Address : "";
tvStreetView.setText(address);
streetView.setVisibility(address.length() > 0 ? View.VISIBLE : View.GONE);
tvStreetView.setVisibility(address.length() > 0 ? View.VISIBLE : View.GONE);
tvUnitName.setText(vehicle.name);
tvGPSLocation.setText("[" + String.format("%.4f", vehicle.lat)
+ "," + String.format("%.4f",vehicle.lng) + "]");
}
}

View File

@ -1,23 +1,210 @@
package com.safemobile.dispatch;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import com.safemobile.lib.AppParams;
import com.safemobile.lib.HistPos;
import com.safemobile.lib.OperationCodes;
import com.safemobile.lib.SM;
import com.safemobile.lib.Vehicle;
public class HistoryActivity extends AppCompatActivity {
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class HistoryActivity extends AppCompatActivity implements OnMapReadyCallback {
public Bundle savedInstanceState;
private TabLayoutActivity parentTab;
private GoogleMap googleMap;
private Spinner spinnerVehicle;
private ImageView changeMapType, checkTraffic, slideLayoutImage;
private LinearLayout layoutTraffic, slidelayout, layoutVehicles;
private Button displayButton;
private Date startDate, endDate;
private final Handler myHandler = new Handler();
private ArrayList<Vehicle> allVehicle = new ArrayList<>();
private ArrayList<String> allVehicleNames = new ArrayList<>();
private ArrayAdapter<String> adapter;
private boolean showVehicle = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.savedInstanceState = savedInstanceState;
setContentView(R.layout.tabhistory);
parentTab = (TabLayoutActivity) getParent();
parentTab.historyActivity = this;
Locale locale = new Locale(AppParams.LANGUAGETMP);
Locale.setDefault(locale);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
spinnerVehicle = findViewById(R.id.spinnerVehicle);
getVehicles();
adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, allVehicleNames);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinnerVehicle.setAdapter(adapter);
spinnerVehicle.setSelection(0);
changeMapType();
changeTraffic();
slidelayout = findViewById(R.id.slidelayout);
slideLayoutImage = findViewById(R.id.slideLayoutImage);
layoutVehicles = findViewById(R.id.layoutBig);
displayButton = findViewById(R.id.buttonDisplay);
displayButton.setOnClickListener(view -> {
googleMap.clear();
if (!AppParams.DEMO) {
parentTab.dropAllData =false;
parentTab.firstHistData = true;
parentTab.HistMsgList.clear();
parentTab.HistPosList.clear();
// request history
parentTab.executeNetworkStuff(new String[] {OperationCodes.GetHistoryPositions + "", allVehicle.get(spinnerVehicle.getSelectedItemPosition()).sc_id + "",
(startDate.getTime()/ 1000L) + "", (endDate.getTime()/ 1000L) + ""});
} else {
parentTab.demoPositionsList();
displayHistory(parentTab.demoPositions);
}
});
// slidelayout.setOnTouchListener((v, event) -> {
// if (showVehicle) {
// layoutVehicles.setVisibility(View.GONE);
// slideLayoutImage.setImageResource(R.drawable.arrow_right);
// showVehicle = false;
// } else {
// layoutVehicles.setVisibility(View.VISIBLE);
// slideLayoutImage.setImageResource(R.drawable.arrow_left);
// showVehicle = true;
// }
// return false;
// });
setDate();
}
private void displayHistory(ArrayList<HistPos> positions) {
LatLng latLng = null;
PolylineOptions polylineOptions = new PolylineOptions();
BitmapDescriptor markerIcon = BitmapDescriptorFactory.fromResource(R.drawable.bus);
for (HistPos pos : positions) {
latLng = new LatLng(pos.lat, pos.lng);
polylineOptions.add(latLng);
googleMap.addMarker(new MarkerOptions()
.position(latLng)
.icon(markerIcon));
}
Polyline polyline1 = googleMap.addPolyline(polylineOptions);
if (latLng != null)
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14));
}
private void setDate() {
Calendar calendar = Calendar.getInstance();
endDate = calendar.getTime();
calendar.add(Calendar.DATE, -1);
startDate = calendar.getTime();
LinearLayout layoutStartPicker = findViewById(R.id.layoutStartPicker);
TextView textViewDate = findViewById(R.id.textViewStartDate);
textViewDate.setText(new SimpleDateFormat("HH:mm, dd.MM.yyyy").format(startDate));
// layoutStartPicker.setOnTouchListener((v, event) -> {
// showDialog(layoutStartPicker);
// return false;
// });
// layoutEndPicker.setOnTouchListener(new OnTouchListener() {
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// showDialog(layoutEndPicker);
// return false;
// }
// });
}
private void changeTraffic() {
ImageView changeTrafficImageView = findViewById(R.id.changeTraffic);
changeTrafficImageView.setOnClickListener(v -> {
if (googleMap.isTrafficEnabled()) {
changeTrafficImageView.setImageResource(R.drawable.traffic_off);
googleMap.setTrafficEnabled(false);
} else {
changeTrafficImageView.setImageResource(R.drawable.traffic);
googleMap.setTrafficEnabled(true);
}
});
}
private void changeMapType() {
changeMapType = findViewById(R.id.changeMapType);
ImageView changeMapTypeImageView = findViewById(R.id.changeMapType);
changeMapType.setOnClickListener(view -> {
if (googleMap.getMapType() == GoogleMap.MAP_TYPE_SATELLITE) {
changeMapTypeImageView.setImageResource(R.drawable.satellite);
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
} else {
changeMapTypeImageView.setImageResource(R.drawable.map);
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
});
}
public void getVehicles() {
try {
for (Vehicle vehicle : parentTab.getAllVehicle()) {
allVehicleNames.add(vehicle.name);
allVehicle.add(vehicle);
}
} catch (Exception ex) { }
}
final Runnable UpdateMapResults = new Runnable() {
public void run() {
Log.v("updateMap", parentTab.HistPosList.toString());
SM.Debug("Do the Display");
displayHistory(parentTab.HistPosList);
}
};
public void UpdateMap() {
myHandler.post(UpdateMapResults);
SM.Debug("Do the updateMAP post");
}
@ -32,4 +219,12 @@ public class HistoryActivity extends AppCompatActivity {
public void UpdateNrPos(int size) {
SM.Debug("Do Cancelwindow");
}
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
this.googleMap = googleMap;
parentTab.demoPositionsList();
displayButton.performClick();
}
}

View File

@ -42,10 +42,9 @@ public class IconContextMenu implements DialogInterface.OnCancelListener,
private static final int LIST_PREFERED_HEIGHT = 65;
private IconMenuAdapter menuAdapter = null;
private Activity parentActivity = null;
private int dialogId = 0;
private IconMenuAdapter menuAdapter;
private Activity parentActivity;
private IconContextMenuOnClickListener clickHandler = null;
/**
@ -55,8 +54,7 @@ public class IconContextMenu implements DialogInterface.OnCancelListener,
*/
public IconContextMenu(Activity parent, int id) {
this.parentActivity = parent;
this.dialogId = id;
menuAdapter = new IconMenuAdapter(parentActivity);
}
@ -89,19 +87,13 @@ public class IconContextMenu implements DialogInterface.OnCancelListener,
public Dialog createMenu(String menuItitle) {
final AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
builder.setTitle(menuItitle);
builder.setAdapter(menuAdapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialoginterface, int i) {
IconContextMenuItem item = (IconContextMenuItem) menuAdapter.getItem(i);
if (clickHandler != null) {
clickHandler.onClick(item.actionTag);
}
}
builder.setAdapter(menuAdapter, (dialoginterface, i) -> {
IconContextMenuItem item = (IconContextMenuItem) menuAdapter.getItem(i);
if (clickHandler != null)
clickHandler.onClick(item.actionTag);
});
builder.setInverseBackgroundForced(true);
AlertDialog dialog = builder.create();
dialog.setOnCancelListener(this);
dialog.setOnDismissListener(this);
@ -117,7 +109,7 @@ public class IconContextMenu implements DialogInterface.OnCancelListener,
}
private void cleanup() {
parentActivity.dismissDialog(dialogId);
// parentActivity.dismissDialog(dialogId);
}
/**
@ -131,7 +123,7 @@ public class IconContextMenu implements DialogInterface.OnCancelListener,
* Menu-like list adapter with icon
*/
protected class IconMenuAdapter extends BaseAdapter {
private Context context = null;
private Context context;
private ArrayList<IconContextMenuItem> mItems = new ArrayList<IconContextMenuItem>();
@ -193,6 +185,7 @@ public class IconContextMenu implements DialogInterface.OnCancelListener,
textView.setTag(item);
textView.setText(item.text);
textView.setCompoundDrawablesWithIntrinsicBounds(item.image, null, null, null);
textView.setTextColor(R.color.black);
return textView;
}

View File

@ -9,13 +9,19 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageButton;
@ -26,11 +32,13 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.safemobile.activities.AbstractLiveActivity;
import com.safemobile.activities.AbstractSDParentActivity;
@ -94,6 +102,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
//value poll
private double latPoll = 0;
private double lngPoll = 0;
private ArrayList<Marker> markers = new ArrayList<>();
@Override
@ -130,12 +139,11 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
mapFragment.getMapAsync(this);
}
// create on vehicle long click menu
createIconContextMenu();
// image View for changing map type satellite or map
ImageView changeMapTypeImageView = (ImageView) findViewById(R.id.changeMapType);
ImageView changeMapTypeImageView = findViewById(R.id.changeMapType);
changeMapTypeImageView.setOnClickListener(v -> {
if (googleMap.getMapType() == GoogleMap.MAP_TYPE_SATELLITE) {
changeMapTypeImageView.setImageResource(R.drawable.satellite);
@ -146,7 +154,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
}
});
ImageView changeTrafficImageView = (ImageView) findViewById(R.id.changeTraffic);
ImageView changeTrafficImageView = findViewById(R.id.changeTraffic);
changeTrafficImageView.setOnClickListener(v -> {
if (googleMap.isTrafficEnabled()) {
changeTrafficImageView.setImageResource(R.drawable.traffic_off);
@ -158,21 +166,21 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
});
// change tab header font
TextView textView1 = (TextView) findViewById(R.id.textView1);
TextView textView1 = findViewById(R.id.textView1);
textView1.setTypeface(Typeface.createFromAsset(getAssets(), "Sketch_Block.ttf"));
textView1.setTextSize(24);
// get grid view and set empty data adapter
gridVehicle = (GridView) findViewById(R.id.gridVehicle);
gridVehicle = findViewById(R.id.gridVehicle);
if (AppParams.DEMO) {
disabledVehicles = new ArrayList<>();
for (Vehicle veh : getParentTab().allVehicle)
for (Vehicle veh : getParentTab().getAllVehicle())
disabledVehicles.add(!veh.status);
}
adapter = new VehiclesGridViewAdapter(activity, context, getParentTab().allVehicle, disabledVehicles);
adapter = new VehiclesGridViewAdapter(activity, context, getParentTab().getAllVehicle(), disabledVehicles);
adapter.notifyDataSetChanged();
gridVehicle.setAdapter(adapter);
@ -185,14 +193,16 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
threadUI.start();
});
// get vehicle menu creation
gridVehicle.setOnItemLongClickListener(itemLongClickHandler);
gridVehicle.setOnItemLongClickListener((adapterView, view, i, l) -> {
contextMenuPosition = position;
iconContextMenu.createMenu(getString(R.string.options)).show();
return true;
});
LinearLayout slideLayout = (LinearLayout) findViewById(R.id.slidelayout);
ImageView slideLayoutImageView = (ImageView) findViewById(R.id.slideLayoutImage);
LinearLayout linearLayoutVehicles = (LinearLayout) findViewById(R.id.layoutBig);
LinearLayout slideLayout = findViewById(R.id.slidelayout);
ImageView slideLayoutImageView = findViewById(R.id.slideLayoutImage);
LinearLayout linearLayoutVehicles = findViewById(R.id.layoutBig);
slideLayout.setOnClickListener(v -> {
if (showVehicle) {
linearLayoutVehicles.setVisibility(View.GONE);
@ -205,7 +215,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
}
});
imageViewCheckAll = (ImageButton) findViewById(R.id.imageCheckAll);
imageViewCheckAll = findViewById(R.id.imageCheckAll);
imageViewCheckAll.setSelected(false);
imageViewCheckAll.setOnClickListener(arg0 -> {
for (int i = 0; i < displayedVehicles.size(); i++)
@ -221,9 +231,9 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
else
viewLive.imgViewChecked.setImageResource(R.drawable.unchecked);
Enumeration<Long> keyList = getParentTab().SuperVehHash.keys();
Enumeration<Long> keyList = getParentTab().getSuperVehHash().keys();
while (keyList.hasMoreElements()) {
(Objects.requireNonNull(getParentTab().SuperVehHash.get((long) keyList.nextElement()))).needUpdate = true;
(Objects.requireNonNull(getParentTab().getSuperVehHash().get(keyList.nextElement()))).needUpdate = true;
}
// change button title
@ -247,7 +257,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
displayVehicle(true, LAT_OUTLIMIT, LNG_OUTLIMIT);
});
displayButton = (Button) findViewById(R.id.buttonDisplay);
displayButton = findViewById(R.id.buttonDisplay);
displayButton.setText(getString(R.string.displayAll));
@ -257,9 +267,9 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
for (int i = 0; i < displayedVehicles.size(); i++)
displayedVehicles.set(i, true);
Enumeration<Long> keyList = getParentTab().SuperVehHash.keys();
Enumeration<Long> keyList = getParentTab().getSuperVehHash().keys();
while (keyList.hasMoreElements())
(Objects.requireNonNull(getParentTab().SuperVehHash.get((long) keyList.nextElement()))).needUpdate = true;
(Objects.requireNonNull(getParentTab().getSuperVehHash().get(keyList.nextElement()))).needUpdate = true;
// change button title
if (displayButton.getText().toString().equals(getString(R.string.displayAll))) {
@ -297,11 +307,8 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
this.googleMap = googleMap;
// Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
this.googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
this.googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
GoogleMapsInfoBubble infoBubble = new GoogleMapsInfoBubble(getLayoutInflater(), this, getParentTab().getSuperVehHash());
this.googleMap.setInfoWindowAdapter(infoBubble);
}
@ -419,7 +426,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
// send change to AppServer
optionForUnit(radioCode, MENU_POLL, liveVehicle.get(contextMenuPosition).id + "");
if (AppParams.DEMO) {
getParentTab().imei = liveVehicle.get(contextMenuPosition).sc_id + "";
getParentTab().setImei(liveVehicle.get(contextMenuPosition).sc_id + "");
getParentTab().updateDemoPosition();
getParentTab().updateResultsPollInUi("realpha");
}
@ -433,36 +440,101 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
});
}
/**
* create context menu
*/
@Override
public Dialog onCreateDialog(int id) {
if (id == 1) {
return iconContextMenu.createMenu(getString(R.string.options));
}
return super.onCreateDialog(id);
}
/* list item long click handler
* used to show the context menu
*/
private final AdapterView.OnItemLongClickListener itemLongClickHandler = ((parent, view, position, id) -> {
// save position
contextMenuPosition = position;
showDialog(1);
return true;
});
public void displayVehicle(boolean withZoom, double latZoom, double lngZoom) {
//TODO: add makers for vehicles
if (googleMap != null) {
String openWindow = "";
for (Marker marker : markers) {
if (marker.isInfoWindowShown()) {
openWindow = marker.getTitle();
}
}
googleMap.clear();
for (int i = 0; i < displayedVehicles.size(); i++) {
if (displayedVehicles.get(i)) {
SuperVehicle tmpSuper = getParentTab().getSuperVehHash().get(Long.valueOf(liveVehicle.get(i).imei));
if (tmpSuper != null) {
LatLng newLocation = new LatLng(tmpSuper.lat, tmpSuper.lng);
MarkerOptions markerOptions = new MarkerOptions().position(newLocation).title(liveVehicle.get(i).imei);
BitmapDescriptor markerIcon = getProperBitmap(tmpSuper.getLargeIcon(), tmpSuper.name);
markerOptions.icon(markerIcon);
Marker marker = this.googleMap.addMarker(markerOptions);
if (openWindow.equals(marker.getTitle()))
marker.showInfoWindow();
markers.add(marker);
}
}
}
}
}
public void showOpenedBalloon(boolean demo) {
//TODO: add show balloon
}
private BitmapDescriptor getProperBitmap(int largeIcon, String text) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), largeIcon);
Bitmap textBitmap = getTextAsDrawable(this, text);
Bitmap b3 = overlay(bitmap, textBitmap);
return BitmapDescriptorFactory.fromBitmap(b3);
}
public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
int maxWidth = Math.max(bmp1.getWidth(), bmp2.getWidth());
Bitmap bmOverlay = Bitmap.createBitmap(maxWidth, bmp1.getHeight() + bmp2.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, new Matrix(), null);
canvas.drawBitmap(bmp2, 0, bmp1.getHeight(), null);
bmp1.recycle();
bmp2.recycle();
return bmOverlay;
}
public Bitmap getTextAsDrawable(Context context, String text) {
Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.WHITE);
paint.setTypeface(tf);
paint.setTextSize(convertToPixels(context, 16));
Rect textRect = new Rect();
paint.getTextBounds(text, 0, text.length(), textRect);
Bitmap bitmap = Bitmap.createBitmap(textRect.width(), textRect.height() + 5,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
paint.setColor(getResources().getColor(R.color.cardview_dark_background));
canvas.drawRect(0, 0, bitmap.getWidth(), bitmap.getHeight(), paint);
float scale = context.getResources().getDisplayMetrics().density;
// text color - #3D3D3D
paint.setColor(Color.rgb(255, 255, 255));
// text size in pixels
// draw text to the Canvas center
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
int x = (bitmap.getWidth() - bounds.width()) / 2;
int y = (bitmap.getHeight() + bounds.height()) / 2;
canvas.drawText(text, x, y, paint);
return bitmap;
}
public int convertToPixels(Context context, int nDP) {
final float conversionScale = context.getResources().getDisplayMetrics().density;
return (int) ((nDP * conversionScale) + 0.5f);
}
public void showLoadingDialog(String message) {
loadingDialog = new Dialog(context);
loadingDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
@ -470,9 +542,9 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
loadingDialog.setCancelable(true);
loadingDialog.setCanceledOnTouchOutside(false);
Button cancel = (Button) loadingDialog.findViewById(R.id.buttonCancel);
Button cancel = loadingDialog.findViewById(R.id.buttonCancel);
cancel.setVisibility(View.GONE);
TextView textView1 = (TextView) loadingDialog.findViewById(R.id.textView1);
TextView textView1 = loadingDialog.findViewById(R.id.textView1);
textView1.setText(message);
loadingDialog.show();
@ -501,8 +573,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
disabledVehicles.add(!veh.status);
// add vehicle to hash Table according to driver_id
if (tableHashOverlay.get((int) veh.driver_id) == null) // if doesn't exist
{
if (tableHashOverlay.get((int) veh.driver_id) == null) {
ArrayList<SuperVehicle> array = new ArrayList<>();
SuperVehicle superVehicle = new SuperVehicle(veh.sc_id, veh.imei, veh.lp, veh.name, veh.driver_id, veh.time_route, veh.GPS_reporting_interval, veh.is_stolen);
array.add(superVehicle);
@ -519,7 +590,6 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
}
// set adapter
adapter = new VehiclesGridViewAdapter(activity, context, list, disabledVehicles);
adapter.notifyDataSetChanged();
@ -538,7 +608,6 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
// show vehicles in gridView
private void updateResultsUI() {
gridVehicle.setAdapter(adapter);
try {
// hide loading dialog
loadingDialog.cancel();
@ -576,7 +645,6 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
pollReceived(position,lat,lng);
}
public void updatePosition(int pos) {
contextMenuPosition = pos;
}
@ -598,11 +666,9 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
final Runnable updateOptionsRUN = this::updateOptionsUI;
private void updateOptionsUI() {
SM.Debug("REFRESHDisableEnable" + (Boolean.TRUE.equals(disabledVehicles.get(contextMenuPosition)) ? "true" : "false"));
// change Enable/Disable in adapter
adapter.changeDisabled(contextMenuPosition, disabledVehicles.get(contextMenuPosition));
}
/**
@ -692,7 +758,6 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
// zone and channel change intent
IntentFilter intentFilter = new IntentFilter(OperationCodes.UNIT_STATUS_UPDATE + "");
this.registerReceiver(mReceiver, intentFilter);
}
//The BroadcastReceiver that listens for Notification broadcasts
@ -723,4 +788,9 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
}
}
};
@Override
public GoogleMap getMap() {
return googleMap;
}
}

View File

@ -273,7 +273,7 @@ public class MessagesActivity extends Activity {
// Create runnable for posting
final Runnable demoReceveidSMSRUN = new Runnable() {
public void run() {
parentTab.imei = sc_id + "";
parentTab.setImei(sc_id + "");
parentTab.updateResultsInUi("realpha");
int timeGMT = (int) (System.currentTimeMillis() / 1000L);
@ -354,7 +354,7 @@ public class MessagesActivity extends Activity {
if(parentTab.getTCPState() != null){
if(FIRST)
{
UpdateVehs(parentTab.allVehicle);
UpdateVehs(parentTab.getAllVehicle());
FIRST = false;
if(LASTMESSAGES)
parentTab.executeNetworkStuff(new String[] {OperationCodes.GetLastSMS + "", AppParams.USERID + ""});
@ -704,7 +704,7 @@ public class MessagesActivity extends Activity {
private void updateResultsInUi()
{
if(allVehicle == null)
UpdateVehs(parentTab.allVehicle);
UpdateVehs(parentTab.getAllVehicle());
//SM.Debug("updateResultsInUi: " + ACTION);
if(ACTION == MSGUpdate)

View File

@ -280,9 +280,9 @@ public class RadioActivity extends Activity {
{
super.onResume();
// get all vehicles from TabLayoutActivity
if(!allVehicle.equals(parentTab.allVehicle))
if(!allVehicle.equals(parentTab.getAllVehicle()))
{
allVehicle = parentTab.allVehicle;
allVehicle = parentTab.getAllVehicle();
UpdateVehicle();
}
/*
@ -908,7 +908,7 @@ public class RadioActivity extends Activity {
radioAll.setChecked(false);
radioGroup.setChecked(false);
selectedCallType = PRIVATECall;
textViewCallType.setText(parentTab.SuperVehHash.get((long)imei).name);
textViewCallType.setText(parentTab.getSuperVehHash().get((long)imei).name);
layoutSpinnerCallType.setVisibility(View.VISIBLE);
}
else if (calltype==103)
@ -936,8 +936,8 @@ public class RadioActivity extends Activity {
}
if (callstatus==1)
{
if (parentTab.SuperVehHash.get((long)imei)!=null)
textViewMessageStatus.setText(parentTab.SuperVehHash.get((long)imei).name);
if (parentTab.getSuperVehHash().get((long)imei)!=null)
textViewMessageStatus.setText(parentTab.getSuperVehHash().get((long)imei).name);
else
textViewMessageStatus.setText("Imei: "+Long.toString(imei));
}

View File

@ -1,21 +1,16 @@
package com.safemobile.lib.sound;
import java.io.BufferedReader;
import com.safemobile.lib.SM;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import com.safemobile.lib.SM;
import com.safemobile.lib.TCPmsg;
public class TCPaudioClient implements Runnable{
private boolean alive = true;

View File

@ -5,337 +5,329 @@
android:id="@+id/tab1Layout" android:orientation="horizontal"
style="?bg">
<RelativeLayout
android:id="@+id/relativeHeader"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true">
<RelativeLayout
android:id="@+id/relativeHeader"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_weight="0"
android:orientation="horizontal"
style="?header"
android:id="@+id/layoutHeader">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_weight="0"
android:orientation="horizontal"
style="?header"
android:id="@+id/layoutHeader">
<ImageView
android:id="@+id/imageViewMsg"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/calendar_48_red"
android:paddingLeft="0dp"
android:layout_margin="3dp"
android:layout_weight="0" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="@string/history"
android:layout_marginLeft="5dp"
android:textStyle="bold"
android:paddingTop="7dp"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="0"/>
<ImageView
android:id="@+id/imageViewMsg"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/calendar_48_red"
android:paddingLeft="0dp"
android:layout_margin="3dp"
android:layout_weight="0" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="@string/history"
android:layout_marginLeft="5dp"
android:textStyle="bold"
android:paddingTop="7dp"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="0"/>
<ImageView
android:id="@+id/imageViewSeparator"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:src="@drawable/separator_white"
android:layout_margin="2dp"
android:layout_weight="0"
android:visibility="invisible"
android:focusable="false" />
<ImageView
android:id="@+id/imageViewSeparator"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:src="@drawable/separator_white"
android:layout_margin="2dp"
android:layout_weight="0"
android:visibility="invisible"
android:focusable="false" />
<ImageView
android:id="@+id/imageViewDown"
android:layout_width="20dp"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
android:focusable="false"
android:visibility="invisible"
android:src="@drawable/arrow_menu_down" />
<ImageView
android:id="@+id/imageViewDown"
android:layout_width="20dp"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
android:focusable="false"
android:visibility="invisible"
android:src="@drawable/arrow_menu_down" />
<ImageButton
android:id="@+id/imageButtonAdd2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:scaleType="centerInside"
android:layout_marginRight="5dp"
android:paddingLeft="2dp"
android:visibility="invisible"
android:background="@drawable/addmessage_selector"/>
<ImageButton
android:id="@+id/imageButtonAdd2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:scaleType="centerInside"
android:layout_marginRight="5dp"
android:paddingLeft="2dp"
android:visibility="invisible"
android:background="@drawable/addmessage_selector"/>
<ImageView
android:id="@+id/changeTraffic"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:padding="3dp"
android:layout_weight="0"
android:src="@drawable/traffic_off"
android:adjustViewBounds="true"/>
<ImageView
android:id="@+id/changeTraffic"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:padding="3dp"
android:layout_weight="0"
android:src="@drawable/traffic_off"
android:adjustViewBounds="true"/>
<ImageView
android:id="@+id/changeMapTypeHeader"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:padding="3dp"
android:layout_weight="0"
android:src="@drawable/satellite"
android:adjustViewBounds="true"/>
<ImageView
android:id="@+id/changeMapTypeHeader"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:padding="3dp"
android:layout_weight="0"
android:src="@drawable/satellite"
android:adjustViewBounds="true"/>
<TextView
android:id="@+id/textViewNew"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="New"
android:textStyle="bold"
android:paddingTop="7dp"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="0"
android:paddingRight="5dp"
android:visibility="gone"/>
<!-- android:background="@drawable/addmessage_selector" -->
</LinearLayout>
</RelativeLayout>
<TextView
android:id="@+id/textViewNew"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:text="New"
android:textStyle="bold"
android:paddingTop="7dp"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="0"
android:paddingRight="5dp"
android:visibility="gone"/>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/relativeHeader">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/relativeHeader">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1">
<LinearLayout
android:layout_width="200dp"
android:layout_height="fill_parent"
android:id="@+id/layoutBig"
android:orientation="vertical"
android:visibility="visible">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/liveVehicle"
android:background="#ffffff"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1">
<LinearLayout
android:layout_width="200dp"
android:layout_height="fill_parent"
android:id="@+id/layoutBig"
android:orientation="vertical"
android:visibility="visible">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/liveVehicle"
android:background="#ffffff"
android:orientation="vertical">
<LinearLayout
android:id="@+id/LayoutSpinner"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingTop="10dp"
android:gravity="top"
android:layout_weight="1">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/vehicle"
android:textSize="20dp"
android:paddingLeft="5dp"
android:textColor="#000000"
android:gravity="left"
android:id="@+id/labelVehicle"/>
android:id="@+id/LayoutSpinner"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingTop="10dp"
android:gravity="top"
android:layout_weight="1">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/vehicle"
android:textSize="20dp"
android:paddingLeft="5dp"
android:textColor="#000000"
android:gravity="left"
android:id="@+id/labelVehicle"/>
<Spinner
android:id="@+id/spinnerVehicle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/arrayLanguages"
android:gravity="center_horizontal"
android:prompt="@string/selUsername"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/startDate"
android:textSize="22dp"
android:paddingLeft="5dp"
android:textColor="#000000"
android:gravity="left"
android:id="@+id/labelStartDate"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/layoutStartPicker"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_gravity="left"
android:gravity="right"
android:layout_marginLeft="2sp"
android:layout_marginRight="3sp"
android:orientation="horizontal"
android:background="@drawable/style_spinner">
<ImageView
android:id="@+id/imageViewStartDate"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:src="@drawable/calendar_48" />
<TextView
android:id="@+id/textViewStartDate"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="10:41, 12.12.2011"
android:textSize="18sp"
android:paddingLeft="1dp"
android:textColor="#000000"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/endDate"
android:textSize="22dp"
android:paddingLeft="5dp"
android:textColor="#000000"
android:gravity="left"
android:id="@+id/labelEndDate"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/layoutEndPicker"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_gravity="left"
android:gravity="right"
android:layout_marginTop="3sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="3sp"
android:orientation="horizontal"
android:background="@drawable/style_spinner">
<ImageView
android:id="@+id/imageViewEndDate"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:src="@drawable/calendar_48_red" />
<TextView
android:id="@+id/textViewEndDate"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="10:00, 13.12.2011"
android:textSize="18sp"
android:paddingLeft="1dp"
android:textColor="#000000" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="bottom">
<TextView
android:id="@+id/textViewSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:text=""
android:textSize="16dp"
android:paddingLeft="5dp"
android:textColor="#000000"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="0"
style="?header"
android:gravity="center"
android:paddingTop="4dp">
<Spinner
android:id="@+id/spinnerVehicle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/arrayLanguages"
android:gravity="center_horizontal"
android:prompt="@string/selUsername"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/startDate"
android:textSize="22dp"
android:paddingLeft="5dp"
android:textColor="#000000"
android:gravity="left"
android:id="@+id/labelStartDate"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/layoutStartPicker"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_gravity="left"
android:gravity="right"
android:layout_marginLeft="2sp"
android:layout_marginRight="3sp"
android:orientation="horizontal"
android:background="@drawable/style_spinner">
<ImageView
android:id="@+id/imageViewStartDate"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:src="@drawable/calendar_48" />
<TextView
android:id="@+id/textViewStartDate"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="10:41, 12.12.2011"
android:textSize="18sp"
android:paddingLeft="1dp"
android:textColor="#000000"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/endDate"
android:textSize="22dp"
android:paddingLeft="5dp"
android:textColor="#000000"
android:gravity="left"
android:id="@+id/labelEndDate"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/layoutEndPicker"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_gravity="left"
android:gravity="right"
android:layout_marginTop="3sp"
android:layout_marginLeft="2sp"
android:layout_marginRight="3sp"
android:orientation="horizontal"
android:background="@drawable/style_spinner">
<ImageView
android:id="@+id/imageViewEndDate"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:src="@drawable/calendar_48_red" />
<TextView
android:id="@+id/textViewEndDate"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="10:00, 13.12.2011"
android:textSize="18sp"
android:paddingLeft="1dp"
android:textColor="#000000" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="bottom">
<TextView
android:id="@+id/textViewSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:text=""
android:textSize="16dp"
android:paddingLeft="5dp"
android:textColor="#000000"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="0"
style="?header"
android:gravity="center"
android:paddingTop="4dp">
<Button
android:id="@+id/buttonDisplay"
style="?login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="0"
android:text="@string/display" />
<Button
android:id="@+id/buttonDisplay"
style="?login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="0"
android:text="@string/display" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="20dp"
android:layout_height="fill_parent"
android:id="@+id/slidelayout"
android:layout_toRightOf="@id/liveVehicle"
android:gravity="center_vertical"
android:orientation="vertical"
android:layout_weight="0">
<ImageView
android:id="@+id/slideLayoutImage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:src="@drawable/arrow_left"
android:layout_weight="1"
style="?sliders" />
</LinearLayout>
<fragment
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/map"
android:layout_toRightOf="@id/slidelayout"
android:layout_weight="1"
tools:context=".HistoryActivity"
android:name="com.google.android.gms.maps.SupportMapFragment" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="20dp"
android:layout_height="fill_parent"
android:id="@+id/slidelayout"
android:layout_toRightOf="@id/liveVehicle"
android:gravity="center_vertical"
android:orientation="vertical"
android:layout_weight="0">
<ImageView
android:id="@+id/slideLayoutImage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:src="@drawable/arrow_left"
android:layout_weight="1"
style="?sliders" />
</LinearLayout>
<LinearLayout
android:id="@+id/layoutGoogleMaps"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_toRightOf="@id/slidelayout"
android:layout_weight="1"
android:orientation="horizontal" >
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/changeMapType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:padding="3dp"
android:src="@drawable/satellite"
android:visibility="gone"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_margin="3dp"
android:layout_alignLeft="@+id/changeMapType"
android:layout_below="@+id/changeMapType"
android:background="#fff"
android:orientation="horizontal"
android:id="@+id/layoutTraffic"
android:visibility="gone">
<ImageView
android:id="@+id/checkTraffic"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:padding="1dp"
android:src="@drawable/checked"/>
<TextView
android:id="@+id/changeTraffic2"
android:text="Traffic"
android:textSize="16dp"
android:textColor="#000"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"/>
<ImageView
android:id="@+id/changeMapType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:padding="3dp"
android:src="@drawable/satellite"
android:visibility="gone"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_margin="3dp"
android:layout_alignLeft="@+id/changeMapType"
android:layout_below="@+id/changeMapType"
android:background="#fff"
android:orientation="horizontal"
android:id="@+id/layoutTraffic"
android:visibility="gone">
<ImageView
android:id="@+id/checkTraffic"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:padding="1dp"
android:src="@drawable/checked"/>
<TextView
android:id="@+id/changeTraffic2"
android:text="Traffic"
android:textSize="16dp"
android:textColor="#000"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>

View File

@ -5,90 +5,70 @@
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayout1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000">
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:orientation="vertical">
<!--
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout3">
<LinearLayout android:layout_width="80dp" android:id="@+id/linearLayout4" android:layout_height="wrap_content">
<Button android:layout_width="wrap_content" android:text="Create tabs" android:layout_height="wrap_content" android:id="@+id/button1"></Button>
</LinearLayout>
<LinearLayout android:layout_height="match_parent" android:id="@+id/linearLayout5" android:layout_width="match_parent">
<LinearLayout android:layout_width="100dp" android:layout_height="match_parent" android:id="@+id/linearLayout7" android:layout_weight="0.29" android:weightSum="1">
<Button android:text="Remove selected tab" android:layout_height="wrap_content" android:id="@+id/button3" android:layout_width="wrap_content"></Button>
</LinearLayout>
<EditText android:layout_width="wrap_content" android:id="@+id/editText1" android:layout_height="wrap_content" android:inputType="number" android:layout_weight="13.86">
<requestFocus></requestFocus>
</EditText>
<LinearLayout android:layout_width="80dp" android:layout_height="match_parent" android:id="@+id/linearLayout7" android:layout_weight="0.29" android:weightSum="1">
<Button android:layout_width="wrap_content" android:text="Add tab" android:layout_height="wrap_content" android:id="@+id/button2" android:layout_weight="0.25"></Button>
</LinearLayout>
</LinearLayout>
</LinearLayout>
-->
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:id="@+id/linearLayout6"
android:orientation="horizontal"
android:layout_height="fill_parent">
<TabHost
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/tabhost"
android:layout_weight="1">
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="390dp"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@android:id/tabs"/>
android:id="@+id/linearLayout1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000">
</RelativeLayout>
</TabHost>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="0"
android:orientation="horizontal">
<LinearLayout
android:layout_width="20dp"
android:layout_height="fill_parent"
android:id="@+id/layoutSlideMenu"
android:gravity="center_vertical"
android:orientation="vertical"
android:layout_weight="0">
<ImageView
android:id="@+id/imageViewSlideMenu"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:src="@drawable/arrow_right"
android:layout_weight="1"
style="?sliders" />
</LinearLayout>
<include
android:id="@+id/layoutMenu"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
layout="@layout/menu" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:id="@+id/linearLayout6"
android:orientation="horizontal"
android:layout_height="fill_parent">
<TabHost
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/tabhost"
android:layout_weight="1">
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="390dp"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@android:id/tabs"/>
</RelativeLayout>
</TabHost>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="0"
android:orientation="horizontal">
<LinearLayout
android:layout_width="20dp"
android:layout_height="fill_parent"
android:id="@+id/layoutSlideMenu"
android:gravity="center_vertical"
android:orientation="vertical"
android:layout_weight="0">
<ImageView
android:id="@+id/imageViewSlideMenu"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:src="@drawable/arrow_right"
android:layout_weight="1"
style="?sliders" />
</LinearLayout>
<include
android:id="@+id/layoutMenu"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
layout="@layout/menu" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:id="@+id/layoutNewMessage"
android:layout_width="250dp"
@ -100,20 +80,20 @@
android:layout_margin="2dp"
android:visibility="invisible"
android:background="@drawable/alert_message">
android:visibility="invisible"
android:background="@drawable/alert_message">
<ImageView
android:id="@+id/imageViewClose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/balloon_overlay_close"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
<ImageView
android:id="@+id/imageViewClose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/balloon_overlay_close"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:visibility="invisible"
android:background="@drawable/balloon_close_bg_selector" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_height="wrap_content"
android:padding="3dp">
<TextView
android:id="@+id/slideTabsText"
@ -127,15 +107,15 @@
android:gravity="center_vertical"
android:layout_above="@android:id/tabs"/>
<LinearLayout
android:layout_above="@android:id/tabs"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageViewPopUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageViewPopUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/message"
android:layout_gravity="center_vertical" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -162,7 +142,6 @@
android:layout_gravity="center_vertical"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>

View File

@ -232,4 +232,7 @@
<item >German</item>
<item >Romanian</item>
</string-array>
<string name="speedMph">%1$d mph</string>
</resources>

View File

@ -236,4 +236,7 @@
<item >Spanish</item>
<item >Russian</item>
</string-array>
<string name="speedMph">%1$d mph</string>
</resources>

View File

@ -233,4 +233,7 @@
<item >Turca</item>
<item >Romana</item>
</string-array>
<string name="speedMph">%1$d mph</string>
</resources>

View File

@ -232,4 +232,7 @@
<item >German</item>
<item >Romanian</item>
</string-array>
<string name="speedMph">%1$d mph</string>
</resources>

View File

@ -254,4 +254,8 @@
</string-array>
<string name="title_activity_new_live">NewLiveActivity</string>
<string name="title_activity_google_maps">GoogleMapsActivity</string>
<string name="speedMph">%1$d mph</string>
</resources>