Compare commits

..

38 Commits

Author SHA1 Message Date
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
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
feb7bd654c update info bubble box info 2022-04-07 13:31:23 +03: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
0bdd161d69 when receiving a new alarm && current tab is alarms, refresh alarm list 2022-04-07 13:14:58 +03: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
5c075ee168 display alarm notification 2022-04-04 09:59:49 +03:00
1299ff2d2e Merge pull request 'make messages view match parent' (#19) from SD-225 into develop
Reviewed-on: #19
2022-04-04 05:58:15 +00:00
8ab29576c5 make messages view match parent 2022-04-04 08:56:52 +03:00
d9a031a46d Merge pull request 'feature/notifications' (#18) from feature/notifications into develop
Reviewed-on: #18
2022-04-01 07:03:54 +00:00
ba0dc850f7 display notifications 2022-03-31 14:12:03 +03:00
b2fdb1c8d7 Merge pull request 'SD-203- added dialogs similar to SafeDispatch History to inform of 0 positions or >2000 positions' (#17) from features/SD-203-add-dialogs-for-history-tab into develop
Reviewed-on: #17
2022-03-31 05:13:10 +00:00
19f5fe01a3 SD-203- added dialogs similar to SafeDispatch History to inform of 0 positions or >2000 positions 2022-03-31 08:07:39 +03:00
7b45edb624 Merge pull request 'SD-216 - fix back button functionality for recordings and history tabs' (#16) from fix/SD-216-back-navigation-broken into develop
Reviewed-on: #16
2022-03-31 04:21:59 +00:00
3a0fe96708 SD-216 - fix back button functionality for recordings and history tabs 2022-03-31 07:19:40 +03:00
5cd598bec9 Merge pull request 'features/SD-211-recordings-tab' (#14) from features/SD-211-recordings-tab into develop
Reviewed-on: #14
2022-03-30 11:26:25 +00:00
79234c9830 Merge branch 'develop' into features/SD-211-recordings-tab 2022-03-30 14:22:20 +03:00
ca4255943a clean code 2022-03-30 12:52:38 +03:00
cbeb912820 Merge pull request 'allow server to reconnect on mobile data' (#15) from feature/allow_server_reconnection_on_mobile_data into develop
Reviewed-on: #15
2022-03-30 08:52:35 +00:00
f15688b9a1 allow server to reconnect on mobile data 2022-03-30 11:50:48 +03:00
3935b3ad0b SD-211 - fix file rename issue after merge 2022-03-30 11:19:33 +03:00
e59b522ccb Merge branch 'develop' into features/SD-211-recordings-tab
# Conflicts:
#	libSafeMobile/src/main/java/com/safemobile/services/TCPhandler.java
#	safeDispatch/src/main/res/layout/dialog_login.xml
2022-03-30 10:38:47 +03:00
94091a9a31 Merge pull request 'text color on radio' (#13) from feature/icon_and_background into develop
Reviewed-on: #13
2022-03-28 13:38:39 +00:00
d9d325b18b text color on radio 2022-03-28 16:34:53 +03:00
f4c6b8163d Merge pull request 'change text color + small changes' (#12) from feature/icon_and_background into develop
Reviewed-on: #12
2022-03-28 11:09:20 +00:00
17a7e1711e merge with develop 2022-03-28 14:06:36 +03:00
9b302d0461 change text color + small changes 2022-03-28 14:02:10 +03:00
36 changed files with 1373 additions and 1445 deletions

View File

@ -255,13 +255,12 @@ public abstract class AbstractSDParentActivity extends TabActivity {
return res;
}
public boolean getAlarms(long userID)
{
if(tcp == null)
public boolean getAlarms(long userID) {
if (tcp == null)
return false;
boolean res = tcp.Write("0.0", "#27#" + userID + "#");
if(res)
if (res)
SM.Debug("Message [GetAlarms] sent to app server");
else
SM.Debug("Could not send message [GetAlarms]!!");

View File

@ -28,13 +28,11 @@ public class TCPService extends Service {
int port = 13589;
try {
port = Integer.parseInt(AppParams.PORT);
}
catch(Exception ex) { }
} catch(Exception ex) { }
tcpParser = new TCPmsgParser();
if(tcp == null && !AppParams.IP.equalsIgnoreCase("n/a"))
{
if(tcp == null && !AppParams.IP.equalsIgnoreCase("n/a")) {
tcp = new TCPhandler(getApplicationContext(), AppParams.IP, port);
}

View File

@ -5,7 +5,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import com.safemobile.lib.AppParams;
@ -38,21 +37,19 @@ public class TCPhandler implements Runnable {
private String leftOver = "";
public static LinkedList<TCPmsg> msgList;
private volatile int n = 0;
public Boolean isConnectionUP = false;
public Boolean previousConnectionWasUP = false;
private Context context;
private boolean isWiFiOn = true;
private final Context context;
private boolean isWiFiOn;
public TCPhandler(Context context, String hostName, int p) {
this.context = context;
serverHostname = hostName;
port = p;
msgList = new LinkedList<TCPmsg>();
msgList = new LinkedList<>();
SM.Debug("---TCPhandler constructor [" + hostName + "," + p + "] ---");
listenThread = new Thread(this, "TCPlisten");
listenThread.start(); // (2) Start the thread.
@ -64,7 +61,6 @@ public class TCPhandler implements Runnable {
public void run() {
try {
previousConnectionWasUP = isConnectionUP;
// try to send something
TCPmsgParser._fireonTCPConnectionStatusEvent(isConnectionUP, previousConnectionWasUP);
} catch (Exception e) {
@ -74,16 +70,18 @@ public class TCPhandler implements Runnable {
}, 0, 3000);
// get WiFi state
ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWifi.isConnectedOrConnecting())
isWiFiOn = true;
isWiFiOn = isNetworkConnected();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
context.registerReceiver(mReceived, intentFilter);
}
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
}
@Override
public void run() {
try {
@ -100,20 +98,19 @@ public class TCPhandler implements Runnable {
isConnectionUP = true;
triggerTCPConnectionStateEvent();
}
} catch (UnknownHostException e) {
SM.Debug("UnknownHostException", "TCPhandler break:" + e.toString());
SM.Debug("UnknownHostException", "TCPhandler break:"+ e);
} catch (IllegalArgumentException e) {
SM.Debug("IllegalArgumentException", "TCPhandler break:" + e.toString());
SM.Debug("IllegalArgumentException", "TCPhandler break:"+ e);
} catch (IOException e) {
SM.Debug("IOException", "TCPhandler break:" + e.toString());
SM.Debug("IOException", "TCPhandler break:"+ e);
}
while (alive) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
SM.Debug("TCPhandler Crash1 on sleep:" + e.toString());
SM.Debug("TCPhandler Crash1 on sleep:"+ e);
}
while (Boolean.TRUE.equals(isConnectionUP)) {
@ -166,7 +163,7 @@ public class TCPhandler implements Runnable {
//end process leftover
String data = "";
n = 0;
int n = 0;
byte[] buf = new byte[1024];
// read data into buffer
@ -181,7 +178,6 @@ public class TCPhandler implements Runnable {
break;
}
byte[] temp = new byte[n];
if (n >= 0) System.arraycopy(buf, 0, temp, 0, n);
@ -190,41 +186,41 @@ public class TCPhandler implements Runnable {
data = new String(temp);
//if we have any leftovers from previous message add them
if (leftOver.length() > 1) // avoid case with only one #
{
data = leftOver + data;
leftOver = "";
}
//if we have any leftovers from previous message add them
if(leftOver.length() > 1) { // avoid case with only one #
data = leftOver+data;
leftOver = "";
}
//search for overflow message
String[] tempArr = data.split("#");
if ((tempArr.length == 0) || (tempArr.length == 1)) {
SM.Debug("TCP Client", "incorect messagebuss message=" + data);
continue;
}
//get msg len
int messLen;
//search for overflow message
String[] tempArr = data.split("#");
if ((tempArr.length == 0) || (tempArr.length == 1)) {
SM.Debug("TCP Client", "incorect messagebuss message=" + data);
continue;
}
//get msg len
int messLen;
try {
messLen = Integer.parseInt(tempArr[1]);
} catch (Exception e) {
SM.Debug("TCP Client", "incorect msg len =" + tempArr[1]);
continue;
}
//messLen not int
if (messLen == -1) {
continue;
}
char[] temMSG = data.toCharArray();
if (data.length() != messLen) {
if (messLen > data.length()) {
leftOver = data; // Add by bigu
continue;
}
//perform cut
temMSG = data.substring(0, messLen).toCharArray();
leftOver = data.substring(messLen, data.length());
}
//messLen not int
if (messLen == -1) {
continue;
}
char[] temMSG = data.toCharArray();
if (data.length() != messLen) {
//if expected string message is smaller then actual string then exit processing;
if (messLen > data.length()) {
leftOver = data; // Add by bigu
continue;
}
//perform cut
temMSG = data.substring(0,messLen).toCharArray();
leftOver = data.substring(messLen);
}
//decode TCP msg
TCPmsg msg = new TCPmsg(temMSG);
@ -234,33 +230,28 @@ public class TCPhandler implements Runnable {
prioritizePongReceived();
msgList.add(msg);
} catch (Exception ex) {
SM.Debug("TCPHandler", "TCPhandler/run/break:" + ex.toString());
} catch(Exception ex) {
SM.Debug("TCPHandler", "TCPhandler/run/break:"+ ex);
isConnectionUP = false;
triggerTCPConnectionStateEvent();
}
}
//
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
SM.Debug("TCPhandler Crash2 on sleep:" + e.toString());
SM.Debug("TCPhandler Crash2 on sleep:"+ e);
}
//try to restart connection
if (alive && isWiFiOn)
restartTCP();
}
SM.Debug("==================================");
SM.Debug("TCP listenThread stoped!! alive = false");
SM.Debug("==================================");
}
/**
* Create a bypass in order to trigger the ping received event
*/
@ -268,33 +259,26 @@ public class TCPhandler implements Runnable {
TCPmsgParser._firePONGReceivedEvent();
}
/* Broadcast Received for WiFi Connect/Disconnect */
public BroadcastReceiver mReceived = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
SM.Debug("WIFI STATE", action);
final String action = intent.getAction();
SM.Debug("WIFI STATE", action);
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
// close socket if the wifi is disconnecting or disconnected
if (!info.isConnectedOrConnecting()) {
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
// close socket if the wifi is disconnecting or disconnected
isWiFiOn = isNetworkConnected();
if (!isWiFiOn)
closeSocket();
isWiFiOn = false;
} else
isWiFiOn = true;
}
}
}
};
/**
* Send a message through the TCP Socket
*
* @param seqID The messages's sequence id (a number of order)
* @param msg The messages which will be sent
/** Send a message through the TCP Socket
* @param seqID The messages's sequence ID (a number of order)
* @param msg The messages which will be sent
* @return True if the message was sent
*/
public boolean Write(String seqID, String msg) {
@ -339,51 +323,28 @@ public class TCPhandler implements Runnable {
return false;
}
public void setConnectionIsDown() {
if (input != null) {
try {
input.close();
} catch (IOException e) {
} finally {
input = null;
}
}
isConnectionUP = false;
}
/* Encrypt a string using an encryption algorithm,
* in this case TEA */
public static byte[] encryptTEA(String toEncryptData) {
byte[] encryptedByteArray = new byte[]{};
// no encryption
encryptedByteArray = toEncryptData.getBytes();
return encryptedByteArray;
return toEncryptData.getBytes();
}
/* Decrypt a string using an encryption algorithm,
* in this case TEA */
public static byte[] decryptTEA(byte[] toDecryptData) {
byte[] decryptedByteArray = new byte[]{};
byte[] decryptedByteArray;
// no decryption
decryptedByteArray = toDecryptData;
return decryptedByteArray;
}
public int getPort() {
return port;
}
public void updateTCPparameters(String ip, String _port) {
// stop socket
try {
if (soc != null)
@ -395,9 +356,8 @@ public class TCPhandler implements Runnable {
serverHostname = ip;
try {
port = Integer.parseInt(_port);
} catch (Exception e) {
} finally {
} catch (Exception ignored) { }
finally {
port = 13589;
}
}
@ -438,23 +398,11 @@ public class TCPhandler implements Runnable {
SM.Exception("restartTCP break:" + e.toString());
isConnectionUP = false;
}
triggerTCPConnectionStateEvent();
}
public boolean isAlive() {
return alive;
}
public void setAlive(boolean alive) {
this.alive = alive;
}
/**
* close Socket when unReachable
*/
/** close Socket when unReachable */
public void closeSocket() {
try {
input = null;
output = null;
@ -470,12 +418,10 @@ public class TCPhandler implements Runnable {
SM.Debug("Stopping TCP", "TCP Connection is stopping on " + AppParams.IP + ":" + port);
alive = false;
if (mReceived != null)
if (mReceived!= null)
try {
context.unregisterReceiver(mReceived);
} catch (Exception ex) {/* receiver not registered //*/}
;
} catch(Exception ex) {/* receiver not registered //*/}
// stop thread
if (listenThread != null) {
@ -484,7 +430,6 @@ public class TCPhandler implements Runnable {
moribund.interrupt();
}
if (input != null) {
try {
input.close();
@ -503,14 +448,13 @@ public class TCPhandler implements Runnable {
}
}
if (soc != null) {
if (soc !=null) {
try {
soc.close();
soc = null;
} catch (IOException e) {
SM.Exception("TCPClient[STOP]", "Stop break:" + e.toString());
SM.Exception("TCPClient[STOP]", "Stop break:"+ e);
}
}
}
}

View File

@ -1,7 +1,6 @@
package com.safemobile.services;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
@ -12,16 +11,14 @@ import com.safemobile.lib.SM;
import com.safemobile.lib.TCPmsg;
public class TCPmsgParser implements Runnable{
public class TCPmsgParser implements Runnable {
public boolean run = true;
private TCPmsg _msg;
private static List<ITCPListener> _listeners = new ArrayList<ITCPListener>();
private static final List<ITCPListener> _listeners = new ArrayList<>();
private Thread TCPmsgParserThread;
public TCPmsgParser()
{
public TCPmsgParser() {
TCPmsgParserThread = new Thread(this, "TCPmsgParserThread");
TCPmsgParserThread.start(); // (2) Start the thread.
}
@ -38,177 +35,151 @@ public class TCPmsgParser implements Runnable{
_listeners.clear();
}
public int getListenersSize()
{
return _listeners.size();
}
private synchronized void _fireLoginEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onLoginReceived( event );
for (ITCPListener listener : _listeners) {
listener.onLoginReceived(event);
}
}
private synchronized void _fireGPSEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onGPSReceived(event);
for (ITCPListener listener : _listeners) {
listener.onGPSReceived(event);
}
}
private synchronized void _fireSMSEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onSMSReceived( event );
for (ITCPListener listener : _listeners) {
listener.onSMSReceived(event);
}
}
private synchronized void _fireLastSMSEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onLastSMSsReceived(event);
for (ITCPListener listener : _listeners) {
listener.onLastSMSsReceived(event);
}
}
private synchronized void _fireVehEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onVehiclesReceived( event );
for (ITCPListener listener : _listeners) {
listener.onVehiclesReceived(event);
}
}
private synchronized void _fireNewSMS() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onNewSMSReceived(event);
for (ITCPListener listener : _listeners) {
listener.onNewSMSReceived(event);
}
}
private synchronized void _fireSMSconfirm() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onSMSAckReceived(event);
for (ITCPListener listener : _listeners) {
listener.onSMSAckReceived(event);
}
}
private synchronized void _fireLastPos() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onLastPositionsReceived(event);
for (ITCPListener listener : _listeners) {
listener.onLastPositionsReceived(event);
}
}
private synchronized void _fireRadioEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onRadioMsgReceived(event);
for (ITCPListener listener : _listeners) {
listener.onRadioMsgReceived(event);
}
}
private synchronized void _fireHistPos() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onHistoryPositionsReceived(event);
for (ITCPListener listener : _listeners) {
listener.onHistoryPositionsReceived(event);
}
}
private synchronized void _fireHistCount() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onHistoryPositionsCountReceived(event);
for (ITCPListener listener : _listeners) {
listener.onHistoryPositionsCountReceived(event);
}
}
private synchronized void _fireAlarmList() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onAlarmsReceived(event);
for (ITCPListener listener : _listeners) {
listener.onAlarmsReceived(event);
}
}
private synchronized void _fireAlarmACK() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).onAlarmAckReceived(event);
for (ITCPListener listener : _listeners) {
listener.onAlarmAckReceived(event);
}
}
private synchronized void _fireAlarmLive() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next() ).alarmLiveReceived(event);
for (ITCPListener listener : _listeners) {
listener.alarmLiveReceived(event);
}
}
private synchronized void _fireRecordList() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onRecordingsListReceived(event);
for (ITCPListener listener : _listeners) {
listener.onRecordingsListReceived(event);
}
}
private synchronized void _fireRecordPlay() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onRecordingPlayReceived(event);
for (ITCPListener listener : _listeners) {
listener.onRecordingPlayReceived(event);
}
}
private synchronized void _firePOLLEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onPollReceived(event);
for (ITCPListener listener : _listeners) {
listener.onPollReceived(event);
}
}
private synchronized void _fireConnectionReplyEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onConnectionReplyReceived(event);
for (ITCPListener listener : _listeners) {
listener.onConnectionReplyReceived(event);
}
}
private synchronized void _fireContactsReceivedEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onContactsListReceived(event);
for (ITCPListener listener : _listeners) {
listener.onContactsListReceived(event);
}
}
private synchronized void _fireRecordingsReceivedEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onRecordingsListReceived(event);
for (ITCPListener listener : _listeners) {
listener.onRecordingsListReceived(event);
}
}
private synchronized void _fireTextMessagesReceivedEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onTextMessagesListReceived(event);
for (ITCPListener listener : _listeners) {
listener.onTextMessagesListReceived(event);
}
}
@ -216,225 +187,196 @@ public class TCPmsgParser implements Runnable{
private synchronized void _fireRecordingPlayReceivedEvent() {
TCPEvent event = new TCPEvent( this, _msg );
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onRecordingPlayReceived(event);
for (ITCPListener listener : _listeners) {
listener.onRecordingPlayReceived(event);
}
}
public static synchronized void _fireTCPConnectionDownEvent(boolean previuosWasConnectionUp) {
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onTCPConnectionDown(previuosWasConnectionUp);
for (ITCPListener listener : _listeners) {
listener.onTCPConnectionDown(previuosWasConnectionUp);
}
}
public static synchronized void _fireTCPConnectionUpEvent(boolean previuosWasConnectionUp) {
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onTCPConnectionUp(previuosWasConnectionUp);
for (ITCPListener listener : _listeners) {
listener.onTCPConnectionUp(previuosWasConnectionUp);
}
}
public static synchronized void _fireonTCPConnectionStatusEvent(boolean isConnectionUp, boolean previuosWasConnectionUp) {
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onTCPConnectionStatusReceived(isConnectionUp, previuosWasConnectionUp);
for (ITCPListener listener : _listeners) {
listener.onTCPConnectionStatusReceived(isConnectionUp, previuosWasConnectionUp);
}
}
public static synchronized void _firePONGReceivedEvent() {
Iterator<ITCPListener> listeners = _listeners.iterator();
while( listeners.hasNext() ) {
( (ITCPListener) listeners.next()).onPONGReceived();
for (ITCPListener listener : _listeners) {
listener.onPONGReceived();
}
}
@Override
public void run()
{
while(run)
{
//SM.Debug("TCPmsgParser waiting for data...");
public void run() {
while(run) {
sleep(1);
if(TCPhandler.msgList==null)
if (TCPhandler.msgList == null)
continue;
if(!TCPhandler.msgList.isEmpty())
{
try
{
if(!TCPhandler.msgList.isEmpty()) {
try {
_msg = TCPhandler.msgList.poll();
if(_msg == null)
continue;
if(_msg.OK == false)
if(!_msg.OK)
continue;
//parse the rest of the message;
switch(_msg.opCode)
{
case 40:{
_fireLoginEvent();
break;
}
switch(_msg.opCode) {
case 40:{
_fireLoginEvent();
break;
}
case 41:{
_fireVehEvent();
break;
}
case 41:{
_fireVehEvent();
break;
}
case 42:{
_fireSMSEvent();
break;
}
case 42:{
_fireSMSEvent();
break;
}
case 43:{
_fireLastSMSEvent();
break;
}
case 43:{
_fireLastSMSEvent();
break;
}
case OperationCodes.TM_ACK:{
_fireSMSconfirm();
break;
}
case OperationCodes.TM_ACK_SD:{
_fireSMSconfirm();
break;
}
case OperationCodes.TM_ACK:
case OperationCodes.TM_ACK_SD: {
_fireSMSconfirm();
break;
}
case OperationCodes.RECEIVED_TM:{
_fireNewSMS();
break;
}
case OperationCodes.RECEIVED_TM:{
_fireNewSMS();
break;
}
case 45:{
_fireLastPos();
break;
}
case 45:{
_fireLastPos();
break;
}
case 131:{
_fireGPSEvent();
break;
}
case 131:{
_fireGPSEvent();
break;
}
case 231:{
_firePOLLEvent();
break;
}
case 231:{
_firePOLLEvent();
break;
}
case 50:{
_fireRadioEvent();
break;
}
case 50:{
_fireRadioEvent();
break;
}
case 46:{
_fireHistPos();
break;
}
case 46:{
_fireHistPos();
break;
}
case 86:{
_fireHistCount();
break;
}
case 86:{
_fireHistCount();
break;
}
case 47:{
_fireAlarmList();
break;
}
case 47:{
_fireAlarmList();
break;
}
case 48:{
_fireAlarmACK();
break;
}
case 48:{
_fireAlarmACK();
break;
}
case 49:{
_fireRecordList();
break;
}
case 49:{
_fireRecordList();
break;
}
case 38:{
_fireRecordPlay();
break;
}
case 38:{
_fireRecordPlay();
break;
}
case 135:
case 136:
case 137:
case 138:
case 140:{
_fireAlarmLive();
break;
}
case 135:
case 136:
case 137:
case 138:
case 140:{
_fireAlarmLive();
break;
}
case OperationCodes.PONG: {
//_firePONGReceivedEvent();
break;
}
case OperationCodes.PONG: {
//_firePONGReceivedEvent();
break;
}
case OperationCodes.CONNECTION_REP: {
_fireConnectionReplyEvent();
break;
}
case OperationCodes.CONNECTION_REP: {
_fireConnectionReplyEvent();
break;
}
case OperationCodes.CONTACTS_REP: {
sleep(15);
_fireContactsReceivedEvent();
break;
}
case OperationCodes.CONTACTS_REP: {
sleep(15);
_fireContactsReceivedEvent();
break;
}
case OperationCodes.TM_LIST_REP: {
_fireTextMessagesReceivedEvent();
break;
}
case OperationCodes.TM_LIST_REP: {
_fireTextMessagesReceivedEvent();
break;
}
case OperationCodes.RECORDINGS_LIST_REP: {
_fireRecordingsReceivedEvent();
break;
}
case OperationCodes.RECORDING_REP: {
_fireRecordingPlayReceivedEvent();
break;
}
default:
break;
}
}
catch(Exception ex)
{
try {
if(TCPhandler.msgList.size() > 0)
_msg = TCPhandler.msgList.remove(0);
}
catch(NoSuchElementException exe)
{
SM.Exception("TCP msg Parser", "NoSuchElementException");
}
}
}
case OperationCodes.RECORDINGS_LIST_REP: {
_fireRecordingsReceivedEvent();
break;
}
case OperationCodes.RECORDING_REP: {
_fireRecordingPlayReceivedEvent();
break;
}
default:
break;
}
} catch(Exception ex) {
try {
if(TCPhandler.msgList.size() > 0)
_msg = TCPhandler.msgList.remove(0);
} catch(NoSuchElementException exe) {
SM.Exception("TCP msg Parser", "NoSuchElementException");
}
}
}
}
/*
catch (Exception e)
{
SM.Debug("Error on fire Event:"+e.toString());
break;
}
}*/
SM.Debug("TCPmsgParser listen thread stoped.");
}
private void sleep(int miliseconds) {
try {
Thread.sleep(miliseconds);
} catch (InterruptedException e) {
}
} catch (InterruptedException ignored) { }
}
public void clearMsgList()
@ -442,17 +384,14 @@ public class TCPmsgParser implements Runnable{
TCPhandler.msgList.clear();
}
public void Stop()
{
public void Stop() {
run = false;
// stop thread
if(TCPmsgParserThread != null)
{
if(TCPmsgParserThread != null) {
Thread moribund = TCPmsgParserThread;
TCPmsgParserThread = null;
moribund.interrupt();
}
SM.Debug("Stoping TCPmsgParser");
}
}

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

@ -78,6 +78,4 @@ dependencies {
// add Gson
implementation 'com.google.code.gson:gson:2.8.6'
//retrofit
}

View File

@ -42,7 +42,6 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
public GoogleMapsInfoBubble(LayoutInflater layoutInflater, Context context) {
isLiveTab = false;
this.context = context;
// this.superVehHash = vehicles;
mWindow = layoutInflater.inflate(R.layout.map_marker_info_bubble, null);
}
@ -73,7 +72,7 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
}
} else {
try {
position = Integer.getInteger(marker.getTitle());
position = Integer.parseInt(marker.getTitle());
} catch (Exception e) {
Log.v(TAG, "Unable to parse Google Maps Info Bubble title on History");
}
@ -94,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

@ -3,6 +3,7 @@ package com.safemobile.safedispatch;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.graphics.Color;
@ -10,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;
@ -51,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
@ -99,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();
}
@ -124,6 +154,18 @@ public class HistoryActivity extends AppCompatActivity implements OnMapReadyCall
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14));
}
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getString(R.string.exit))
.setCancelable(false)
.setNeutralButton(getString(R.string.logout), (dialog, id) -> parentTab.whenBackPressed(AppParams.ActivityResult.logout))
.setPositiveButton(getString(R.string.ext), (dialog, id) -> parentTab.whenBackPressed(AppParams.ActivityResult.exit))
.setNegativeButton(getString(R.string.cancel), (dialog, id) -> dialog.cancel());
AlertDialog alert = builder.create();
alert.show();
}
private void setDate() {
Calendar calendar = Calendar.getInstance();
endDate = calendar.getTime();
@ -234,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

@ -16,17 +16,22 @@ public class NotificationActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// get notification type
int key = getIntent().getExtras().getInt("key");
// get notification type
int key = getIntent().getExtras().getInt("key");
// broadcast intent
Intent i = new Intent();
switch(key)
{
case AppParams.messageNotif: i.setAction(NOTIFICATION_MESSAGE_INTENT); break;
case AppParams.alertNotif: i.setAction(NOTIFICATION_ALERT_INTENT); break;
case AppParams.pollNotif: i.setAction(NOTIFICATION_POLL_INTENT); break;
}
Intent i = new Intent();
switch(key) {
case AppParams.messageNotif:
i.setAction(NOTIFICATION_MESSAGE_INTENT);
break;
case AppParams.alertNotif:
i.setAction(NOTIFICATION_ALERT_INTENT);
break;
case AppParams.pollNotif:
i.setAction(NOTIFICATION_POLL_INTENT);
break;
}
getBaseContext().sendBroadcast(i);
@ -35,6 +40,4 @@ public class NotificationActivity extends Activity{
/* Finish activity and return to parent activity */
finish();
}
}

View File

@ -42,6 +42,7 @@ public class RecordingsActivity extends Activity {
private GridView gridView;
private RecordingsGridViewAdapter adapter;
private View convertViewRecording;
private boolean isRecordingPlaying = false;
private int playingPosition = -1;
@ -89,6 +90,7 @@ public class RecordingsActivity extends Activity {
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(onItemClickListener);
gridView.setOnTouchListener((v, event) -> isRecordingPlaying);
if (recHandle == null && !AppParams.DEMO)
recHandle = new RecordingHandle(AppParams.IP);
@ -171,12 +173,17 @@ public class RecordingsActivity extends Activity {
SM.Debug("onResume");
}
private final OnItemClickListener onItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
// disable grid scrolling and item click
gridView.setEnabled(false);
if (isRecordingPlaying)
return;
isRecordingPlaying = true;
setConvertViewRecording(view);
// change background to playing
@ -262,7 +269,7 @@ public class RecordingsActivity extends Activity {
adapter.changePlaying(getPlayingPosition(), false);
// enable grid
gridView.setEnabled(true);
isRecordingPlaying = false;
// set playing Recording position to -1
setPlayingPosition(-1);

View File

@ -10,13 +10,19 @@ import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.text.Editable;
import android.text.InputType;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
@ -114,6 +120,17 @@ public class SDMobileActivity extends Activity {
super.onCreate(savedInstanceState);
SM.Debug("##### onCREATE ##### with LANGUAGE " + AppParams.LANGUAGETMP);
ConnectivityManager connectivityManager =
(ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
connectivityManager.registerDefaultNetworkCallback(networkCallback);
} else {
NetworkRequest request = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build();
connectivityManager.registerNetworkCallback(request, networkCallback);
}
AppParams.theme = AppParams.Theme.SAFEDISPATCH;
if (AppParams.theme == AppParams.Theme.SAFENET)
this.setTheme(R.style.Theme_Safenet);
@ -233,10 +250,10 @@ public class SDMobileActivity extends Activity {
etPassword.setText(AppParams.PASSWORD.equalsIgnoreCase("n/a") ? "" : AppParams.PASSWORD);
}
layoutTCP = (RelativeLayout) findViewById(R.id.layoutTCP);
layoutTCP = findViewById(R.id.layoutTCP);
llUsername = (LinearLayout) findViewById(R.id.llUsername);
llPassword = (LinearLayout) findViewById(R.id.llPassword);
llUsername = findViewById(R.id.llUsername);
llPassword = findViewById(R.id.llPassword);
// enable ui after the language is changed and tcp connection is on
if (tcp != null && tcp.isConnectionUP) {
@ -524,6 +541,22 @@ public class SDMobileActivity extends Activity {
SM.Debug("##### onRESUME #####");
}
private final ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// network available
Log.v("NetworkAvailability", "available");
if (tcp != null && !tcp.isConnectionUP)
saveIPandRestartTCP(AppParams.IP, AppParams.PORT);
}
@Override
public void onLost(Network network) {
// network unavailable
Log.v("NetworkAvailability", "unavailable");
}
};
private void startTabActivity(long userID) {
// good login - load activity
@ -663,7 +696,7 @@ public class SDMobileActivity extends Activity {
// get default password
AppParams.PASSWORD = AppParams.prefs.getString(PASSWORD, "n/a");
// get default IP
AppParams.IP = AppParams.prefs.getString("ip", "192.168.2.100");
AppParams.IP = AppParams.prefs.getString("ip", "185.8.154.190");
// get Radio ID & IP
AppParams.RADIOID = AppParams.prefs.getInt("radioId", 100);
@ -737,10 +770,10 @@ public class SDMobileActivity extends Activity {
Dialog dialogInfo = new Dialog(context);
dialogInfo.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialogInfo.setContentView(R.layout.dialog_login);
TextView textTitle = (TextView) dialogInfo.findViewById(R.id.textTitle);
TextView text = (TextView) dialogInfo.findViewById(R.id.text);
TextView text2 = (TextView) dialogInfo.findViewById(R.id.text2);
ImageView image = (ImageView) dialogInfo.findViewById(R.id.image);
TextView textTitle = dialogInfo.findViewById(R.id.textTitle);
TextView text = dialogInfo.findViewById(R.id.text);
TextView text2 = dialogInfo.findViewById(R.id.text2);
ImageView image = dialogInfo.findViewById(R.id.image);
textTitle.setText(getString(R.string.connectionError));
image.setImageResource(R.drawable.error);

View File

@ -57,8 +57,9 @@ import com.safemobile.services.TCPService.TCPBinder;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
@ -73,6 +74,7 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@ -93,6 +95,8 @@ import android.widget.Toast;
import android.widget.TabHost.TabSpec;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
public class TabLayoutActivity extends AbstractSDParentActivity {
@ -1230,7 +1234,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
getMessageActivity().updateSMS(sms.smsList);
}
} catch (Exception ex) {
SM.Debug("Error on smsReceived:" + ex.toString());
SM.Debug("Error on smsReceived:" + ex);
}
}
@ -1395,7 +1399,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
HistCountmsg histCountMsg = new HistCountmsg(msg);
SM.Debug("Message Count:" + histCountMsg.histcountValue.count);
if (histCountMsg.histcountValue.count >= 2000 && AppParams.crtTab == AppParams.Tabs.history) {
if (AppParams.crtTab != AppParams.Tabs.history) {
//list for live
SM.Debug("currentActivity instanceof HistoryActivity");
try {
@ -1406,6 +1410,44 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
} catch (Exception ex) {
SM.Debug(HASH_ERROR_MESSAGE + ex);
}
return;
}
if (histCountMsg.histcountValue.count >= 2000) {
try {
if (getHistoryActivity() != null) {
getHistoryActivity().UpdateCancel();
getHistoryActivity().UpdateUnableDisp();
}
} catch (Exception ex) {
SM.Debug(HASH_ERROR_MESSAGE + ex);
}
runOnUiThread(new Runnable() {
public void run() {
DialogService dialogService = new DialogService();
dialogService.showError(getHistoryActivity(), getString(R.string.too_many_positions, String.valueOf(histCountMsg.histcountValue.count)));
}
});
return;
}
if (histCountMsg.histcountValue.count == 0) {
try {
if (getHistoryActivity() != null) {
getHistoryActivity().UpdateCancel();
getHistoryActivity().UpdateUnableDisp();
}
} catch (Exception ex) {
SM.Debug(HASH_ERROR_MESSAGE + ex);
}
runOnUiThread(new Runnable() {
public void run() {
DialogService dialogService = new DialogService();
dialogService.showError(getHistoryActivity(), getString(R.string.no_data_for_interval));
}
});
return;
}
}
@ -1423,7 +1465,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
SM.Debug("tmpHist seqID:" + tmpHist.seqID);
int pos = Integer.parseInt(tmpHist.seqID.substring(0, tmpHist.seqID.indexOf('.')));
int all = Integer.parseInt(tmpHist.seqID.substring(tmpHist.seqID.indexOf('.') + 1, tmpHist.seqID.length()));
int all = Integer.parseInt(tmpHist.seqID.substring(tmpHist.seqID.indexOf('.') + 1));
if (all != 0) {
if (Boolean.TRUE.equals(getFirstHistoryData())) {
try {
@ -1646,66 +1688,61 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
SM.Debug("Unit imei:" + tempArr[0]);
String unitIMEI = tempArr[0];
//list for SMS
if (AppParams.crtTab == AppParams.Tabs.alarms) {
SM.Debug("currentActivity instanceof AlarmActivity - newSMS | " + tempArr[0] + " | " + tempArr[1]);
getAlarms(AppParams.USERID);
// change Visual Elements
setImei(unitIMEI);
switch (msg.opCode) {
case 135:
setMess("speed " + tempArr[1]);
break;
case 136:
setMess("landmark " + tempArr[1]);
break;
case 137:
setMess("zone " + tempArr[1]);
break;
case 140:
setMess("telemetry " + tempArr[1]);
break;
default:
// 138
setMess("emergency");
}
// if tab is not TextTab
if (tabHost.getCurrentTab() != 5) {
// change Visual Elements
setImei(unitIMEI);
switch (msg.opCode) {
case 135:
setMess("speed " + tempArr[1]);
break;
case 136:
setMess("landmark " + tempArr[1]);
break;
case 137:
setMess("zone " + tempArr[1]);
break;
case 138:
setMess("emergency");
break;
case 140:
setMess("telemetry " + tempArr[1]);
break;
default:
setMess("emergency");
}
myHandler.post(updateResultsAlarm);
myHandler.post(updateResultsAlarm);
if ((msg.opCode == 138) && (AppParams.crtTab == AppParams.Tabs.live)) {
SuperVehicle superVehicle = getSuperVehHash().get(Long.parseLong(unitIMEI));
if ((msg.opCode == 138) && (AppParams.crtTab == AppParams.Tabs.live)) {
SuperVehicle superVehicle = getSuperVehHash().get(Long.parseLong(unitIMEI));
if (superVehicle != null) {
//if is not check i need to force check to put on the map
boolean forceChecked = false;
if (!superVehicle.needUpdate) {
superVehicle.needUpdate = true;
forceChecked = true;
}
try {
int x = 0;
if (forceChecked) {
for (Vehicle veh : getAllVehicle()) {
if (veh.imei.compareTo(unitIMEI) == 0) break;
x++;
}
} else x = -1;
if (getLiveActivity() != null) {
if (x != getAllVehicle().size())
getLiveActivity().emergencyAlarmReceived(x, superVehicle.lat, superVehicle.lng);
else
getLiveActivity().emergencyAlarmReceived(-1, superVehicle.lat, superVehicle.lng);
if (superVehicle != null) {
//if is not check i need to force check to put on the map
boolean forceChecked = false;
if (!superVehicle.needUpdate) {
superVehicle.needUpdate = true;
forceChecked = true;
}
try {
int x = 0;
if (forceChecked) {
for (Vehicle veh : getAllVehicle()) {
if (veh.imei.compareTo(unitIMEI) == 0) break;
x++;
}
} catch (Exception ex) {
SM.Debug(HASH_ERROR_MESSAGE + ex);
} else x = -1;
if (getLiveActivity() != null) {
if (x != getAllVehicle().size())
getLiveActivity().emergencyAlarmReceived(x, superVehicle.lat, superVehicle.lng);
else
getLiveActivity().emergencyAlarmReceived(-1, superVehicle.lat, superVehicle.lng);
}
} catch (Exception ex) {
SM.Debug(HASH_ERROR_MESSAGE + ex);
}
}
}
//list for SMS
if (AppParams.crtTab == AppParams.Tabs.alarms)
getAlarms(AppParams.USERID);
}
@Override
@ -1950,10 +1987,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
public void createNotification(int icon) {
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
String tickerText = "SafeMobile Dispatch: New Message from " + getImei();
String contentTitle = "New Message from " + getImei();
String contentText = "\"" + getMess() + "\"";
String contentTitle, contentText;
Vehicle veh = getVehicle4Imei(getImei());
int iconValue = icon;
@ -1966,7 +2000,6 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
case AppParams.pollNotif:
contentText = "\"" + getMess() + "\"";
contentTitle = "Poll Reply from " + (veh != null ? getVehicle4Imei(getImei()).name : getImei());
tickerText = "SafeMobile Dispatch: Poll Reply from " + (veh != null ? getVehicle4Imei(getImei()).name : getImei());
icon = R.drawable.poll;
break;
case AppParams.alertNotif:
@ -1975,34 +2008,52 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
vehName = getString(R.string.from) + ": " + getVehicle4Imei(getImei()).name;
contentText = "\"" + getMess() + "\"";
contentTitle = getString(R.string.newAlarm) + vehName;
tickerText = "SafeMobile Dispatch: " + getString(R.string.newAlarm) + vehName;
icon = R.drawable.alert;
icon = R.drawable.arrow_down;
break;
default:
throw new IllegalStateException("Unexpected value: " + icon);
}
Notification notification = new Notification(icon, tickerText, System.currentTimeMillis());
// set intent to be opened on NotificationClick
/* Notification */
Intent notificationIntent = new Intent(this, NotificationActivity.class);
notificationIntent.putExtra("key", iconValue);
Intent intent = new Intent(this, NotificationActivity.class);
intent.putExtra("key", iconValue);
// cancel old notification
mNotificationManager.cancel(icon);
PendingIntent contentIntent = PendingIntent.getActivity(context, NOTIFICATION_ACTIVITY_RESULT, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
// flag that the notification will be closed when clicked
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.number = 1; // the same notification will be shown;
notification.tickerText = tickerText; // notification text when arrives
notification.sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.new_sms);
// add notification to the manager
mNotificationManager.notify(icon, notification);
PendingIntent pendingIntent = PendingIntent.getActivity(context, NOTIFICATION_ACTIVITY_RESULT, intent, PendingIntent.FLAG_CANCEL_CURRENT);
createNotificationChannel(icon, contentTitle, contentText, pendingIntent);
}
private void createNotificationChannel(int icon, String title, String text, PendingIntent pendingIntent) {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
String notificationChannelID = String.valueOf(icon);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = "Notification Channel";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(notificationChannelID, name, importance);
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, notificationChannelID)
.setSmallIcon(icon)
.setContentTitle(title)
.setContentText(text)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true)
.setContentIntent(pendingIntent);
NotificationManagerCompat managerCompat = NotificationManagerCompat.from(context);
managerCompat.notify(icon, builder.build());
}
// return vehicle according to imei
private Vehicle getVehicle4Imei(String imei) {
Vehicle veh = null;
@ -2146,7 +2197,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
setVehicleStatus(Integer.parseInt(params[1]), Integer.parseInt(params[2]), Integer.parseInt(params[3]), Integer.parseInt(params[4]));
} catch (Exception ex) {
SM.Exception("Paramas -> setVehicleStatus", "EXCeption ex " + ex.toString());
SM.Exception("Paramas -> setVehicleStatus", "EXCeption ex " + ex);
}
break;
@ -2177,21 +2228,6 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
new ConnectTask().execute(params);
}
public class ConnectParserTask extends AsyncTask<String, Void, TCPhandler> {
@Override
protected TCPhandler doInBackground(String... params) {
if (myService != null)
tcpParser = myService.getTCPmsgParser();
// add TCPParserListener
if (tcpParser != null) {
SM.Debug("## tcpParser != null ", "#### call tcpParserListener(");
tcpParserListener();
}
return null;
}
}
/* Display Toast messages*/
@Override
public void displayToast(final String msg) {
@ -2301,10 +2337,8 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
SM.Debug("onRequestPermissionsResult", "[requestCode] " + requestCode);
String permission = "";
switch (requestCode) {
case PermissionModule.RECORD_AUDIO_PERMISSION_REQUEST_CODE:
permission = Manifest.permission.RECORD_AUDIO;
break;
default:
throw new IllegalStateException("Unexpected value: " + requestCode);
@ -2355,10 +2389,9 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
private void waitForUserInput(Boolean result) {
if (result) {
final int requestCode = 1202;
//navigate to application's settings
String action = ProviderSettingsHelper.getAction(ProviderSettingsStatus.APPLICATION_DETAILS);
if (action == null || action == "")
if (action == null || action.equals(""))
return;
boolean isActionApplicationDetailsSettings = action.equals(ProviderSettingsHelper.ACTION_APPLICATION_DETAILS_SETTINGS);

View File

@ -31,10 +31,10 @@
android:paddingLeft="3dp"
android:layout_weight="1"/>
<LinearLayout
android:id="@+id/linearLayoutChecked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:background="@drawable/checked">
</LinearLayout>
android:id="@+id/linearLayoutChecked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:background="@drawable/checked"
android:orientation="horizontal" />
</LinearLayout>

View File

@ -89,6 +89,8 @@
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:id="@+id/layoutNewMessage"
android:layout_width="350dp"

View File

@ -32,7 +32,6 @@
android:layout_height="wrap_content"
android:text="@string/serverIP"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:layout_gravity="center_vertical"
android:gravity="center_vertical|right"
@ -67,7 +66,6 @@
android:layout_height="wrap_content"
android:text="@string/serverPort"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:gravity="center_vertical|right"
android:layout_gravity="center_vertical|right"
@ -112,7 +110,6 @@
android:layout_height="wrap_content"
android:text="@string/configName"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:gravity="center_vertical|right"
android:layout_gravity="center_vertical"/>
@ -181,7 +178,6 @@
android:text="@string/language"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"
android:textColor="#FFFFFF"
android:gravity="right"
android:layout_gravity="center_vertical"/>
<LinearLayout

View File

@ -166,7 +166,7 @@
<GridView
android:id="@+id/gridView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:background="#999999"
android:drawSelectorOnTop="false"
android:horizontalSpacing="0dp"
@ -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

@ -7,9 +7,9 @@
android:padding="2dp"
android:background="@drawable/style_nameoverlay">
<TextView android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/balloon_vehicle_name"
android:textSize="12dip"
android:textColor="#FF000000"></TextView>
<TextView android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/balloon_vehicle_name"
android:textSize="12dip"
android:textColor="#FF000000" />
</LinearLayout>

View File

@ -1,37 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
>
<ImageView android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_gravity="center_vertical"
android:src="@mipmap/ic_launcher"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_vertical"
android:gravity="center_vertical">
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:textSize="18dp"
android:textColor="@color/black"
/>
<TextView android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:textSize="18dp"
android:textColor="@color/black"
/>
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_gravity="center_vertical"
android:src="@mipmap/ic_launcher"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_vertical"
android:gravity="center_vertical">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:textSize="18dp"
/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:textSize="18dp"
/>
</LinearLayout>
</LinearLayout>

View File

@ -40,7 +40,6 @@
android:paddingTop="8dp"
android:text="Row1"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/black"
/>
<TextView android:id="@+id/text2"
android:layout_width="wrap_content"
@ -48,7 +47,6 @@
android:paddingTop="8dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Row2"
android:textColor="@color/black"
/>
</LinearLayout>
</LinearLayout>

View File

@ -217,13 +217,13 @@
<ImageView
android:id="@+id/imageLoading"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="center_vertical"
android:layout_weight="0"
android:visibility="gone"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" />
android:id="@+id/imageLoading"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="center_vertical"
android:layout_weight="0"
android:visibility="gone"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" />
</RelativeLayout>

View File

@ -210,8 +210,6 @@
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:id="@+id/frameLayoutLanguage"
android:layout_width="wrap_content"
@ -221,20 +219,16 @@
android:layout_alignParentBottom="true"
android:layout_gravity="right"
android:paddingBottom="6dp"
android:layout_toLeftOf="@+id/frameLayout13">
</RelativeLayout>
android:layout_toLeftOf="@+id/frameLayout13" />
<ImageView
android:id="@+id/imageLoading"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="center_vertical"
android:layout_weight="0"
android:visibility="gone"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" />
android:id="@+id/imageLoading"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="center_vertical"
android:layout_weight="0"
android:visibility="gone"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true" />
</RelativeLayout>

View File

@ -31,10 +31,10 @@
android:paddingLeft="3dp"
android:layout_weight="1"/>
<LinearLayout
android:id="@+id/linearLayoutChecked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:background="@drawable/checked">
</LinearLayout>
android:id="@+id/linearLayoutChecked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:background="@drawable/checked"
android:orientation="horizontal" />
</LinearLayout>

View File

@ -1,30 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:src="@mipmap/ic_launcher"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:id="@+id/language"
android:textSize="20dp"
android:textColor="#000000"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:id="@+id/language"
android:textSize="20dp"
android:textColor="#000000"
android:textStyle="bold"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"/>
android:gravity="center_vertical"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -10,14 +10,14 @@
android:gravity="center_vertical" >
<ImageButton
android:id="@+id/imageButtonAdd"
android:layout_width="1dp"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginRight="5dp"
android:paddingLeft="2dp"
android:visibility="invisible"
android:background="@drawable/addmessage_selector"/>
android:id="@+id/imageButtonAdd"
android:layout_width="1dp"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginRight="5dp"
android:paddingLeft="2dp"
android:visibility="invisible"
android:background="@drawable/addmessage_selector"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"

View File

@ -9,7 +9,6 @@
style="?header"
android:gravity="center_vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
@ -21,13 +20,13 @@
android:gravity="left|center_vertical"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageButton
android:id="@+id/imageCheckAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginRight="1dp"
android:paddingLeft="2dp"
android:background="@drawable/uncheck_all"/>
<ImageButton
android:id="@+id/imageCheckAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginRight="1dp"
android:paddingLeft="2dp"
android:background="@drawable/uncheck_all"/>
</LinearLayout>
</LinearLayout>

View File

@ -5,85 +5,84 @@
android:orientation="vertical"
style="?bg">
<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">
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/alert"
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/alarms"
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/alert"
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/alarms"
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"/>
<!-- android:background="@drawable/addmessage_selector" -->
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<GridView
android:id="@+id/gridViewAlarms"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#999999"
android:drawSelectorOnTop="false"
android:horizontalSpacing="0dp"
android:listSelector="@drawable/gridalarm_selector"
android:numColumns="1"
android:verticalSpacing="1dp"
android:padding="5dp"/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<GridView
android:id="@+id/gridViewAlarms"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#999999"
android:drawSelectorOnTop="false"
android:horizontalSpacing="0dp"
android:listSelector="@drawable/gridalarm_selector"
android:numColumns="1"
android:verticalSpacing="1dp"
android:padding="5dp"/>
</LinearLayout>
</LinearLayout>

View File

@ -7,356 +7,352 @@
style="?bg">
<LinearLayout
android:id="@+id/layoutGateway"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:weightSum="100"
android:orientation="horizontal"
style="?header">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageViewRadioStation"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/enable"
android:layout_weight="0" />
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:id="@+id/textViewGateway"
android:text="n/a"
android:layout_marginLeft="5dp"
android:textStyle="bold"
android:paddingTop="7dp"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:id="@+id/textViewIP"
android:text="[192.168.2.100]"
android:paddingLeft="4dp"
android:paddingTop="17dp"
android:textColor="#FFFFFF"
android:visibility="gone"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="1"/>
<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="visible"
android:src="@drawable/arrow_menu_down" />
<ImageView
android:id="@+id/imageViewStatus"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:scaleType="fitCenter"
android:src="@drawable/status_offline" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="right"
android:layout_marginRight="8dp"
android:visibility="gone">
<ImageButton
android:id="@+id/imageButtonAdd"
android:layout_width="1dp"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginRight="2dp"
android:paddingLeft="2dp"
android:background="@drawable/addmessage_selector"
android:visibility="invisible"/>
<ImageView
android:id="@+id/imageViewGreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:paddingTop="4dp"
android:src="@drawable/call_private_green_small"
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/textViewLoggedIn"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:text="@string/login"
android:textColor="#FFFFFF"
android:textSize="16dp"
android:paddingTop="7dp" />
</LinearLayout>
<!-- android:background="@drawable/addmessage_selector" -->
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/style_bluebutton"
android:paddingLeft="5dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:text="@string/IP"
android:textColor="#FFFFFF"
android:textSize="17dp" />
<TextView
android:id="@+id/textViewIP2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:text="@string/emptyIP"
android:textColor="#FFFFFF"
android:textSize="17dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/layoutGateway2">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/enable" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textViewGateway2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="#FFFFFF"
android:textSize="17dp"
android:paddingRight="2dp"/>
<ImageView
android:id="@+id/imageViewGateway"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/arrow_down" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:layout_weight="6">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:text="@string/Status"
android:textColor="#FFFFFF"
android:textSize="17dp" />
<ImageView
android:id="@+id/imageViewStatus2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/status_offline"
/>
</LinearLayout>
</LinearLayout>
android:id="@+id/layoutGateway"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:weightSum="100"
android:orientation="horizontal"
style="?header">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="2dp">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageViewRadioStation"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/enable"
android:layout_weight="0" />
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:id="@+id/textViewGateway"
android:text="n/a"
android:layout_marginLeft="5dp"
android:textStyle="bold"
android:paddingTop="7dp"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:id="@+id/textViewIP"
android:text="[192.168.2.100]"
android:paddingLeft="4dp"
android:paddingTop="17dp"
android:textColor="#FFFFFF"
android:visibility="gone"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="1"/>
<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="visible"
android:src="@drawable/arrow_menu_down" />
<ImageView
android:id="@+id/imageViewStatus"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:scaleType="fitCenter"
android:src="@drawable/status_offline" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center">
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="right"
android:layout_marginRight="8dp"
android:visibility="gone">
<ImageButton
android:id="@+id/imageButtonAdd"
android:layout_width="1dp"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginRight="2dp"
android:paddingLeft="2dp"
android:background="@drawable/addmessage_selector"
android:visibility="invisible"/>
<ImageView
android:id="@+id/imageViewGreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:paddingTop="4dp"
android:src="@drawable/call_private_green_small"
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/textViewLoggedIn"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:text="@string/login"
android:textColor="#FFFFFF"
android:textSize="16dp"
android:paddingTop="7dp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/style_bluebutton"
android:paddingLeft="5dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:text="@string/IP"
android:textColor="#FFFFFF"
android:textSize="17dp" />
<TextView
android:id="@+id/textViewIP2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:text="@string/emptyIP"
android:textColor="#FFFFFF"
android:textSize="17dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/layoutGateway2">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/enable" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textViewGateway2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="#FFFFFF"
android:textSize="17dp"
android:paddingRight="2dp"/>
<ImageView
android:id="@+id/imageViewGateway"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/arrow_down" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:layout_weight="6">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:text="@string/Status"
android:textColor="#FFFFFF"
android:textSize="17dp" />
<ImageView
android:id="@+id/imageViewStatus2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/status_offline" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="2dp">
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingRight="10dp"
android:layout_gravity="center_vertical">
<LinearLayout
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Zone"
android:textStyle="bold"
android:textColor="#ffffffff"
android:textAppearance="?android:attr/textAppearanceMedium"/>
<LinearLayout
android:id="@+id/layoutSpinnerZone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/style_spinner"
android:gravity="right"
android:minWidth="150dp"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="4dp" >
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingRight="10dp"
android:layout_gravity="center_vertical">
<LinearLayout
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Zone"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceMedium"/>
<LinearLayout
android:id="@+id/layoutSpinnerZone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/style_spinner"
android:gravity="right"
android:minWidth="150dp"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="4dp" >
<TextView
android:id="@+id/textViewZone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text=""
android:textColor="#000000"
android:textStyle="bold"
android:textSize="20dp"/>
<ImageView
android:src="@drawable/arrow_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Channel"
android:textColor="#ffffffff"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceMedium"/>
<TextView
android:id="@+id/textViewZone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text=""
android:textColor="#000000"
android:textStyle="bold"
android:textSize="20dp"/>
<ImageView
android:src="@drawable/arrow_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Channel"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceMedium"/>
<LinearLayout
android:id="@+id/layoutSpinnerChannel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/style_spinner"
android:gravity="right"
android:minWidth="150dp"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="4dp" >
<LinearLayout
android:id="@+id/layoutSpinnerChannel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/style_spinner"
android:gravity="right"
android:minWidth="150dp"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="4dp" >
<TextView
android:id="@+id/textViewChannel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text=""
android:textColor="#000000"
android:textStyle="bold"
android:textSize="20dp"/>
<ImageView
android:src="@drawable/arrow_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/textViewChannel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text=""
android:textColor="#000000"
android:textStyle="bold"
android:textSize="20dp"/>
<ImageView
android:src="@drawable/arrow_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_gravity="center_horizontal">
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_gravity="center_horizontal">
<LinearLayout
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:paddingTop="3dp">
<LinearLayout
android:layout_width="276dp"
android:layout_height="93dp"
android:layout_gravity="center"
android:background="@drawable/screen"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="0dp"
android:paddingTop="7dp">
<LinearLayout
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:paddingTop="3dp">
<LinearLayout
android:layout_width="276dp"
android:layout_height="93dp"
android:layout_gravity="center"
android:background="@drawable/screen"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="0dp"
android:paddingTop="7dp">
<TextView
android:id="@+id/textViewMessageChannel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingBottom="7dp"
android:textColor="#000000"
android:textSize="20dp"
android:textStyle="bold"/>
<TextView
android:id="@+id/textViewMessageStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="#000000"
android:textSize="20dp"
android:textStyle="bold"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/textViewMessageChannel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingBottom="7dp"
android:textColor="#000000"
android:textSize="20dp"
android:textStyle="bold"/>
<TextView
android:id="@+id/textViewMessageStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="#000000"
android:textSize="20dp"
android:textStyle="bold"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
@ -366,104 +362,104 @@
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_weight="1">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioGroup android:id="@+id/radioGroupCallType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="3sp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_weight="1">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioGroup
android:id="@+id/radioGroupCallType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="3sp">
<RadioButton
android:id="@+id/radioAll"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:checked="true"
android:text="@string/AllCall"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffffff" />
<RadioButton
android:id="@+id/radioAll"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:checked="true"
android:text="@string/AllCall"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<RadioButton
android:id="@+id/radioGroup"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:text="@string/GroupCall"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffffff" />
<RadioButton
android:id="@+id/radioGroup"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:text="@string/GroupCall"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<RadioButton
android:id="@+id/radioPrivate"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:text="@string/PrivateCall"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#ffffffff" />
<RadioButton
android:id="@+id/radioPrivate"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:text="@string/PrivateCall"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
</RadioGroup>
<LinearLayout
android:id="@+id/layoutSpinnerCallType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/style_spinner"
android:gravity="right"
android:minWidth="150dp"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="4dp"
android:visibility="invisible" >
</RadioGroup>
<LinearLayout
android:id="@+id/layoutSpinnerCallType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/style_spinner"
android:gravity="right"
android:minWidth="150dp"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="4dp"
android:visibility="invisible" >
<TextView
android:id="@+id/textViewCallType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text=""
android:textColor="#000000"
android:textStyle="bold"
android:textSize="20dp"/>
<ImageView
android:src="@drawable/arrow_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<Button
android:id="@+id/buttonPTT"
style="@style/ButtonPTT"
android:layout_width="135dp"
android:layout_height="88dp"
android:background="@drawable/style_buttonptt"
android:gravity="center"
android:paddingBottom="20dp"
android:text="@string/PTT" />
<Button
android:id="@+id/buttonDKey"
style="@style/ButtonText"
android:layout_width="135dp"
android:layout_height="wrap_content"
android:background="@drawable/style_bluebutton"
android:text="@string/DeKey"
android:textSize="18dp" />
</LinearLayout>
<TextView
android:id="@+id/textViewCallType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text=""
android:textColor="#000000"
android:textStyle="bold"
android:textSize="20dp"/>
<ImageView
android:src="@drawable/arrow_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical" >
<Button
android:id="@+id/buttonPTT"
style="@style/ButtonPTT"
android:layout_width="135dp"
android:layout_height="88dp"
android:background="@drawable/style_buttonptt"
android:gravity="center"
android:paddingBottom="20dp"
android:text="@string/PTT" />
<Button
android:id="@+id/buttonDKey"
style="@style/ButtonText"
android:layout_width="135dp"
android:layout_height="wrap_content"
android:background="@drawable/style_bluebutton"
android:text="@string/DeKey"
android:textSize="18dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -123,19 +123,18 @@
android:visibility="gone"
android:background="@drawable/recycle"/>
<!-- android:background="@drawable/addmessage_selector" -->
</LinearLayout>
<GridView
android:id="@+id/gridViewRecordings"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:verticalSpacing="1dp"
android:horizontalSpacing="0dp"
android:background="#999999"
android:drawSelectorOnTop="false"
android:listSelector="@drawable/gridalarm_selector"
android:numColumns="1"
android:padding="5dp"></GridView>
</LinearLayout>
<GridView
android:id="@+id/gridViewRecordings"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:verticalSpacing="1dp"
android:horizontalSpacing="0dp"
android:background="#999999"
android:drawSelectorOnTop="false"
android:listSelector="@drawable/gridalarm_selector"
android:numColumns="1"
android:padding="5dp"></GridView>
</LinearLayout>
</LinearLayout>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layoutMain"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
@ -10,246 +11,237 @@
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_weight="80">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:paddingLeft="5dp"
android:paddingBottom="50dp" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:paddingLeft="5dp"
android:paddingBottom="50dp" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="left"
android:paddingTop="10dp"
android:paddingLeft="7dp"
android:layout_weight="0.4">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/serverIP"
android:textSize="14dp"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:layout_gravity="center_vertical"
android:gravity="center_vertical|right"
android:layout_weight="2"/>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="left"
android:paddingTop="10dp"
android:paddingLeft="7dp"
android:layout_weight="0.4">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/serverIP"
android:textSize="14dp"
android:textStyle="bold"
android:layout_gravity="center_vertical"
android:gravity="center_vertical|right"
android:layout_weight="2"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="3dp">
<EditText
android:id="@+id/appServerIP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:minWidth="200dp"
android:singleLine="true"
android:imeOptions="actionDone" >
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="3dp">
<EditText
android:id="@+id/appServerIP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:minWidth="200dp"
android:singleLine="true"
android:imeOptions="actionDone" >
</EditText>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="left"
android:paddingTop="10dp"
android:layout_weight="0.6">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/serverPort"
android:textSize="14dp"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:gravity="center_vertical|right"
android:layout_gravity="center_vertical|right"
android:layout_weight="1.4"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="3dp">
<EditText
android:layout_height="wrap_content"
android:id="@+id/appServerPort"
android:maxLength="5"
android:minWidth="73dp"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical|right"
android:inputType="number"
android:imeOptions="actionDone">
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="left"
android:paddingTop="10dp"
android:layout_weight="0.6">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/serverPort"
android:textSize="14dp"
android:textStyle="bold"
android:gravity="center_vertical|right"
android:layout_gravity="center_vertical|right"
android:layout_weight="1.4"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="3dp">
<EditText
android:layout_height="wrap_content"
android:id="@+id/appServerPort"
android:maxLength="5"
android:minWidth="73dp"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical|right"
android:inputType="number"
android:imeOptions="actionDone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/layoutPath">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="0dp"
android:gravity="center_vertical|left">
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="95dp"
android:layout_weight="0">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/configName"
android:textSize="14dp"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:gravity="center_vertical|right"
android:layout_gravity="center_vertical"/>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1"
android:paddingTop="3dp">
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="0dp"
android:gravity="center_vertical|left">
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="95dp"
android:layout_weight="0">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/configName"
android:textSize="14dp"
android:textStyle="bold"
android:gravity="center_vertical|right"
android:layout_gravity="center_vertical"/>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1"
android:paddingTop="3dp">
<EditText
android:id="@+id/editTextPath"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right|center_vertical"
android:text="serial"
android:imeOptions="actionDone"
android:minWidth="73dp"
<EditText
android:id="@+id/editTextPath"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right|center_vertical"
android:text="serial"
android:imeOptions="actionDone"
android:minWidth="73dp"
android:singleLine="true" >
<requestFocus />
</EditText>
android:singleLine="true" >
<requestFocus />
</EditText>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="0"
android:paddingTop="3dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_browse"
android:text="@string/load"
style="@style/ButtonText"
android:textColor="#000"
android:textSize="18dp"/>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="0"
android:paddingTop="3dp"
android:paddingRight="3dp">
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="0"
android:paddingTop="3dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_browse"
android:text="@string/load"
style="@style/ButtonText"
android:textColor="#000"
android:textSize="18dp"/>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="0"
android:paddingTop="3dp"
android:paddingRight="3dp">
<ImageView
android:id="@+id/imageViewQuestionMark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/questionmark_small" />
</LinearLayout>
<ImageView
android:id="@+id/imageViewQuestionMark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/questionmark_small" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/frameLayout11"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="left" >
android:id="@+id/frameLayout11"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="left" >
<TextView
android:layout_width="95dp"
android:layout_height="wrap_content"
android:text="@string/language"
android:textSize="14dp"
android:layout_marginRight="2dp"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:gravity="right"
android:layout_gravity="center_vertical"/>
<LinearLayout
android:id="@+id/layoutSpinnerLanguage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/style_spinner"
android:gravity="left|center_vertical"
android:minWidth="223dp"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="4dp" >
<ImageView
android:id="@+id/imageLanguage"
android:src="@drawable/de"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:layout_weight="0" />
<TextView
android:id="@+id/textViewSpinnerLanguage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="left"
android:text="Germany"
android:textColor="#000000"
android:textSize="17dp"
android:layout_weight="1"
android:paddingBottom="2dp"
android:paddingLeft="3dp">
<requestFocus />
</TextView>
<ImageView
android:src="@drawable/arrow_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0" />
</LinearLayout>
<TextView
android:layout_width="95dp"
android:layout_height="wrap_content"
android:text="@string/language"
android:textSize="14dp"
android:layout_marginRight="2dp"
android:textStyle="bold"
android:gravity="right"
android:layout_gravity="center_vertical"/>
<LinearLayout
android:id="@+id/layoutSpinnerLanguage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/style_spinner"
android:gravity="left|center_vertical"
android:minWidth="223dp"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:paddingTop="4dp" >
<ImageView
android:id="@+id/imageLanguage"
android:src="@drawable/de"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical"
android:layout_weight="0" />
<TextView
android:id="@+id/textViewSpinnerLanguage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="left"
android:text="Germany"
android:textColor="#000000"
android:textSize="17dp"
android:layout_weight="1"
android:paddingBottom="2dp"
android:paddingLeft="3dp">
<requestFocus />
</TextView>
<ImageView
android:src="@drawable/arrow_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_marginTop="20dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_save"
android:text="@string/save"
style="@style/ButtonText"
android:textSize="22dp"
android:background="@drawable/style_bluebutton"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_marginTop="20dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_save"
android:text="@string/save"
style="@style/ButtonText"
android:textSize="22dp"
android:background="@drawable/style_bluebutton"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</LinearLayout>

View File

@ -164,7 +164,7 @@
<GridView
android:id="@+id/gridView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:background="#999999"
android:drawSelectorOnTop="false"
android:horizontalSpacing="0dp"
@ -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"

View File

@ -263,5 +263,7 @@
<string name="permissionBlocked">%1$s permission was not accepted. To be able to use the %2$s, please open application settings and grant the %3$s permission</string>
<string name="microphone">Microphone</string>
<string name="radio_tab">Radio Tab</string>
<string name="too_many_positions">You have selected %1$s positions.\nPlease select a smalled interval.</string>
<string name="no_data_for_interval">No data for this interval</string>
</resources>