Compare commits

..

21 Commits

Author SHA1 Message Date
27ef47ec1e hide ack alarms 2022-04-12 14:29:15 +03:00
8661d85218 refresh list after on item Click 2022-04-11 14:01:13 +03:00
6e2a4a6aee Merge pull request 'SD-222' (#27) from SD-222 into develop
Reviewed-on: #27
2022-04-11 07:10:30 +00:00
32201af76c remove barcode from conversation 2022-04-08 20:32:29 +03:00
b6fc8851a7 the blue bar with an arrow from the left has no functionality. it should hide the grid 2022-04-08 20:23:36 +03:00
f4db909dcb when selecting a unit from the grid it should be centered with the info bubble opened 2022-04-08 18:40:20 +03:00
e22f6eb24b Merge pull request 'radio for App Server Mobile + refactor' (#26) from SD-205_Radio_App_Server_Mobile into develop
Reviewed-on: #26
2022-04-08 15:26:34 +00:00
dc2cb825bb resoving merge 2022-04-08 18:25:53 +03:00
04fa7a5b2e radio for App Server Mobile + refactor 2022-04-08 17:54:45 +03:00
dcceb360e9 the unit should be centered when moving with the info bubble opened 2022-04-08 17:53:22 +03:00
1d2182799f the info bubble shows wrong date and time 2022-04-08 16:53:59 +03:00
c210ccf117 disable map controls 2022-04-08 16:39:53 +03:00
f6cb72368d Merge pull request 'fix unit selection' (#25) from SD-221 into develop
Reviewed-on: #25
2022-04-08 11:50:39 +00:00
97b7e2d9a7 fix unit selection 2022-04-08 14:48:07 +03:00
33d00c27d7 Merge pull request 'display satelite map' (#24) from SD-220 into develop
Reviewed-on: #24
2022-04-08 10:54:18 +00:00
cc78f29f26 display satelite map 2022-04-08 13:52:16 +03:00
e7c3672b93 Merge pull request 'update info bubble box info' (#23) from SD-219 into develop
Reviewed-on: #23
2022-04-07 10:32:52 +00:00
539170109d Merge pull request 'when receiving a new alarm && current tab is alarms, refresh alarm list' (#22) from SD-224 into develop
Reviewed-on: #22
2022-04-07 10:16:35 +00:00
680dd0f803 Merge pull request 'fix login button display when internet connection is available' (#21) from SD-217 into develop
Reviewed-on: #21
2022-04-06 07:05:25 +00:00
0b890b74e0 fix login button display when internet connection is available 2022-04-06 10:03:37 +03:00
73d2cedfba Merge pull request 'display alarm notification' (#20) from SD-224 into develop
Reviewed-on: #20
2022-04-04 07:07:40 +00:00
16 changed files with 1641 additions and 1418 deletions

View File

@ -97,6 +97,10 @@ public class AlertGridViewAdapter extends BaseAdapter
switch(acknowledged.get(position) ? 1 : 0)
{
case 1:
ViewGroup.LayoutParams params = convertView.getLayoutParams();
if (params != null) {
params.height = 0;
}
view.imageViewAlert.setImageResource(R.drawable.alert_off);
//view.layoutAlarm.setBackgroundColor(0xffffffff);
break;

View File

@ -15,7 +15,7 @@ public class RadioMSG extends TCPmsg {
public int rOpcode;
public String payload="";
public ArrayList<RadioGW> RadioGWList=null;
public ArrayList<RadioGW> RadioGWList = null;
//zone and channel;
public Zone_and_channel zac= null;
@ -35,7 +35,9 @@ public class RadioMSG extends TCPmsg {
// Contacts list
public ArrayList<Contact> contacts;
public RadioMSG(TCPmsg tcp) {
super(tcp);
String date4parsing = super.data;
@ -47,148 +49,34 @@ public class RadioMSG extends TCPmsg {
switch(rOpcode)
{
case 200:
{
RadioGWList = new ArrayList<RadioGW>();
String[] tempArr = payload.split(";");
int count = 0;
for(int i =0; i<tempArr.length;i++)
{
String[] oneRadio = tempArr[i].split("&");
if(oneRadio.length<5)
continue;
RadioGW rgw = new RadioGW();
rgw.ID = Integer.parseInt(oneRadio[0]);
rgw.GW_ID = Integer.parseInt(oneRadio[1]);
rgw.IMEI = oneRadio[2];
rgw.IP = oneRadio[3];
String zonelistStr =oneRadio[4];
String[] zoneArr = zonelistStr.split("@");
for(int j =0; j<zoneArr.length;j++)
{
Zone zon = new Zone();
String[] oneZoneArr = zoneArr[j].split(":");
//TODO check what this values are from SD
zon.dbID = Integer.parseInt(oneZoneArr[0]);
zon.id = Integer.parseInt(oneZoneArr[1]);
zon.ZoneName = oneZoneArr[2];
String channelListStr = oneZoneArr[3];
String[] channelArr = channelListStr.split(",");
for(int k =0; k < channelArr.length; k++)
{
Channel chn = new Channel();
String[] oneChnArr = channelArr[k].split("/");
chn.dbID = Integer.parseInt(oneChnArr[0]);
chn.id = Integer.parseInt(oneChnArr[1]);
chn.chName = oneChnArr[2];
//add channel to zone
zon.channelList.add(chn);
}
//add zone to radio GW
rgw.zoneList.add(zon);
}
RadioGWList.add(rgw);
count++;
}
count +=this.RadioGWList.size();
SM.Debug("radio","RadioGWList size:" +this.RadioGWList.size() + " total:" +count);
case 200 /* gw list */:
RadioGWList = getRadioGWList();
break;
}
case OperationCodes.CHANNEL_BRDCST:
{
try {
zac = new Zone_and_channel();
String[] tempArr = payload.split("&");
String[] gwID_and_rgwID = tempArr[0].split("/");
zac.gwID = Integer.parseInt(gwID_and_rgwID[0]);
zac.rgwID = Integer.parseInt(gwID_and_rgwID[1]);
String[] zoneNr_and_channelNr = tempArr[1].split("/");
zac.zoneNr = Integer.parseInt(zoneNr_and_channelNr[0]);
zac.channelNr = Integer.parseInt(zoneNr_and_channelNr[1]);
} catch (Exception e) {
SM.Debug("Cmd 204 error:"+e.toString());
}
zac = parse_CHANNEL_BRDCST(payload);
break;
}
case OperationCodes.RADIO_STATUS_REP:
{
try {
rStatus = new RadioStatus();
String[] tempArr = payload.split("&");
if(tempArr.length == 4 || tempArr.length == 5) {
rStatus.status = 1;
rStatus.incCall.callStatus = Integer.parseInt(tempArr[0]);
rStatus.incCall.callType = Integer.parseInt(tempArr[1]);
rStatus.incCall.Imei = Integer.parseInt(tempArr[2]);
rStatus.incCall.callerID = Integer.parseInt(tempArr[2]);
rStatus.incCall.groupId = Integer.parseInt(tempArr[3]);
rStatus.incCall.callDestID = Integer.parseInt(tempArr[3]);
if(tempArr.length == 5)
rStatus.incCall.userID = Integer.parseInt(tempArr[4]);
}
else {
String[] gwID_and_rgwID = tempArr[0].split("/");
rStatus.gwID = Integer.parseInt(gwID_and_rgwID[0]);
rStatus.rgwID = Integer.parseInt(gwID_and_rgwID[1]);
rStatus.status = Integer.parseInt(tempArr[1]);
}
} catch (Exception e) {
SM.Debug("Cmd 199 error:"+e.toString());
}
rStatus = parse_RADIO_STATUS_REP(payload);
break;
}
case 250:
{
try {
suStatus = new SUstatus();
String[] tempArr = payload.split("&");
suStatus.imei = Integer.parseInt(tempArr[0]);
suStatus.status = Integer.parseInt(tempArr[1]);
} catch (Exception e) {
SM.Debug("Cmd 250 error:"+e.toString());
}
case OperationCodes.UNIT_STATUS_UPDATE :
suStatus = parse_UNIT_STATUS_UPDATE(payload);
break;
}
case 125:
case OperationCodes.CALL_STATUS_BRDCST:
{
try {
incCall = new IncCall();
incCall.opCode = rOpcode;
String[] tempArr = payload.split("&");
String[] gwID_and_rgwID_imei = tempArr[0].split("/");
incCall.gwID = Integer.parseInt(gwID_and_rgwID_imei[0]);
incCall.rgwID = Integer.parseInt(gwID_and_rgwID_imei[1]);
incCall.Imei = Long.parseLong(gwID_and_rgwID_imei[2]);
incCall.callStatus = Integer.parseInt(tempArr[1]);
incCall.callType = Integer.parseInt(tempArr[2]);
incCall.groupId = Integer.parseInt(tempArr[3]);
incCall.userID = Integer.parseInt(tempArr[4]);
} catch (Exception e) {
SM.Debug("Cmd 125, 126 error:"+e.toString());
}
incCall = parse_CALL_STATUS_BRDCST(payload);
break;
}
case 121:
case 122:
@ -265,21 +153,9 @@ public class RadioMSG extends TCPmsg {
}
case OperationCodes.CALL_TYPE_REP:
{
try {
incCall = new IncCall();
incCall.opCode = rOpcode;
String[] tempArr = payload.split("/");
incCall.callType = Integer.parseInt(tempArr[0]);
incCall.callStatus = Integer.parseInt(tempArr[1]);
SM.Debug("GOT CHANGE CALL TYPE MSG", incCall.opCode + " # " + incCall.callType + " # " + incCall.callStatus);
} catch (Exception e) {
SM.Debug("Cmd 115,116,117 error:"+e.toString());
}
incCall = parse_CALL_TYPE_REP(payload);
break;
}
case 172:
{
@ -302,20 +178,10 @@ public class RadioMSG extends TCPmsg {
}
case OperationCodes.EMERGENCY_REP:
{
try {
emerg = new Emerg();
String[] tempArr = payload.split("/");
emerg.function = Integer.parseInt(tempArr[0]);
emerg.status = Integer.parseInt(tempArr[1]);
// emerg.userID = Integer.parseInt(tempArr[2]);
} catch (Exception e) {
SM.Debug("Cmd 230 error:"+e.toString());
}
emerg = parse_EMERGENCY_REP(payload);
break;
}
/*
case OperationCodes.CONTACTS_REP:
@ -341,4 +207,254 @@ public class RadioMSG extends TCPmsg {
}
private RadioGW parseRadioGW(String buffer)
{
RadioGW rgw = new RadioGW();
String[] radioFields = buffer.split("&");
if( radioFields.length > 3 ) {
rgw.ID = Integer.parseInt(radioFields[0].trim());
rgw.GW_ID = Integer.parseInt(radioFields[1].trim());
rgw.IMEI = radioFields[2];
rgw.IP = radioFields[3];
}
return rgw;
}
private Zone parseZone(String buffer)
{
Zone zone = new Zone();
String[] zoneFields = buffer.split(":");
if( zoneFields.length > 2 ) {
zone.dbID = Integer.parseInt(zoneFields[0].trim());
zone.id = Integer.parseInt(zoneFields[1].trim());
zone.ZoneName = zoneFields[2];
}
return zone;
}
private Channel parseChannel(String buffer)
{
Channel channel = new Channel();
String[] channelFields = buffer.split("/");
if( channelFields.length > 2 ) {
channel.dbID = Integer.parseInt(channelFields[0].trim());
channel.id = Integer.parseInt(channelFields[1].trim());
channel.chName = channelFields[2].trim();
}
return channel;
}
private String[] getChannelList(String zone)
{
String[] zoneArr = zone.split(":");
if ( zoneArr.length > 3)
return zoneArr[3].split(",");
return null;
}
private String[] getZoneList(String gw)
{
String[] zoneArr = gw.split("&");
if ( zoneArr.length > 4)
return zoneArr[4].split("@");
return null;
}
private ArrayList<RadioGW> getRadioGWList()
{
ArrayList<RadioGW> radioGWList = new ArrayList<RadioGW>();
String[] radioGWArr = payload.split(";");
for(int i=0; i < radioGWArr.length; i++)
{
RadioGW rgw = parseRadioGW(radioGWArr[i]);
String[] zoneArr = getZoneList(radioGWArr[i]);
if( zoneArr == null)
continue;
for(int j=0; j < zoneArr.length; j++)
{
Zone zone = parseZone(zoneArr[j]);
String[] channelArr = getChannelList(zoneArr[j]);
if( channelArr == null)
continue;
for(int k =0; k < channelArr.length; k++)
{
Channel channel = parseChannel(channelArr[k]);
//add channel to zone
zone.channelList.add(channel);
}
//add zone to radio GW
rgw.zoneList.add(zone);
}
radioGWList.add(rgw);
}
return radioGWList;
}
private Zone_and_channel parse_CHANNEL_BRDCST(String payload) {
Zone_and_channel zacObj = new Zone_and_channel();
try {
String[] tempArr = payload.split("&");
String[] gwID_and_rgwID = tempArr[0].split("/");
zacObj.gwID = Integer.parseInt(gwID_and_rgwID[0].trim());
zacObj.rgwID = Integer.parseInt(gwID_and_rgwID[1].trim());
String[] zoneNr_and_channelNr = tempArr[1].split("/");
zacObj.zoneNr = Integer.parseInt(zoneNr_and_channelNr[0].trim());
zacObj.channelNr = Integer.parseInt(zoneNr_and_channelNr[1].trim());
} catch (Exception e) {
SM.Debug("Cmd 204 error:"+e.toString());
}
return zacObj;
}
private IncCall parse_CALL_STATUS_BRDCST(String payload)
{
IncCall incCallObj = new IncCall();
try {
incCallObj.opCode = rOpcode;
String[] tempArr = payload.split("&");
String[] gwID_and_rgwID_imei = tempArr[0].split("/");
incCallObj.gwID = Integer.parseInt(gwID_and_rgwID_imei[0]);
incCallObj.rgwID = Integer.parseInt(gwID_and_rgwID_imei[1]);
incCallObj.Imei = Long.parseLong(gwID_and_rgwID_imei[2]);
incCallObj.callStatus = Integer.parseInt(tempArr[1]);
incCallObj.callType = Integer.parseInt(tempArr[2]);
incCallObj.groupId = Integer.parseInt(tempArr[3]);
if (tempArr.length > 4 )
incCallObj.userID = Integer.parseInt(tempArr[4]);
} catch (Exception e) {
SM.Debug("Cmd 125, 126 error:"+e.toString());
}
return incCallObj;
}
private RadioStatus parse_RADIO_STATUS_REP(String payload)
{
RadioStatus radioStatus = new RadioStatus();
try
{
String[] tempArr = payload.split("&");
if(tempArr.length == 4 || tempArr.length == 5) {
radioStatus.status = 1;
radioStatus.incCall.callStatus = Integer.parseInt(tempArr[0]);
radioStatus.incCall.callType = Integer.parseInt(tempArr[1]);
radioStatus.incCall.Imei = Integer.parseInt(tempArr[2]);
radioStatus.incCall.callerID = Integer.parseInt(tempArr[2]);
radioStatus.incCall.groupId = Integer.parseInt(tempArr[3]);
radioStatus.incCall.callDestID = Integer.parseInt(tempArr[3]);
if(tempArr.length == 5)
radioStatus.incCall.userID = Integer.parseInt(tempArr[4]);
}
else {
String[] gwID_and_rgwID = tempArr[0].split("/");
radioStatus.gwID = Integer.parseInt(gwID_and_rgwID[0]);
radioStatus.rgwID = Integer.parseInt(gwID_and_rgwID[1]);
radioStatus.status = Integer.parseInt(tempArr[1]);
}
}
catch (Exception e) {
SM.Debug("Cmd 199 error:"+e.toString());
}
return radioStatus;
}
private Emerg parse_EMERGENCY_REP(String payload)
{
Emerg emergObj = new Emerg();
try {
String[] tempArr = payload.split("/");
emergObj.function = Integer.parseInt(tempArr[0]);
emergObj.status = Integer.parseInt(tempArr[1]);
// emerg.userID = Integer.parseInt(tempArr[2]);
} catch (Exception e) {
SM.Debug("Cmd 230 error:"+e.toString());
}
return emergObj;
}
private SUstatus parse_UNIT_STATUS_UPDATE(String payload)
{
SUstatus suStatusObj = new SUstatus();
try {
String[] tempArr = payload.split("&");
suStatusObj.imei = Integer.parseInt(tempArr[0]);
suStatusObj.status = Integer.parseInt(tempArr[1]);
} catch (Exception e) {
SM.Debug("Cmd 250 error:"+e.toString());
}
return suStatusObj;
}
private IncCall parse_CALL_TYPE_REP(String payload)
{
IncCall incCallObj = new IncCall();
try {
incCallObj.opCode = rOpcode;
String[] tempArr = payload.split("/");
incCallObj.callType = Integer.parseInt(tempArr[0]);
incCallObj.callStatus = Integer.parseInt(tempArr[1]);
SM.Debug("GOT CHANGE CALL TYPE MSG", incCallObj.opCode + " # " + incCallObj.callType + " # " + incCallObj.callStatus);
} catch (Exception e) {
SM.Debug("Cmd 115,116,117 error:"+e.toString());
}
return incCallObj;
}
}

View File

@ -227,7 +227,8 @@ public class TCPmsgParser implements Runnable {
if (TCPhandler.msgList == null)
continue;
if(!TCPhandler.msgList.isEmpty()) {
try {
try {
_msg = TCPhandler.msgList.poll();
if(_msg == null)
continue;
@ -235,27 +236,32 @@ public class TCPmsgParser implements Runnable {
continue;
//parse the rest of the message;
switch(_msg.opCode) {
case 40:{
switch(_msg.opCode)
{
case 40: /* login */{
_fireLoginEvent();
break;
}
}
case 41:{
case 41: /* vehicle */ {
_fireVehEvent();
break;
}
case 42:{
case 42: /* Text Message */{
_fireSMSEvent();
break;
}
case 43:{
case 43: /* Last text message */ {
_fireLastSMSEvent();
break;
}
case OperationCodes.TM_ACK:
case OperationCodes.TM_ACK_SD: {
_fireSMSconfirm();
@ -265,24 +271,25 @@ public class TCPmsgParser implements Runnable {
case OperationCodes.RECEIVED_TM:{
_fireNewSMS();
break;
}
}
case 45:{
case 45: /* last position */ {
_fireLastPos();
break;
}
case 131:{
case 131: /* gps */ {
_fireGPSEvent();
break;
}
case 231:{
case 231: /* pool */ {
_firePOLLEvent();
break;
}
case 50:{
case 50: /* radio */ {
_fireRadioEvent();
break;
}
@ -297,12 +304,14 @@ public class TCPmsgParser implements Runnable {
break;
}
case 47:{
case 47: /* alert list */ {
_fireAlarmList();
break;
}
case 48:{
case 48: /* alert ack */ {
_fireAlarmACK();
break;
}
@ -359,8 +368,10 @@ public class TCPmsgParser implements Runnable {
default:
break;
}
} catch(Exception ex) {
}
catch(Exception ex) {
try {
if(TCPhandler.msgList.size() > 0)
_msg = TCPhandler.msgList.remove(0);
@ -370,6 +381,7 @@ public class TCPmsgParser implements Runnable {
}
}
}
SM.Debug("TCPmsgParser listen thread stoped.");
}

View File

@ -1,15 +1,4 @@
<?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.
-->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -74,17 +63,17 @@
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_alignBottom="@+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" />
android:textSize="10sp"
tools:text="a year ago [01:05:01]" />
<ImageView
android:id="@+id/speed"

View File

@ -24,6 +24,7 @@ public class AudioHandle implements Runnable{
private UDPclient udp;
private TcpAudioClient tcp;
private int audioport = 50001;
public int typeUDP;
public AudioHandle(String IP, int _typeUDP)
@ -89,7 +90,7 @@ public class AudioHandle implements Runnable{
t_micListner.start();
if(typeUDP==1)
if(typeUDP == 1)
{
udp.addUDPListener(new IUDPListener()
{
@ -99,7 +100,7 @@ public class AudioHandle implements Runnable{
byte[] data = event.data();
int len = event.len();
SM.Debug("recv b:"+len+" data.length:"+data.length);
if(data!=null)
if(data != null)
PlaySound(data, len);
}
@ -141,20 +142,22 @@ public class AudioHandle implements Runnable{
if (soundNeeded)
{
//SM.Debug("sending b:"+bRead);
if(typeUDP==1)
{
tempBuffer = new byte[512];//128];//invers3.bufferSize];
bRead = recDev.read(tempBuffer, 0, 512);// 128);//invers3.bufferSize);
if(typeUDP == 1)
{
int size = 512; // 2048
tempBuffer = new byte[size];
bRead = recDev.read(tempBuffer, 0, size);
udp.Send(tempBuffer,bRead);
SM.Debug("UDP sending b:"+bRead);
}
else
{
tempBuffer = new byte[2048];//128];//invers3.bufferSize];
bRead = recDev.read(tempBuffer, 0, 2048);// 128);//invers3.bufferSize);
/*
tempBuffer = new byte[16384];//128];//invers3.bufferSize];
bRead = recDev.read(tempBuffer, 0,16384);// 128);//invers3.bufferSize);*/
int size = 1024; //
tempBuffer = new byte[size];
bRead = recDev.read(tempBuffer, 0, size);
tcp.send(tempBuffer,bRead);
SM.Debug("TCP sending b:"+bRead);
}

View File

@ -128,9 +128,12 @@ public class AlarmActivity extends Activity {
setConvertViewAlarm(arg1);
// save position
ackPosition = position;
if (!AppParams.DEMO)
if (!AppParams.DEMO) {
getParentTab().getAlarms(AppParams.USERID);
setACK(getAllAlarms().get(position).idx, getAllAlarms().get(position).type, getAllAlarms().get(position).unitName);
else {
acknowledged.set(position, true);
updateResultsInUi(ALARM);
} else {
getAllAlarms().get(position).ack = 1;
updateResultsInUi("else");
}

View File

@ -93,14 +93,14 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
String speed, address, gpsLocation, name = "";
if (isLiveTab) {
SuperVehicle vehicle = superVehHash.get(key);
positionTime = new Date(vehicle.timeGMT);
positionTime = new Date((new Date()).getTime() - vehicle.timeGMT);
address = vehicle.Address != null ? vehicle.Address : "";
name = vehicle.name;
speed = String.format(context.getResources().getString(R.string.speedMph), vehicle.speed);
gpsLocation = "[" + String.format("%.4f", vehicle.lat) + "," + String.format("%.4f",vehicle.lng) + "]";
} else {
HistPos histPos = histPosList.get(position);
positionTime = new Date(histPos.timeGMT);
positionTime = new Date((new Date()).getTime() - histPos.timeGMT);
address = histPos.Address != null ? histPos.Address : "";
speed = String.format(context.getResources().getString(R.string.speedMph), histPos.speed);
gpsLocation = "[" + String.format("%.4f", histPos.lat) + "," + String.format("%.4f",histPos.lng) + "]";

View File

@ -11,9 +11,11 @@ import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
@ -52,6 +54,7 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
private final ArrayList<Vehicle> allVehicle = new ArrayList<>();
private final ArrayList<String> allVehicleNames = new ArrayList<>();
private final SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd yyyy");
private boolean showVehicles = true;
@Override
@ -100,6 +103,32 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
}
});
ImageView mapType = findViewById(R.id.changeMapTypeHeader);
mapType.setOnClickListener(view -> {
if (googleMap.getMapType() != GoogleMap.MAP_TYPE_SATELLITE) {
mapType.setImageResource(R.drawable.map);
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
} else {
mapType.setImageResource(R.drawable.satellite);
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
});
LinearLayout slideLayout = findViewById(R.id.slidelayout);
LinearLayout linearLayoutVehicles = findViewById(R.id.layoutBig);
ImageView slideLayoutImageView = findViewById(R.id.slideLayoutImage);
slideLayout.setOnClickListener(v -> {
if (showVehicles) {
linearLayoutVehicles.setVisibility(View.GONE);
slideLayoutImageView.setImageResource(R.drawable.arrow_right);
showVehicles = false;
} else {
linearLayoutVehicles.setVisibility(View.VISIBLE);
slideLayoutImageView.setImageResource(R.drawable.arrow_left);
showVehicles = true;
}
});
setDate();
}
@ -247,6 +276,7 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
infoBubble = new GoogleMapsInfoBubble(getLayoutInflater(), this);
this.googleMap.setInfoWindowAdapter(infoBubble);
this.googleMap.getUiSettings().setMapToolbarEnabled(false);
parentTab.demoPositionsList();
displayButton.performClick();

View File

@ -32,6 +32,7 @@ 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;
@ -88,7 +89,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
private boolean isAck = false;
private boolean showVehicle = true;
private int contextMenuPosition;
private int vehStatus;
private int vehStatus, lastItemClicked;
private int position; // vehStatus = vehicle status received from apps
/* Live Vehicle GridView */
@ -145,11 +146,11 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
// image View for changing map type satellite or map
ImageView changeMapTypeImageView = findViewById(R.id.changeMapType);
changeMapTypeImageView.setOnClickListener(v -> {
if (googleMap.getMapType() == GoogleMap.MAP_TYPE_SATELLITE) {
changeMapTypeImageView.setImageResource(R.drawable.satellite);
if (googleMap.getMapType() != GoogleMap.MAP_TYPE_SATELLITE) {
changeMapTypeImageView.setImageResource(R.drawable.map);
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
} else {
changeMapTypeImageView.setImageResource(R.drawable.map);
changeMapTypeImageView.setImageResource(R.drawable.satellite);
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
});
@ -254,7 +255,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
}
// refresh UI
displayVehicle(true, LAT_OUTLIMIT, LNG_OUTLIMIT);
displayVehicle(LAT_OUTLIMIT, LNG_OUTLIMIT);
});
displayButton = findViewById(R.id.buttonDisplay);
@ -285,11 +286,11 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
}
// refresh UI
displayVehicle(true, LAT_OUTLIMIT, LNG_OUTLIMIT);
displayVehicle(LAT_OUTLIMIT, LNG_OUTLIMIT);
});
// display Vehicles
displayVehicle(true, LAT_OUTLIMIT, LNG_OUTLIMIT);
displayVehicle(LAT_OUTLIMIT, LNG_OUTLIMIT);
// register to receive broadcasts
registerBroadcastIntents();
@ -309,6 +310,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
this.googleMap = googleMap;
GoogleMapsInfoBubble infoBubble = new GoogleMapsInfoBubble(getLayoutInflater(), this, getParentTab().getSuperVehHash());
this.googleMap.setInfoWindowAdapter(infoBubble);
this.googleMap.getUiSettings().setMapToolbarEnabled(false);
}
@ -371,7 +373,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
// clear previous vehicles
SM.Debug("onResume");
displayVehicle(true, LAT_OUTLIMIT, LNG_OUTLIMIT);
displayVehicle(LAT_OUTLIMIT, LNG_OUTLIMIT);
}
final Runnable cancelLoadingDialogRUN = LiveActivity.this::cancelLoadingDialog;
@ -440,7 +442,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
});
}
public void displayVehicle(boolean withZoom, double latZoom, double lngZoom) {
public void displayVehicle(double latZoom, double lngZoom) {
if (googleMap != null) {
String openWindow = "";
for (Marker marker : markers) {
@ -462,18 +464,17 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
markerOptions.icon(markerIcon);
Marker marker = this.googleMap.addMarker(markerOptions);
if (openWindow.equals(marker.getTitle()))
if (openWindow.equals(marker.getTitle()) || i == lastItemClicked) {
marker.showInfoWindow();
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(newLocation, 14));
}
markers.add(marker);
}
}
}
}
}
public void showOpenedBalloon(boolean demo) {
//TODO: add show balloon
lastItemClicked = 0;
}
private BitmapDescriptor getProperBitmap(int largeIcon, String text) {
@ -650,7 +651,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
}
// Create runnable for posting
final Runnable updateMapResults = () -> displayVehicle(false, LAT_OUTLIMIT, LNG_OUTLIMIT);
final Runnable updateMapResults = () -> displayVehicle(LAT_OUTLIMIT, LNG_OUTLIMIT);
// Create runnable for posting
final Runnable updatePollResults = () -> {
@ -660,7 +661,7 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
adapter.changeDisplayed(position, true);
}
displayVehicle(true, latPoll, lngPoll); };
displayVehicle(latPoll, lngPoll); };
// Create runnable for posting
final Runnable updateOptionsRUN = this::updateOptionsUI;
@ -678,8 +679,9 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
* @param view View in which will do the modifications
*/
private void itemClick(int position, View view) {
lastItemClicked = position;
// change displayed state
displayedVehicles.set(position, !Boolean.TRUE.equals(displayedVehicles.get(position)));
displayedVehicles.set(position, !displayedVehicles.get(position));
// change in the adapter
adapter.changeDisplayed(position, displayedVehicles.get(position));
@ -687,30 +689,30 @@ public class LiveActivity extends AbstractLiveActivity implements OnMapReadyCall
// change check image for selected value
VehiclesGridViewAdapter.ViewHolder viewLive = (VehiclesGridViewAdapter.ViewHolder) view.getTag();
if (Boolean.TRUE.equals(displayedVehicles.get(position)))
if (displayedVehicles.get(position))
viewLive.imgViewChecked.setImageResource(R.drawable.checked);
else
viewLive.imgViewChecked.setImageResource(R.drawable.unchecked);
// check if all values are identical
boolean identical = true;
for (Boolean displ : displayedVehicles)
if (!Objects.equals(displ, displayedVehicles.get(0))) {
identical = false;
boolean allDisplayed = true;
for (Boolean displayed : displayedVehicles)
if (!displayed) {
allDisplayed = false;
break;
}
// change image when all values are identical
if (identical && Boolean.TRUE.equals(displayedVehicles.get(0))) {
if (allDisplayed) {
imageViewCheckAll.setSelected(true);
imageViewCheckAll.setBackgroundResource(R.drawable.check_all);
} else if (identical && Boolean.TRUE.equals(!displayedVehicles.get(0))) {
} else {
imageViewCheckAll.setSelected(false);
imageViewCheckAll.setBackgroundResource(R.drawable.uncheck_all);
}
// display vehicle
displayVehicle(true, LAT_OUTLIMIT, LNG_OUTLIMIT);
displayVehicle(LAT_OUTLIMIT, LNG_OUTLIMIT);
}
/**

View File

@ -124,16 +124,6 @@ public class MessagesActivity extends Activity {
textViewSelectedContact = findViewById(R.id.textViewSelectedContact);
imageViewSelectedContact = findViewById(R.id.imageViewSelectedContact);
ImageView imageBarcode = findViewById(R.id.imageBarcode);
imageBarcode.setOnClickListener(v -> {
try {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
startActivityForResult(intent, 0);
} catch (Exception e) {
showErrorDialog(getResources().getString(R.string.barcodeError));
}
});
// change tab header fontFace
TextView textView1 = findViewById(R.id.textView1);
textView1.setTypeface(Typeface.createFromAsset(getAssets(), "Sketch_Block.ttf"));

View File

@ -165,37 +165,16 @@ public class SDMobileActivity extends Activity {
ImageView imageLoading = (ImageView) findViewById(R.id.imageLoading);
imageLoading.setBackgroundResource(R.drawable.loading);
// language
imageLanguage = (ImageView) findViewById(R.id.imageLanguage);
// change spinner icon and selected language according to tmpLanguage
switch (AppParams.LANGUAGETMP) {
case "en":
imageLanguage.setImageResource(R.drawable.en);
break;
case "de":
imageLanguage.setImageResource(R.drawable.de);
break;
case "tr":
imageLanguage.setImageResource(R.drawable.tr);
break;
case "ro":
imageLanguage.setImageResource(R.drawable.ro);
break;
case "es":
imageLanguage.setImageResource(R.drawable.es);
break;
case "ru":
imageLanguage.setImageResource(R.drawable.ru);
break;
default:
throw new IllegalStateException("Unexpected value: " + AppParams.LANGUAGETMP);
}
imageLanguage.setOnClickListener(LanguageListener);
setLanguageIcon();
// username and password
etUsername = (EditText) findViewById(R.id.etUsername);
etPassword = (EditText) findViewById(R.id.etPassword);
// login button
btLogin = (Button) findViewById(R.id.btLogin);
btLogin.setOnClickListener(arg0 -> {
@ -287,6 +266,35 @@ public class SDMobileActivity extends Activity {
}
}
private void setLanguageIcon()
{
// change spinner icon and selected language according to tmpLanguage
switch (AppParams.LANGUAGETMP) {
case "en":
imageLanguage.setImageResource(R.drawable.en);
break;
case "de":
imageLanguage.setImageResource(R.drawable.de);
break;
case "tr":
imageLanguage.setImageResource(R.drawable.tr);
break;
case "ro":
imageLanguage.setImageResource(R.drawable.ro);
break;
case "es":
imageLanguage.setImageResource(R.drawable.es);
break;
case "ru":
imageLanguage.setImageResource(R.drawable.ru);
break;
default:
throw new IllegalStateException("Unexpected value: " + AppParams.LANGUAGETMP);
}
}
@Override
public void onBackPressed() {
if (loadingDialog.isShowing())

View File

@ -214,20 +214,6 @@
android:autofillHints="">
</EditText>
</LinearLayout>
<LinearLayout
android:layout_weight="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingTop="4dp">
<ImageView
android:id="@+id/imageBarcode"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:src="@drawable/barcode"
android:paddingTop="2dp"
android:layout_margin="3dp" />
</LinearLayout>
<Button
android:id="@+id/imageButtonSend"
android:layout_width="wrap_content"

View File

@ -150,18 +150,18 @@
android:enabled="true"
android:textColor="#000000"
android:layout_marginBottom="5sp" />
<ImageView
android:id="@+id/imageSettings"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:contentDescription="holds the icon for language"
android:src="@drawable/change_ip"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:layout_alignTop="@+id/imageLanguage"
android:layout_alignBottom="@+id/imageLanguage"
android:layout_alignParentRight="true" />
<ImageView
android:id="@+id/imageSettings"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_alignTop="@+id/imageLanguage"
android:layout_alignBottom="@+id/imageLanguage"
android:layout_alignParentRight="true"
android:adjustViewBounds="true"
android:contentDescription="holds the icon for language"
android:scaleType="fitCenter"
android:src="@drawable/change_ip" />
<Button
android:id="@+id/buttonLogin"

View File

@ -213,19 +213,6 @@
android:autofillHints="">
</EditText>
</LinearLayout>
<LinearLayout
android:layout_weight="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingTop="4dp">
<ImageView
android:id="@+id/imageBarcode"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:src="@drawable/barcode"
android:layout_margin="3dp" />
</LinearLayout>
<Button
android:id="@+id/imageButtonSend"
android:layout_width="wrap_content"