Compare commits
32 Commits
34c578fdf5
...
feature/al
Author | SHA1 | Date | |
---|---|---|---|
f15688b9a1 | |||
94091a9a31 | |||
d9d325b18b | |||
f4c6b8163d | |||
17a7e1711e | |||
9b302d0461 | |||
e80272e0a4 | |||
3268286e76 | |||
c07986d604 | |||
81937a5e0f | |||
c70a1b71a1 | |||
142558d057 | |||
66625bcdd1 | |||
968d9e7296 | |||
2855e9bde6 | |||
ee8bfe56b4 | |||
d519a2be14 | |||
1b3912c682 | |||
ba9383248c | |||
07127cea18 | |||
6a235d1d3f | |||
bac12825c9 | |||
bbed107c42 | |||
bca16caf94 | |||
0b887deb99 | |||
c85dc279dc | |||
db360c4d45 | |||
89f8cbfcae | |||
4420af337d | |||
6b6543ca3f | |||
f554356af1 | |||
0fabbc73be |
@ -19,6 +19,13 @@ android {
|
||||
buildFeatures {
|
||||
viewBinding false
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
// Or, if you prefer, you can continue to check for errors in release builds,
|
||||
// but continue the build even when errors are found:
|
||||
//abortOnError false
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
@ -4,9 +4,10 @@
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme" >
|
||||
</application>
|
||||
|
@ -198,12 +198,11 @@ public abstract class AbstractSDParentActivity extends TabActivity {
|
||||
return res;
|
||||
}
|
||||
|
||||
public boolean getHistoryPositions(int sc_id, long timeGMTStart, long timeGMTStop)
|
||||
{
|
||||
public boolean getHistoryPositions(int sc_id, long timeGMTStart, long timeGMTStop) {
|
||||
if(tcp == null)
|
||||
return false;
|
||||
|
||||
String histSeqID = "1."+Integer.toString((int) (System.currentTimeMillis() / 1000L));
|
||||
String histSeqID = "1."+ (int) (System.currentTimeMillis() / 1000L);
|
||||
boolean res = tcp.Write(histSeqID,"#26#"+sc_id+"#"+timeGMTStart+"#"+timeGMTStop+"#");
|
||||
if(res)
|
||||
SM.Debug("Message [getHistoryPositions] sent to app server");
|
||||
@ -213,8 +212,7 @@ public abstract class AbstractSDParentActivity extends TabActivity {
|
||||
return res;
|
||||
}
|
||||
|
||||
public boolean getRadiosList()
|
||||
{
|
||||
public boolean getRadiosList() {
|
||||
if(tcp == null)
|
||||
return false;
|
||||
|
||||
|
@ -0,0 +1,6 @@
|
||||
package com.safemobile.enums;
|
||||
|
||||
public enum ProviderSettingsStatus {
|
||||
APPLICATION_DETAILS,
|
||||
SETTINGS
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.safemobile.helpers;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.provider.Settings;
|
||||
|
||||
import com.safemobile.enums.ProviderSettingsStatus;
|
||||
|
||||
public class ProviderSettingsHelper {
|
||||
public static final String PACKAGE = "package";
|
||||
public static final String ACTION_APPLICATION_DETAILS_SETTINGS = Settings.ACTION_APPLICATION_DETAILS_SETTINGS;
|
||||
public static final String ACTION_SETTINGS = Settings.ACTION_SETTINGS;
|
||||
|
||||
private ProviderSettingsHelper() {
|
||||
|
||||
}
|
||||
|
||||
public static String getAction(ProviderSettingsStatus providerSettingsStatus) {
|
||||
switch (providerSettingsStatus) {
|
||||
case APPLICATION_DETAILS:
|
||||
return ACTION_APPLICATION_DETAILS_SETTINGS;
|
||||
case SETTINGS:
|
||||
default:
|
||||
return ACTION_SETTINGS;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean canHandleAction(Context context, String action) {
|
||||
Intent intent = new Intent(action);
|
||||
Uri uri = Uri.fromParts(PACKAGE, context.getPackageName(), null);
|
||||
|
||||
intent.setData(uri);
|
||||
|
||||
return context.getPackageManager() != null && intent.resolveActivity(context.getPackageManager()) != null;
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.safemobile.interfaces;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import com.google.android.gms.tasks.Task;
|
||||
|
||||
public interface IDialogService {
|
||||
Task<Boolean> showDialog(Activity activity, String title, String message, String cancel, String ok);
|
||||
Task<Boolean> showPermissionRequestDialog(Activity activity, String message, String cancel);
|
||||
|
||||
void showError(Activity activity, String message);
|
||||
}
|
@ -27,7 +27,7 @@ public class AppParams {
|
||||
|
||||
/* SafeMobile Dispatch */
|
||||
public static ArrayList<User> allUsers = new ArrayList<User>();
|
||||
public static Theme theme = Theme.SAFENET; // the Theme type
|
||||
public static Theme theme = Theme.SAFEDISPATCH; // the Theme type
|
||||
|
||||
|
||||
/* ***************************************** */
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.safemobile.services;
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.LinkedList;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Timer;
|
||||
@ -12,7 +11,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;
|
||||
@ -20,247 +18,178 @@ import com.safemobile.lib.SM;
|
||||
import com.safemobile.lib.TCPmsg;
|
||||
|
||||
|
||||
public class TCPhandler implements Runnable
|
||||
{
|
||||
public class TCPhandler implements Runnable {
|
||||
private boolean alive = true;
|
||||
|
||||
public String serverHostname = new String ("10.120.1.114");//
|
||||
private int port = 13579;
|
||||
public String serverHostname;
|
||||
private int port;
|
||||
private Thread listenThread;
|
||||
private Socket soc =null;
|
||||
|
||||
//private BufferedReader recv;
|
||||
//private PrintWriter writer;
|
||||
|
||||
private DataInputStream input;
|
||||
private DataOutputStream output;
|
||||
private Timer timer;
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
public TCPhandler(Context context, String hostName, int p) {
|
||||
this.context = context;
|
||||
serverHostname=hostName;
|
||||
port=p;
|
||||
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.
|
||||
|
||||
|
||||
// create timer to check socket status
|
||||
timer = new Timer();
|
||||
Timer timer = new Timer();
|
||||
timer.scheduleAtFixedRate(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
//Looper.prepare();
|
||||
//mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||
// get if is authenticated
|
||||
//Write("0.0", "d");
|
||||
previousConnectionWasUP = isConnectionUP;
|
||||
|
||||
// try to send something
|
||||
TCPmsgParser._fireonTCPConnectionStatusEvent(isConnectionUP, previousConnectionWasUP);
|
||||
}
|
||||
catch (Exception e) {
|
||||
//e.printStackTrace();
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
previousConnectionWasUP = isConnectionUP;
|
||||
// try to send something
|
||||
TCPmsgParser._fireonTCPConnectionStatusEvent(isConnectionUP, previousConnectionWasUP);
|
||||
} catch (Exception e) {
|
||||
SM.Exception("TIMERException", e.toString());
|
||||
}
|
||||
}
|
||||
}, 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;
|
||||
// get WiFi state
|
||||
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
|
||||
{
|
||||
if(soc!=null)
|
||||
soc.close();
|
||||
public void run() {
|
||||
try {
|
||||
if (soc != null)
|
||||
soc.close();
|
||||
|
||||
soc = new Socket();
|
||||
soc.connect(new InetSocketAddress(serverHostname, port), 5000);
|
||||
|
||||
//soc.setSoTimeout(3000);
|
||||
//SM.Debug("Socket timeout:" + soc.getSoTimeout() );
|
||||
//soc.setSoTimeout(5000);
|
||||
|
||||
input = new DataInputStream(soc.getInputStream());
|
||||
output = new DataOutputStream(soc.getOutputStream());
|
||||
|
||||
//recv= new BufferedReader(new InputStreamReader(soc.getInputStream()));
|
||||
//writer =new PrintWriter(soc.getOutputStream()) ;
|
||||
|
||||
|
||||
if(soc !=null) {
|
||||
//previousConnectionWasUP = isConnectionUP;
|
||||
isConnectionUP = true;
|
||||
triggerTCPConnectionStateEvent();
|
||||
}
|
||||
|
||||
}
|
||||
catch (UnknownHostException e)
|
||||
{
|
||||
SM.Debug("UnknownHostException", "TCPhandler break:"+e.toString());
|
||||
}
|
||||
catch (IllegalArgumentException e)
|
||||
{
|
||||
SM.Debug("IllegalArgumentException", "TCPhandler break:"+e.toString());
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
SM.Debug("IOException", "TCPhandler break:"+e.toString());
|
||||
soc = new Socket();
|
||||
soc.connect(new InetSocketAddress(serverHostname, port), 5000);
|
||||
|
||||
input = new DataInputStream(soc.getInputStream());
|
||||
output = new DataOutputStream(soc.getOutputStream());
|
||||
|
||||
if (soc != null) {
|
||||
isConnectionUP = true;
|
||||
triggerTCPConnectionStateEvent();
|
||||
}
|
||||
} catch (UnknownHostException e) {
|
||||
SM.Debug("UnknownHostException", "TCPhandler break:"+ e);
|
||||
} catch (IllegalArgumentException e) {
|
||||
SM.Debug("IllegalArgumentException", "TCPhandler break:"+ e);
|
||||
} catch (IOException e) {
|
||||
SM.Debug("IOException", "TCPhandler break:"+ e);
|
||||
}
|
||||
|
||||
while(alive)
|
||||
{
|
||||
//SM.Debug("Waiting for data...");
|
||||
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(isConnectionUP)
|
||||
{
|
||||
try
|
||||
{
|
||||
while(isConnectionUP) {
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
//SM.Debug("Waiting for data...");
|
||||
//process leftover
|
||||
try
|
||||
{
|
||||
boolean FinishLeftOver =true;
|
||||
while (FinishLeftOver)
|
||||
{
|
||||
// add this replacement if message length doesn't contain the last #
|
||||
// leftOver = leftOver.replace("##", "#");
|
||||
String[] tempArr2 = leftOver.split("#");
|
||||
if (tempArr2.length > 1)
|
||||
{
|
||||
int messLen;
|
||||
try
|
||||
{
|
||||
messLen = Integer.parseInt(tempArr2[1]);
|
||||
try {
|
||||
boolean FinishLeftOver = true;
|
||||
while (FinishLeftOver) {
|
||||
// add this replacement if message length doesn't contain the last #
|
||||
String[] tempArr2 = leftOver.split("#");
|
||||
if (tempArr2.length > 1) {
|
||||
int messLen;
|
||||
try {
|
||||
messLen = Integer.parseInt(tempArr2[1]);
|
||||
|
||||
//TODO talk to Gaby to fix this on Bridge
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
SM.Debug("leftovers", "incorect msg len leftOver =" + tempArr2[1]);
|
||||
messLen =-1;
|
||||
}
|
||||
//TODO talk to Gaby to fix this on Bridge
|
||||
} catch (Exception e) {
|
||||
SM.Debug("leftovers", "incorect msg len leftOver =" + tempArr2[1]);
|
||||
messLen =-1;
|
||||
}
|
||||
|
||||
if(messLen>leftOver.length())
|
||||
{
|
||||
FinishLeftOver =false;
|
||||
break;
|
||||
}
|
||||
else if(messLen==leftOver.length())
|
||||
{
|
||||
TCPmsg msg = new TCPmsg(leftOver.toCharArray());
|
||||
SM.Debug("leftovers", "RX from leftOver:"+msg.allData);
|
||||
if (messLen > leftOver.length()) {
|
||||
break;
|
||||
} else if (messLen == leftOver.length()) {
|
||||
TCPmsg msg = new TCPmsg(leftOver.toCharArray());
|
||||
SM.Debug("leftovers", "RX from leftOver:"+msg.allData);
|
||||
|
||||
if(msg.allData.contains("#92#"))
|
||||
prioritizePongReceived();
|
||||
if(msg.allData.contains("#92#"))
|
||||
prioritizePongReceived();
|
||||
|
||||
msgList.add(msg);
|
||||
leftOver ="";
|
||||
FinishLeftOver =false;
|
||||
break;
|
||||
}
|
||||
else // we have more message in leftover
|
||||
{
|
||||
TCPmsg msg = new TCPmsg(leftOver.substring(0,messLen).toCharArray());
|
||||
SM.Debug("leftovers", "RX from leftOver:"+msg.allData);
|
||||
msgList.add(msg);
|
||||
leftOver ="";
|
||||
break;
|
||||
} else { // we have more message in leftover
|
||||
TCPmsg msg = new TCPmsg(leftOver.substring(0,messLen).toCharArray());
|
||||
SM.Debug("leftovers", "RX from leftOver:"+msg.allData);
|
||||
|
||||
if(msg.allData.contains("#92#"))
|
||||
prioritizePongReceived();
|
||||
if(msg.allData.contains("#92#"))
|
||||
prioritizePongReceived();
|
||||
|
||||
msgList.add(msg);
|
||||
leftOver = leftOver.substring(messLen,leftOver.length());
|
||||
}
|
||||
}
|
||||
else FinishLeftOver = false;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
SM.Debug("leftovers", "Error on process leftover"+e.toString());
|
||||
}
|
||||
//end process leftover
|
||||
|
||||
String data ="";
|
||||
n=0;
|
||||
//char[] buf = new char[1024];
|
||||
//n = recv.read(buf);
|
||||
|
||||
msgList.add(msg);
|
||||
leftOver = leftOver.substring(messLen);
|
||||
}
|
||||
} else FinishLeftOver = false;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
SM.Debug("leftovers", "Error on process leftover"+ e);
|
||||
}
|
||||
String data;
|
||||
int n;
|
||||
|
||||
byte[] buf = new byte[1024];
|
||||
// read data into buffer
|
||||
n = input.read(buf);
|
||||
//connection closed by server
|
||||
if(n==-1)
|
||||
{
|
||||
if (n == -1) {
|
||||
SM.Debug("TCP Client", "Connection closed by server!");
|
||||
soc.close();
|
||||
//previousConnectionWasUP = isConnectionUP;
|
||||
isConnectionUP = false;
|
||||
triggerTCPConnectionStateEvent();
|
||||
soc = null;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
byte[] temp = new byte[n];
|
||||
for(int i=0;i<n;i++) temp[i] = buf[i];
|
||||
//String data =new String(temp);
|
||||
|
||||
System.arraycopy(buf, 0, temp, 0, n);
|
||||
|
||||
// decryptData
|
||||
temp = decryptTEA(temp);
|
||||
|
||||
data = new String(temp);
|
||||
|
||||
//if we have any leftovers from previous message add them
|
||||
if(leftOver.length()>1) // avoid case with only one #
|
||||
{
|
||||
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))
|
||||
{
|
||||
if ((tempArr.length == 0) || (tempArr.length == 1)) {
|
||||
SM.Debug("TCP Client", "incorect messagebuss message=" + data);
|
||||
continue;
|
||||
}
|
||||
//get msg len
|
||||
// for(int i=0;i<tempArr.length;i++)
|
||||
// SM.Debug("I:"+i+" tempArr[i]:"+tempArr[i]);
|
||||
int messLen;
|
||||
try {
|
||||
messLen = Integer.parseInt(tempArr[1]);
|
||||
@ -269,80 +198,58 @@ public class TCPhandler implements Runnable
|
||||
continue;
|
||||
}
|
||||
//messLen not int
|
||||
if(messLen == -1)
|
||||
{
|
||||
//SM.Debug("messLen not int=" + messLen +" tempArr[1]:" +tempArr[1]);
|
||||
if (messLen == -1) {
|
||||
continue;
|
||||
}
|
||||
char[] temMSG = data.toCharArray();
|
||||
//SM.Debug("MessLen:"+messLen+" Data len:"+data.length()+"IF:"+(data.length() != messLen));
|
||||
if (data.length() != messLen)
|
||||
{
|
||||
if (data.length() != messLen) {
|
||||
//if expected string message is smaller then actual string then exit processing;
|
||||
if(messLen>data.length())
|
||||
//if(messLen>n)
|
||||
{
|
||||
//SM.Debug("duda","messLen=" + messLen +" data.length():" +data.length()+"n:"+n);
|
||||
leftOver = data; // Add by bigu
|
||||
if (messLen > data.length()) {
|
||||
leftOver = data; // Add by bigu
|
||||
continue;
|
||||
}
|
||||
//perform cut
|
||||
//SM.Debug("We got leftover ....message length("+messLen+") != actual length("+data.length()+")");
|
||||
temMSG = data.substring(0,messLen).toCharArray();
|
||||
//SM.Debug("temMSG:"+temMSG.toString());
|
||||
leftOver = data.substring(messLen,data.length());
|
||||
//SM.Debug("leftOver:"+leftOver);
|
||||
//leftOver = data.substring(messLen,n);
|
||||
//SM.Debug("left over string:"+leftOver);
|
||||
leftOver = data.substring(messLen);
|
||||
}
|
||||
//decode TCP msg
|
||||
TCPmsg msg = new TCPmsg(temMSG);
|
||||
|
||||
SM.Debug("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RX <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", msg.allData);
|
||||
|
||||
if(msg.allData.contains("#92#"))
|
||||
if (msg.allData.contains("#92#"))
|
||||
prioritizePongReceived();
|
||||
|
||||
msgList.add(msg);
|
||||
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
SM.Debug("TCPHandler", "TCPhandler/run/break:"+ex.toString());
|
||||
//previousConnectionWasUP = isConnectionUP;
|
||||
} catch(Exception ex) {
|
||||
SM.Debug("TCPHandler", "TCPhandler/run/break:"+ ex);
|
||||
isConnectionUP = false;
|
||||
triggerTCPConnectionStateEvent();
|
||||
}
|
||||
}//while(connOK)
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException e) {
|
||||
SM.Debug("TCPhandler Crash2 on sleep:"+e.toString());
|
||||
//previousConnectionWasUP = isConnectionUP;
|
||||
SM.Debug("TCPhandler Crash2 on sleep:"+ e);
|
||||
}
|
||||
|
||||
//try to restart connection
|
||||
if(alive && isWiFiOn)
|
||||
if (alive && isWiFiOn)
|
||||
RestartTCP();
|
||||
|
||||
}//while(alive)
|
||||
}
|
||||
SM.Debug("==================================");
|
||||
SM.Debug("TCP listenThread stoped!! alive = false");
|
||||
SM.Debug("==================================");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a bypass in order to trigger the ping received event
|
||||
*/
|
||||
private void prioritizePongReceived() {
|
||||
TCPmsgParser._firePONGReceivedEvent();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Broadcast Received for WiFi Connect/Disconnect */
|
||||
public BroadcastReceiver mReceived = new BroadcastReceiver() {
|
||||
|
||||
@ -351,183 +258,74 @@ public class TCPhandler implements Runnable
|
||||
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()) {
|
||||
closeSocket();
|
||||
isWiFiOn = false;
|
||||
}
|
||||
else
|
||||
isWiFiOn = true;
|
||||
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
|
||||
// close socket if the wifi is disconnecting or disconnected
|
||||
isWiFiOn = isNetworkConnected();
|
||||
if (!isWiFiOn)
|
||||
closeSocket();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/** 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)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
/*
|
||||
if(writer != null)
|
||||
{
|
||||
String cmdok = "#" + seqID + msg;
|
||||
Integer tmp = cmdok.length() + 1;
|
||||
//SM.Debug("tmp:"+tmp);
|
||||
|
||||
tmp += Integer.toString(tmp).length();// tmp.ToString().Length;
|
||||
if((tmp==10)||(tmp==100)||(tmp==1000)) tmp++;
|
||||
cmdok = "#" + Integer.toString(tmp) + cmdok;
|
||||
writer.write(encryptTEA(cmdok));
|
||||
writer.flush();
|
||||
SM.Debug("TX:"+encryptTEA(cmdok));
|
||||
return true;
|
||||
}*/
|
||||
|
||||
if(output != null)
|
||||
{
|
||||
public boolean Write(String seqID, String msg) {
|
||||
try {
|
||||
if (output != null) {
|
||||
try {
|
||||
Thread.sleep(10);
|
||||
String cmdok = "#" + seqID + msg;
|
||||
Integer tmp = cmdok.length() + 1;
|
||||
int tmp = cmdok.length() + 1;
|
||||
//SM.Debug("tmp:"+tmp);
|
||||
|
||||
tmp += Integer.toString(tmp).length();// tmp.ToString().Length;
|
||||
if((tmp==10)||(tmp==100)||(tmp==1000)) tmp++;
|
||||
cmdok = "#" + Integer.toString(tmp) + cmdok;
|
||||
tmp += Integer.toString(tmp).length();
|
||||
if ((tmp == 10)||(tmp == 100)||(tmp == 1000)) tmp++;
|
||||
cmdok = "#" + tmp + cmdok;
|
||||
|
||||
byte[] mess = encryptTEA(cmdok);
|
||||
|
||||
|
||||
output.write(mess);
|
||||
output.flush();
|
||||
|
||||
// show only notACK messages
|
||||
//if(mess[3] != 0x0C)
|
||||
SM.Debug(" ", new String(mess));
|
||||
return true;
|
||||
} catch (IOException | NoSuchElementException | InterruptedException e) {
|
||||
SM.Exception("TCPClient[Send]", e.toString());
|
||||
}
|
||||
catch (IOException e) {
|
||||
//e.printStackTrace();
|
||||
SM.Exception("TCPClient[Send]", e.toString());
|
||||
} catch (InterruptedException e) {
|
||||
SM.Exception("TCPClient[Send]", e.toString());
|
||||
} catch (NoSuchElementException e) {
|
||||
SM.Exception("TCPClient[Send]", e.toString());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
SM.Debug("TCPhandler Write Procedure:"+e.toString());
|
||||
} catch (Exception e) {
|
||||
SM.Debug("TCPhandler Write Procedure:"+ e);
|
||||
}
|
||||
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[]{};
|
||||
|
||||
/*
|
||||
//encrypt message using TEA
|
||||
try {
|
||||
encryptedByteArray = TEA.encrypt(toEncryptData);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
SM.Exception("encryptTEA Exception(UEE): " + e.toString());
|
||||
} catch (IndexOutOfBoundsException e) {
|
||||
SM.Exception("encryptTEA Exception(IOoBE): " + e.toString());
|
||||
} catch (NullPointerException e) {
|
||||
SM.Exception("encryptTEA Exception(NPE): " + e.toString());
|
||||
}
|
||||
//*/
|
||||
|
||||
// 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[]{};
|
||||
|
||||
/*
|
||||
String sm = "";
|
||||
for(int i=0; i<toDecryptData.length; i++)
|
||||
sm+=toDecryptData[i] + " ";
|
||||
|
||||
SM.Debug("DDDDDD: " + sm);
|
||||
//*/
|
||||
/*
|
||||
//decrypt message using TEA
|
||||
try {
|
||||
decryptedByteArray = TEA.decrypt(toDecryptData);
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
SM.Exception("encryptTEA Exception(UEE): " + e.toString());
|
||||
} catch (IndexOutOfBoundsException e) {
|
||||
SM.Exception("encryptTEA Exception(IOoBE): " + e.toString());
|
||||
} catch (NullPointerException e) {
|
||||
SM.Exception("encryptTEA Exception(NPE): " + e.toString());
|
||||
}
|
||||
|
||||
String sm = "";
|
||||
for(int i=0; i<decryptedByteArray.length; i++)
|
||||
sm+= (int)decryptedByteArray[i] + " ";
|
||||
//sm = new String(decryptedByteArray.toString());
|
||||
try {
|
||||
SM.Debug("##### " + new String(decryptedByteArray, "UTF-8"));
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
SM.Debug("DEcrypted: " + decryptedByteArray.toString());
|
||||
|
||||
//*/
|
||||
byte[] decryptedByteArray;
|
||||
|
||||
// no decryption
|
||||
decryptedByteArray = toDecryptData;
|
||||
|
||||
return decryptedByteArray;
|
||||
}
|
||||
|
||||
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void updateTCPparameters(String ip, String _port)
|
||||
{
|
||||
|
||||
public void updateTCPparameters(String ip, String _port) {
|
||||
// stop socket
|
||||
try {
|
||||
if(soc != null)
|
||||
@ -537,30 +335,23 @@ public class TCPhandler implements Runnable
|
||||
}
|
||||
|
||||
serverHostname = ip;
|
||||
try
|
||||
{
|
||||
try {
|
||||
port = Integer.parseInt(_port);
|
||||
}
|
||||
catch (Exception e) {
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
} catch (Exception ignored) { }
|
||||
finally {
|
||||
port = 13589;
|
||||
}
|
||||
}
|
||||
|
||||
public void triggerTCPConnectionStateEvent() {
|
||||
if(!isConnectionUP)
|
||||
if (!isConnectionUP)
|
||||
TCPmsgParser._fireTCPConnectionDownEvent(previousConnectionWasUP);
|
||||
else
|
||||
TCPmsgParser._fireTCPConnectionUpEvent(previousConnectionWasUP);
|
||||
}
|
||||
|
||||
private void RestartTCP()
|
||||
{
|
||||
try
|
||||
{
|
||||
private void RestartTCP() {
|
||||
try {
|
||||
isConnectionUP = false;
|
||||
previousConnectionWasUP = false;
|
||||
|
||||
@ -569,76 +360,22 @@ public class TCPhandler implements Runnable
|
||||
soc.connect(new InetSocketAddress(serverHostname, port), 5000);
|
||||
|
||||
input = new DataInputStream(soc.getInputStream());
|
||||
//input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
//output stream
|
||||
output = new DataOutputStream(soc.getOutputStream());
|
||||
|
||||
//recv= new BufferedReader(new InputStreamReader(soc.getInputStream()));
|
||||
//writer =new PrintWriter(soc.getOutputStream()) ;
|
||||
if(soc !=null)
|
||||
{
|
||||
//previousConnectionWasUP = isConnectionUP;
|
||||
if (soc != null)
|
||||
isConnectionUP = true;
|
||||
//triggerTCPConnectionStateEvent();
|
||||
|
||||
/*
|
||||
//init connection
|
||||
boolean res = Write("0.0", "#19#" + AppParams.crtRadio.ip + "&"
|
||||
+ AppParams.crtRadio.id + "#");
|
||||
if(res){
|
||||
SM.Debug("Message (AirPadInit) sent to controller");
|
||||
}else{
|
||||
SM.Debug("Could not send message(AirPadInit)!!");
|
||||
}
|
||||
|
||||
//get
|
||||
res = Write("0.0", "#30#104#0#0#0#0#");
|
||||
if(res){
|
||||
SM.Debug("Message (GetSetZoneAndChannel) sent to app server zoneNR:"+0+ " channelNR:"+0);
|
||||
}else{
|
||||
SM.Debug("Could not send message(GetSetZoneAndChannel)!!!");
|
||||
}
|
||||
*/
|
||||
//init audio
|
||||
//AudioHandle.b_SendinitUDP = true;
|
||||
}
|
||||
|
||||
}
|
||||
catch (UnknownHostException e)
|
||||
{
|
||||
SM.Exception("RestartTCP break:"+e.toString());
|
||||
isConnectionUP = false;
|
||||
|
||||
}
|
||||
catch (IllegalArgumentException e)
|
||||
{
|
||||
SM.Debug("IllegalArgumentException", "RestartTCP break:"+e.toString());
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
SM.Exception("RestartTCP break:"+e.toString());
|
||||
} catch (NullPointerException | IOException e) {
|
||||
SM.Exception("RestartTCP break:"+ e);
|
||||
isConnectionUP = false;
|
||||
} catch (IllegalArgumentException e) {
|
||||
SM.Debug("IllegalArgumentException", "RestartTCP break:"+ e);
|
||||
}
|
||||
catch (NullPointerException e)
|
||||
{
|
||||
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 */
|
||||
public void closeSocket() {
|
||||
|
||||
try {
|
||||
input = null;
|
||||
output = null;
|
||||
@ -650,27 +387,23 @@ public class TCPhandler implements Runnable
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
public void Stop() {
|
||||
SM.Debug("Stopping TCP", "TCP Connection is stopping on " + AppParams.IP + ":" + port);
|
||||
alive = false;
|
||||
|
||||
|
||||
if(mReceived!= null)
|
||||
try{ context.unregisterReceiver(mReceived); } catch(Exception ex) {/* receiver not registered //*/};
|
||||
|
||||
if (mReceived!= null)
|
||||
try {
|
||||
context.unregisterReceiver(mReceived);
|
||||
} catch(Exception ex) {/* receiver not registered //*/}
|
||||
|
||||
// stop thread
|
||||
if(listenThread != null)
|
||||
{
|
||||
if (listenThread != null) {
|
||||
Thread moribund = listenThread;
|
||||
listenThread = null;
|
||||
moribund.interrupt();
|
||||
}
|
||||
|
||||
|
||||
if(input!=null)
|
||||
{
|
||||
if (input != null) {
|
||||
try {
|
||||
input.close();
|
||||
input = null;
|
||||
@ -679,8 +412,7 @@ public class TCPhandler implements Runnable
|
||||
}
|
||||
}
|
||||
|
||||
if(output!=null)
|
||||
{
|
||||
if (output != null) {
|
||||
try {
|
||||
output.close();
|
||||
output = null;
|
||||
@ -689,16 +421,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());
|
||||
} catch (IOException e) {
|
||||
SM.Exception("TCPClient[STOP]", "Stop break:"+ e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 16 KiB |
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
BIN
libSafeMobile/src/main/res/mipmap-hdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.8 KiB |
BIN
libSafeMobile/src/main/res/mipmap-hdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
libSafeMobile/src/main/res/mipmap-mdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 1020 B |
After Width: | Height: | Size: 1.0 KiB |
BIN
libSafeMobile/src/main/res/mipmap-mdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
libSafeMobile/src/main/res/mipmap-xhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.7 KiB |
BIN
libSafeMobile/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
libSafeMobile/src/main/res/mipmap-xxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 4.4 KiB |
BIN
libSafeMobile/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
libSafeMobile/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 6.3 KiB |
BIN
libSafeMobile/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Normal file
After Width: | Height: | Size: 12 KiB |
@ -1,14 +1,36 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
|
||||
apply plugin: "com.gladed.androidgitversion"
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
maven {
|
||||
url "https://plugins.gradle.org/m2/"
|
||||
}
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "gradle.plugin.com.gladed.gradle.androidgitversion:gradle-android-git-version:0.4.3"
|
||||
}
|
||||
}
|
||||
|
||||
androidGitVersion {
|
||||
codeFormat 'MNNBBBB'
|
||||
format '%tag%%.count%'
|
||||
hideBranches = ['develop']
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 31
|
||||
buildToolsVersion "31.0.0"
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.safemobile.dispatch"
|
||||
applicationId "com.safemobile.safedispatch"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 31
|
||||
versionName androidGitVersion.name()
|
||||
versionCode androidGitVersion.code()
|
||||
archivesBaseName = "SafeDispatchMobile_v.$versionName"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
@ -20,6 +42,13 @@ android {
|
||||
buildFeatures {
|
||||
viewBinding false
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
// Or, if you prefer, you can continue to check for errors in release builds,
|
||||
// but continue the build even when errors are found:
|
||||
//abortOnError false
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
implementation project(':libSafeMobile')
|
||||
|
BIN
safeDispatch/release/SafeDispatchMobile_v.8.0.35-release.aab
Normal file
BIN
safeDispatch/release/SafeDispatchMobile_v.8.0.49-release.aab
Normal file
20
safeDispatch/release/output-metadata.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"version": 3,
|
||||
"artifactType": {
|
||||
"type": "APK",
|
||||
"kind": "Directory"
|
||||
},
|
||||
"applicationId": "com.safemobile.safedispatch",
|
||||
"variantName": "release",
|
||||
"elements": [
|
||||
{
|
||||
"type": "SINGLE",
|
||||
"filters": [],
|
||||
"attributes": [],
|
||||
"versionCode": 8000035,
|
||||
"versionName": "8.0.35",
|
||||
"outputFile": "SafeDispatchMobile_v.8.0.35-release.apk"
|
||||
}
|
||||
],
|
||||
"elementType": "File"
|
||||
}
|
@ -1,9 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.safemobile.dispatch"
|
||||
android:versionCode="9"
|
||||
android:versionName="1.0.9">
|
||||
package="com.safemobile.safedispatch">
|
||||
|
||||
<!-- require OpenGL ES version 2 for Google Maps -->
|
||||
<uses-feature
|
||||
@ -30,7 +27,7 @@
|
||||
|
||||
<application
|
||||
android:configChanges="orientation"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:screenOrientation="landscape"
|
||||
android:theme="@style/AppTheme">
|
||||
@ -45,7 +42,7 @@
|
||||
<service android:name="com.safemobile.services.TCPService" />
|
||||
|
||||
<activity
|
||||
android:name=".SDMobileActivity"
|
||||
android:name="com.safemobile.safedispatch.SDMobileActivity"
|
||||
android:configChanges="orientation"
|
||||
android:exported="true"
|
||||
android:label="@string/app_name_demo"
|
||||
@ -57,41 +54,41 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".SetupActivity"
|
||||
android:name="com.safemobile.safedispatch.SetupActivity"
|
||||
android:configChanges="orientation"
|
||||
android:screenOrientation="landscape" />
|
||||
<activity
|
||||
android:name=".TabLayoutActivity"
|
||||
android:name="com.safemobile.safedispatch.TabLayoutActivity"
|
||||
android:configChanges="orientation"
|
||||
android:screenOrientation="landscape" />
|
||||
<activity
|
||||
android:name=".LiveActivity"
|
||||
android:name="com.safemobile.safedispatch.LiveActivity"
|
||||
android:exported="false"
|
||||
android:configChanges="orientation"
|
||||
android:screenOrientation="landscape"
|
||||
android:label="@string/title_activity_google_maps" />
|
||||
<activity
|
||||
android:name=".HistoryActivity"
|
||||
android:name="com.safemobile.safedispatch.HistoryActivity"
|
||||
android:configChanges="orientation"
|
||||
android:screenOrientation="landscape" />
|
||||
<activity
|
||||
android:name=".MessagesActivity"
|
||||
android:name="com.safemobile.safedispatch.MessagesActivity"
|
||||
android:configChanges="orientation"
|
||||
android:screenOrientation="landscape" />
|
||||
<activity
|
||||
android:name=".AlarmActivity"
|
||||
android:name="com.safemobile.safedispatch.AlarmActivity"
|
||||
android:configChanges="orientation"
|
||||
android:screenOrientation="landscape" />
|
||||
<activity
|
||||
android:name=".RadioActivity"
|
||||
android:name="com.safemobile.safedispatch.RadioActivity"
|
||||
android:configChanges="orientation"
|
||||
android:screenOrientation="landscape" />
|
||||
<activity
|
||||
android:name=".RecordingsActivity"
|
||||
android:name="com.safemobile.safedispatch.RecordingsActivity"
|
||||
android:configChanges="orientation"
|
||||
android:screenOrientation="landscape" />
|
||||
<activity
|
||||
android:name=".NotificationActivity"
|
||||
android:name="com.safemobile.safedispatch.NotificationActivity"
|
||||
android:configChanges="orientation"
|
||||
android:screenOrientation="landscape" />
|
||||
</application>
|
||||
|
BIN
safeDispatch/src/main/ic_launcher-playstore.png
Normal file
After Width: | Height: | Size: 18 KiB |
@ -1,162 +0,0 @@
|
||||
package com.safemobile.dispatch;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.gms.maps.GoogleMap;
|
||||
import com.google.android.gms.maps.SupportMapFragment;
|
||||
import com.safemobile.lib.AppParams;
|
||||
import com.safemobile.lib.SM;
|
||||
import com.safemobile.lib.Vehicle;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
public class HistoryActivity extends AppCompatActivity {
|
||||
|
||||
public Bundle savedInstanceState;
|
||||
private TabLayoutActivity parentTab;
|
||||
private GoogleMap googleMap;
|
||||
private Spinner spinnerVehicle;
|
||||
private ImageView changeMapType, checkTraffic, slideLayoutImage;
|
||||
private LinearLayout layoutTraffic, slidelayout, layoutVehicles;
|
||||
|
||||
private ArrayList<Vehicle> allVehicle = new ArrayList<>();
|
||||
private ArrayList<String> allVehicleNames = new ArrayList<>();
|
||||
private ArrayAdapter<String> adapter;
|
||||
private boolean showVehicle = true;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
this.savedInstanceState = savedInstanceState;
|
||||
setContentView(R.layout.tabhistory);
|
||||
|
||||
parentTab = (TabLayoutActivity) getParent();
|
||||
parentTab.setHistoryActivity(this);
|
||||
|
||||
Locale locale = new Locale(AppParams.LANGUAGETMP);
|
||||
Locale.setDefault(locale);
|
||||
|
||||
googleMap = parentTab.getLiveActivity().getMap();
|
||||
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
|
||||
.findFragmentById(R.id.map);
|
||||
|
||||
spinnerVehicle = findViewById(R.id.spinnerVehicle);
|
||||
getVehicles();
|
||||
|
||||
adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, allVehicleNames);
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
|
||||
spinnerVehicle.setAdapter(adapter);
|
||||
spinnerVehicle.setSelection(0);
|
||||
|
||||
changeMapType();
|
||||
changeTraffic();
|
||||
|
||||
slidelayout = findViewById(R.id.slidelayout);
|
||||
slideLayoutImage = findViewById(R.id.slideLayoutImage);
|
||||
layoutVehicles = findViewById(R.id.layoutBig);
|
||||
// slidelayout.setOnTouchListener((v, event) -> {
|
||||
// if (showVehicle) {
|
||||
// layoutVehicles.setVisibility(View.GONE);
|
||||
// slideLayoutImage.setImageResource(R.drawable.arrow_right);
|
||||
// showVehicle = false;
|
||||
// } else {
|
||||
// layoutVehicles.setVisibility(View.VISIBLE);
|
||||
// slideLayoutImage.setImageResource(R.drawable.arrow_left);
|
||||
// showVehicle = true;
|
||||
// }
|
||||
// return false;
|
||||
// });
|
||||
|
||||
setDate();
|
||||
}
|
||||
|
||||
private void setDate() {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
Date endDate = calendar.getTime();
|
||||
calendar.add(Calendar.DATE, -1);
|
||||
Date startDate = calendar.getTime();
|
||||
|
||||
LinearLayout layoutStartPicker = findViewById(R.id.layoutStartPicker);
|
||||
TextView textViewDate = findViewById(R.id.textViewStartDate);
|
||||
|
||||
textViewDate.setText(new SimpleDateFormat("HH:mm, dd.MM.yyyy").format(startDate));
|
||||
// layoutStartPicker.setOnTouchListener((v, event) -> {
|
||||
// showDialog(layoutStartPicker);
|
||||
// return false;
|
||||
// });
|
||||
|
||||
// layoutEndPicker.setOnTouchListener(new OnTouchListener() {
|
||||
// @Override
|
||||
// public boolean onTouch(View v, MotionEvent event) {
|
||||
// showDialog(layoutEndPicker);
|
||||
// return false;
|
||||
// }
|
||||
// });
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void changeTraffic() {
|
||||
ImageView changeTrafficImageView = findViewById(R.id.changeTraffic);
|
||||
changeTrafficImageView.setOnClickListener(v -> {
|
||||
if (googleMap.isTrafficEnabled()) {
|
||||
changeTrafficImageView.setImageResource(R.drawable.traffic_off);
|
||||
googleMap.setTrafficEnabled(false);
|
||||
} else {
|
||||
changeTrafficImageView.setImageResource(R.drawable.traffic);
|
||||
googleMap.setTrafficEnabled(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void changeMapType() {
|
||||
changeMapType = findViewById(R.id.changeMapType);
|
||||
ImageView changeMapTypeImageView = findViewById(R.id.changeMapType);
|
||||
changeMapType.setOnClickListener(view -> {
|
||||
if (googleMap.getMapType() == GoogleMap.MAP_TYPE_SATELLITE) {
|
||||
changeMapTypeImageView.setImageResource(R.drawable.satellite);
|
||||
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
|
||||
} else {
|
||||
changeMapTypeImageView.setImageResource(R.drawable.map);
|
||||
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void getVehicles() {
|
||||
try {
|
||||
for (Vehicle vehicle : parentTab.getAllVehicle()) {
|
||||
allVehicleNames.add(vehicle.name);
|
||||
allVehicle.add(vehicle);
|
||||
}
|
||||
} catch (Exception ex) { }
|
||||
|
||||
}
|
||||
|
||||
public void UpdateMap() {
|
||||
SM.Debug("Do the updateMAP post");
|
||||
}
|
||||
|
||||
public void UpdateUnableDisp() {
|
||||
SM.Debug("Do Cancelwindow");
|
||||
}
|
||||
|
||||
public void UpdateCancel() {
|
||||
SM.Debug("Do Cancelwindow");
|
||||
}
|
||||
|
||||
public void UpdateNrPos(int size) {
|
||||
SM.Debug("Do Cancelwindow");
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.safemobile.lib;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.android.gms.tasks.TaskCompletionSource;
|
||||
import com.safemobile.safedispatch.R;
|
||||
import com.safemobile.interfaces.IDialogService;
|
||||
|
||||
public class DialogService implements IDialogService {
|
||||
@Override
|
||||
public Task<Boolean> showDialog(Activity activity, String title, String message, String cancel, String ok) {
|
||||
TaskCompletionSource<Boolean> taskCompletionSource = new TaskCompletionSource<>();
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity)
|
||||
.setTitle(title)
|
||||
.setMessage(message)
|
||||
.setCancelable(false)
|
||||
.setNegativeButton(cancel, (dialog, which) -> {
|
||||
taskCompletionSource.trySetResult(false);
|
||||
dialog.dismiss();
|
||||
})
|
||||
.setPositiveButton(ok, (dialog, which) -> taskCompletionSource.trySetResult(true));
|
||||
|
||||
AlertDialog dialog = builder.create();
|
||||
dialog.show();
|
||||
|
||||
return taskCompletionSource.getTask();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Task<Boolean> showPermissionRequestDialog(Activity activity, String message, String cancel) {
|
||||
return showDialog(
|
||||
activity,
|
||||
activity.getString(R.string.permission_denied),
|
||||
message,
|
||||
cancel,
|
||||
activity.getString(R.string.go_to_settings));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showError(Activity activity, String message) {
|
||||
showDialog(
|
||||
activity,
|
||||
activity.getString(R.string.DialogService_Info_ErrorMessage),
|
||||
message,
|
||||
null,
|
||||
activity.getString(R.string.ok));
|
||||
}
|
||||
}
|
@ -13,7 +13,7 @@ import com.safemobile.interfaces.IPermissionModule;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
|
||||
public class PermissionService implements IPermissionModule {
|
||||
public class PermissionModule implements IPermissionModule {
|
||||
private static final String[] AUDIO_PERMISSIONS = {Manifest.permission.RECORD_AUDIO};
|
||||
private static final String[] LOCATION_PERMISSIONS = {
|
||||
Manifest.permission.ACCESS_COARSE_LOCATION,
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
@ -12,10 +12,12 @@ import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.android.gms.maps.GoogleMap;
|
||||
import com.google.android.gms.maps.model.Marker;
|
||||
import com.safemobile.lib.HistPos;
|
||||
import com.safemobile.lib.SuperVehicle;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Locale;
|
||||
@ -25,8 +27,10 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
|
||||
private final String TAG = GoogleMapsInfoBubble.class.getName();
|
||||
|
||||
private final View mWindow;
|
||||
private final Hashtable<Long, SuperVehicle> superVehHash;
|
||||
private Hashtable<Long, SuperVehicle> superVehHash;
|
||||
private final Context context;
|
||||
private ArrayList<HistPos> histPosList;
|
||||
private boolean isLiveTab = true;
|
||||
|
||||
|
||||
public GoogleMapsInfoBubble(LayoutInflater layoutInflater, Context context, Hashtable<Long, SuperVehicle> vehicles) {
|
||||
@ -35,6 +39,17 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
|
||||
mWindow = layoutInflater.inflate(R.layout.map_marker_info_bubble, null);
|
||||
}
|
||||
|
||||
public GoogleMapsInfoBubble(LayoutInflater layoutInflater, Context context) {
|
||||
isLiveTab = false;
|
||||
this.context = context;
|
||||
// this.superVehHash = vehicles;
|
||||
mWindow = layoutInflater.inflate(R.layout.map_marker_info_bubble, null);
|
||||
}
|
||||
|
||||
public void setHistoryPositions(ArrayList<HistPos> positions) {
|
||||
this.histPosList = positions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getInfoWindow(@NonNull Marker marker) {
|
||||
render(marker, mWindow);
|
||||
@ -49,13 +64,21 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
|
||||
|
||||
private void render(Marker marker, View view) {
|
||||
long key = 0;
|
||||
|
||||
try {
|
||||
key = Long.parseLong(marker.getTitle());
|
||||
} catch (Exception ex) {
|
||||
Log.v(TAG, "Unable to parse Google Maps Info Bubble title");
|
||||
int position = 0;
|
||||
if (isLiveTab) {
|
||||
try {
|
||||
key = Long.parseLong(marker.getTitle());
|
||||
} catch (Exception ex) {
|
||||
Log.v(TAG, "Unable to parse Google Maps Info Bubble title");
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
position = Integer.getInteger(marker.getTitle());
|
||||
} catch (Exception e) {
|
||||
Log.v(TAG, "Unable to parse Google Maps Info Bubble title on History");
|
||||
}
|
||||
}
|
||||
SuperVehicle vehicle = superVehHash.get(key);
|
||||
|
||||
|
||||
RelativeLayout rlMapInfoBubbleInfo = view.findViewById(R.id.rlMapInfoBubbleInfo);
|
||||
TextView tvUnitName = view.findViewById(R.id.tvUnitName);
|
||||
@ -67,27 +90,39 @@ public class GoogleMapsInfoBubble implements GoogleMap.InfoWindowAdapter {
|
||||
rlMapInfoBubbleInfo.setVisibility(View.VISIBLE);
|
||||
|
||||
boolean isMilitaryTime = false;
|
||||
Date positionTime = new Date(vehicle.timeGMT);
|
||||
|
||||
Date positionTime;
|
||||
String speed, address, gpsLocation, name = "";
|
||||
if (isLiveTab) {
|
||||
SuperVehicle vehicle = superVehHash.get(key);
|
||||
positionTime = new Date(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);
|
||||
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) + "]";
|
||||
}
|
||||
|
||||
String timeFormat = isMilitaryTime
|
||||
? "HH:mm:ss dd.MMM.yyyy"
|
||||
: "hh:mm:ss a dd.MMM.yyy";
|
||||
|
||||
DateFormat format = new SimpleDateFormat(timeFormat, Locale.ENGLISH);
|
||||
|
||||
tvTimeAgo.setText(format.format(positionTime));
|
||||
|
||||
tvSpeed.setText(String.format(context.getResources().getString(R.string.speedMph), vehicle.speed));
|
||||
|
||||
String address = vehicle.Address != null ? vehicle.Address : "";
|
||||
|
||||
tvStreetView.setText(address);
|
||||
streetView.setVisibility(address.length() > 0 ? View.VISIBLE : View.GONE);
|
||||
tvStreetView.setVisibility(address.length() > 0 ? View.VISIBLE : View.GONE);
|
||||
tvUnitName.setText(vehicle.name);
|
||||
tvGPSLocation.setText("[" + String.format("%.4f", vehicle.lat)
|
||||
+ "," + String.format("%.4f",vehicle.lng) + "]");
|
||||
if (!isLiveTab)
|
||||
tvUnitName.setVisibility(View.GONE);
|
||||
else
|
||||
tvUnitName.setText(name);
|
||||
|
||||
tvSpeed.setText(speed);
|
||||
tvGPSLocation.setText(gpsLocation);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,241 @@
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.Dialog;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.gms.maps.CameraUpdateFactory;
|
||||
import com.google.android.gms.maps.GoogleMap;
|
||||
import com.google.android.gms.maps.OnMapReadyCallback;
|
||||
import com.google.android.gms.maps.SupportMapFragment;
|
||||
import com.google.android.gms.maps.model.BitmapDescriptor;
|
||||
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
|
||||
import com.google.android.gms.maps.model.LatLng;
|
||||
import com.google.android.gms.maps.model.MarkerOptions;
|
||||
import com.google.android.gms.maps.model.PolylineOptions;
|
||||
import com.safemobile.lib.AppParams;
|
||||
import com.safemobile.lib.HistPos;
|
||||
import com.safemobile.lib.OperationCodes;
|
||||
import com.safemobile.lib.SM;
|
||||
import com.safemobile.lib.Vehicle;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
public class HistoryActivity extends AppCompatActivity implements OnMapReadyCallback {
|
||||
|
||||
public Bundle savedInstanceState;
|
||||
private TabLayoutActivity parentTab;
|
||||
private GoogleMap googleMap;
|
||||
private Spinner spinnerVehicle;
|
||||
private Button displayButton;
|
||||
private Date startDate, endDate;
|
||||
private final Handler myHandler = new Handler();
|
||||
private GoogleMapsInfoBubble infoBubble;
|
||||
|
||||
private final ArrayList<Vehicle> allVehicle = new ArrayList<>();
|
||||
private final ArrayList<String> allVehicleNames = new ArrayList<>();
|
||||
private final SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd yyyy");
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
this.savedInstanceState = savedInstanceState;
|
||||
setContentView(R.layout.tabhistory);
|
||||
|
||||
parentTab = (TabLayoutActivity) getParent();
|
||||
parentTab.setHistoryActivity(this);
|
||||
|
||||
Locale locale = new Locale(AppParams.LANGUAGETMP);
|
||||
Locale.setDefault(locale);
|
||||
|
||||
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
|
||||
.findFragmentById(R.id.map);
|
||||
if (mapFragment != null)
|
||||
mapFragment.getMapAsync(this);
|
||||
|
||||
spinnerVehicle = findViewById(R.id.spinnerVehicle);
|
||||
getVehicles();
|
||||
|
||||
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, allVehicleNames);
|
||||
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
|
||||
spinnerVehicle.setAdapter(adapter);
|
||||
spinnerVehicle.setSelection(0);
|
||||
|
||||
changeMapType();
|
||||
changeTraffic();
|
||||
|
||||
displayButton = findViewById(R.id.buttonDisplay);
|
||||
displayButton.setOnClickListener(view -> {
|
||||
googleMap.clear();
|
||||
if (!AppParams.DEMO) {
|
||||
parentTab.setDropAllData(false);
|
||||
parentTab.setFirstHistoryData(true);
|
||||
parentTab.clearHistoryMessageList();
|
||||
parentTab.clearHistoryPositionList();
|
||||
|
||||
// request history
|
||||
parentTab.executeNetworkStuff(new String[] {OperationCodes.GetHistoryPositions + "", allVehicle.get(spinnerVehicle.getSelectedItemPosition()).sc_id + "",
|
||||
(startDate.getTime()/ 1000L) + "", (endDate.getTime()/ 1000L) + ""});
|
||||
} else {
|
||||
parentTab.demoPositionsList();
|
||||
displayHistory(parentTab.getDemoPositions());
|
||||
}
|
||||
});
|
||||
|
||||
setDate();
|
||||
}
|
||||
|
||||
private void displayHistory(ArrayList<HistPos> positions) {
|
||||
LatLng latLng = null;
|
||||
PolylineOptions polylineOptions = new PolylineOptions();
|
||||
BitmapDescriptor markerIcon = BitmapDescriptorFactory.fromResource(R.drawable.history_pin);
|
||||
for (int i = 0; i < positions.size(); i++) {
|
||||
HistPos pos = positions.get(i);
|
||||
if (pos.speed > 0) {
|
||||
latLng = new LatLng(pos.lat, pos.lng);
|
||||
polylineOptions.add(latLng);
|
||||
|
||||
googleMap.addMarker(new MarkerOptions()
|
||||
.position(latLng)
|
||||
.icon(markerIcon)
|
||||
.title(String.valueOf(i)));
|
||||
}
|
||||
}
|
||||
|
||||
googleMap.addPolyline(polylineOptions);
|
||||
if (latLng != null)
|
||||
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14));
|
||||
}
|
||||
|
||||
private void setDate() {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
endDate = calendar.getTime();
|
||||
calendar.add(Calendar.DATE, -1);
|
||||
startDate = calendar.getTime();
|
||||
|
||||
TextView textViewStartDate = findViewById(R.id.textViewStartDate);
|
||||
TextView textViewEndDate = findViewById(R.id.textViewEndDate);
|
||||
|
||||
textViewStartDate.setText(sdf.format(startDate));
|
||||
textViewEndDate.setText(sdf.format(endDate));
|
||||
|
||||
textViewStartDate.setOnClickListener(view -> openDialog(textViewStartDate, true));
|
||||
textViewEndDate.setOnClickListener(view -> openDialog(textViewEndDate, false));
|
||||
}
|
||||
|
||||
private void openDialog(TextView textView, Boolean isStartDate) {
|
||||
Date date = startDate;
|
||||
if (!isStartDate)
|
||||
date = endDate;
|
||||
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(date);
|
||||
|
||||
DatePickerDialog.OnDateSetListener setListener = (datePicker, y, m, d) -> {
|
||||
calendar.set(y, m, d);
|
||||
String dateString = sdf.format(calendar.getTime());
|
||||
textView.setText(dateString);
|
||||
if (isStartDate)
|
||||
startDate = calendar.getTime();
|
||||
else
|
||||
endDate = calendar.getTime();
|
||||
};
|
||||
|
||||
Dialog dialog = new DatePickerDialog(this, android.R.style.Theme_Holo_Light_Dialog_MinWidth, setListener,
|
||||
calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
|
||||
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
private void changeTraffic() {
|
||||
ImageView changeTrafficImageView = findViewById(R.id.changeTraffic);
|
||||
changeTrafficImageView.setOnClickListener(v -> {
|
||||
if (googleMap.isTrafficEnabled()) {
|
||||
changeTrafficImageView.setImageResource(R.drawable.traffic_off);
|
||||
googleMap.setTrafficEnabled(false);
|
||||
} else {
|
||||
changeTrafficImageView.setImageResource(R.drawable.traffic);
|
||||
googleMap.setTrafficEnabled(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void changeMapType() {
|
||||
ImageView changeMapType = findViewById(R.id.changeMapType);
|
||||
changeMapType.setOnClickListener(view -> {
|
||||
if (googleMap.getMapType() == GoogleMap.MAP_TYPE_SATELLITE) {
|
||||
changeMapType.setImageResource(R.drawable.satellite);
|
||||
googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
|
||||
} else {
|
||||
changeMapType.setImageResource(R.drawable.map);
|
||||
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void getVehicles() {
|
||||
try {
|
||||
allVehicle.clear();
|
||||
allVehicleNames.clear();
|
||||
for (Vehicle vehicle : parentTab.getAllVehicle()) {
|
||||
allVehicleNames.add(vehicle.name);
|
||||
allVehicle.add(vehicle);
|
||||
}
|
||||
} catch (Exception ignored) { }
|
||||
|
||||
}
|
||||
|
||||
final Runnable UpdateMapResults = new Runnable() {
|
||||
public void run() {
|
||||
Log.v("updateMap", parentTab.getHistoryPositionList().toString());
|
||||
SM.Debug("Do the Display");
|
||||
infoBubble.setHistoryPositions(parentTab.getHistoryPositionList());
|
||||
displayHistory(parentTab.getHistoryPositionList());
|
||||
}
|
||||
};
|
||||
|
||||
public void UpdateMap() {
|
||||
myHandler.post(UpdateMapResults);
|
||||
SM.Debug("Do the updateMAP post");
|
||||
}
|
||||
|
||||
public void UpdateUnableDisp() {
|
||||
SM.Debug("Do Cancelwindow");
|
||||
}
|
||||
|
||||
public void UpdateCancel() {
|
||||
SM.Debug("Do Cancelwindow");
|
||||
}
|
||||
|
||||
public void UpdateNrPos(int size) {
|
||||
SM.Debug("Do Cancelwindow");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMapReady(@NonNull GoogleMap googleMap) {
|
||||
this.googleMap = googleMap;
|
||||
|
||||
infoBubble = new GoogleMapsInfoBubble(getLayoutInflater(), this);
|
||||
this.googleMap.setInfoWindowAdapter(infoBubble);
|
||||
|
||||
parentTab.demoPositionsList();
|
||||
displayButton.performClick();
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import android.os.Bundle;
|
||||
import androidx.fragment.app.FragmentActivity;
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
@ -673,10 +673,10 @@ public class RadioActivity extends Activity {
|
||||
dialog.setCancelable(true);
|
||||
dialog.setCanceledOnTouchOutside(true);
|
||||
|
||||
TextView text = (TextView) dialog.findViewById(R.id.text);
|
||||
ImageView image = (ImageView) dialog.findViewById(R.id.image);
|
||||
TextView text = dialog.findViewById(R.id.text);
|
||||
ImageView image = dialog.findViewById(R.id.image);
|
||||
|
||||
image.setImageResource(R.drawable.ic_launcher);
|
||||
image.setImageResource(R.mipmap.ic_launcher);
|
||||
text.setText(errorMsg);
|
||||
dialog.show();
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
@ -184,10 +184,10 @@ public class RecordingsActivity extends Activity {
|
||||
dialog.setCancelable(true);
|
||||
dialog.setCanceledOnTouchOutside(true);
|
||||
|
||||
TextView text = (TextView) dialog.findViewById(R.id.text);
|
||||
ImageView image = (ImageView) dialog.findViewById(R.id.image);
|
||||
TextView text = dialog.findViewById(R.id.text);
|
||||
ImageView image = dialog.findViewById(R.id.image);
|
||||
|
||||
image.setImageResource(R.drawable.ic_launcher);
|
||||
image.setImageResource(R.mipmap.ic_launcher);
|
||||
text.setText(errorMsg);
|
||||
dialog.show();
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
@ -233,10 +233,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) {
|
||||
@ -663,7 +663,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 +737,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);
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import java.util.Locale;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.safemobile.dispatch;
|
||||
package com.safemobile.safedispatch;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
@ -13,21 +13,31 @@ import java.util.Objects;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import com.google.android.gms.tasks.Task;
|
||||
import com.google.android.gms.tasks.TaskCompletionSource;
|
||||
import com.safemobile.activities.AbstractEmptyActivity;
|
||||
import com.safemobile.activities.AbstractLiveActivity;
|
||||
import com.safemobile.activities.AbstractMessagesActivity;
|
||||
import com.safemobile.activities.AbstractRadioActivity;
|
||||
import com.safemobile.activities.AbstractSDParentActivity;
|
||||
import com.safemobile.safedispatch.R;
|
||||
import com.safemobile.enums.AuthorizationCode;
|
||||
import com.safemobile.enums.AuthorizationStatus;
|
||||
import com.safemobile.enums.ProviderSettingsStatus;
|
||||
import com.safemobile.helpers.ProviderSettingsHelper;
|
||||
import com.safemobile.interfaces.IPermissionModule;
|
||||
import com.safemobile.interfaces.ITCPListener;
|
||||
import com.safemobile.interfaces.TCPEvent;
|
||||
import com.safemobile.lib.Alarm;
|
||||
import com.safemobile.lib.AlarmMSG;
|
||||
import com.safemobile.lib.AppParams;
|
||||
import com.safemobile.lib.DialogService;
|
||||
import com.safemobile.lib.GPSmsg;
|
||||
import com.safemobile.lib.HistCountmsg;
|
||||
import com.safemobile.lib.HistPos;
|
||||
import com.safemobile.lib.HistPosmsg;
|
||||
import com.safemobile.lib.OperationCodes;
|
||||
import com.safemobile.lib.PermissionModule;
|
||||
import com.safemobile.lib.RadioMSG;
|
||||
import com.safemobile.lib.LastPos;
|
||||
import com.safemobile.lib.LastPosmsg;
|
||||
@ -46,6 +56,7 @@ import com.safemobile.services.TCPService;
|
||||
import com.safemobile.services.TCPhandler;
|
||||
import com.safemobile.services.TCPService.TCPBinder;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Dialog;
|
||||
import android.app.Notification;
|
||||
@ -57,6 +68,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.ServiceConnection;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.AssetManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
@ -81,6 +93,8 @@ import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import android.widget.TabHost.TabSpec;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
|
||||
/* Misc */
|
||||
@ -247,6 +261,10 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
this.historyPositionList = historyPositionList;
|
||||
}
|
||||
|
||||
public void clearHistoryPositionList() {
|
||||
this.historyPositionList.clear();
|
||||
}
|
||||
|
||||
public Boolean getFirstHistoryData() {
|
||||
return firstHistoryData;
|
||||
}
|
||||
@ -271,6 +289,10 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
this.historyMessageList = historyMessageList;
|
||||
}
|
||||
|
||||
public void clearHistoryMessageList() {
|
||||
this.historyMessageList.clear();
|
||||
}
|
||||
|
||||
public ArrayList<SMS> getDemoSmsList() {
|
||||
return demoSmsList;
|
||||
}
|
||||
@ -452,7 +474,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
// add radio tab
|
||||
intent[6] = new Intent(context, AbstractEmptyActivity.class);
|
||||
tabSpecs[6] = tabHost.newTabSpec(ABOUT)
|
||||
.setIndicator(ABOUT, res.getDrawable(AppParams.DEMO ? R.drawable.icon_demo : R.drawable.ic_launcher))
|
||||
.setIndicator(ABOUT, res.getDrawable(AppParams.DEMO ? R.drawable.icon_demo : R.mipmap.ic_launcher))
|
||||
.setContent(intent[6]);
|
||||
|
||||
// add history tab
|
||||
@ -562,6 +584,15 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
buttonRadio.setVisibility(View.GONE);
|
||||
buttonRadio.setOnClickListener(v -> {
|
||||
if (!buttonRadio.isSelected()) {
|
||||
|
||||
// check audio permission
|
||||
IPermissionModule permissionModule = new PermissionModule();
|
||||
AuthorizationStatus audioAuthorizationStatus = permissionModule.getAuthorizationStatus(this, AuthorizationCode.RECORD_AUDIO);
|
||||
if (audioAuthorizationStatus != AuthorizationStatus.AUTHORIZE) {
|
||||
permissionModule.requestAuthorization(this, AuthorizationCode.RECORD_AUDIO);
|
||||
return;
|
||||
}
|
||||
|
||||
// select button
|
||||
buttonRadio.setSelected(true);
|
||||
// deselect other buttons
|
||||
@ -722,7 +753,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
dialog.setTitle(AppParams.DEMO ? getString(R.string.app_name_demo) : getString(R.string.app_name));
|
||||
dialog.setContentView(R.layout.dialog);
|
||||
ImageView image = dialog.findViewById(R.id.image);
|
||||
image.setImageResource(AppParams.DEMO ? R.drawable.icon_demo : R.drawable.ic_launcher);
|
||||
image.setImageResource(AppParams.DEMO ? R.drawable.icon_demo : R.mipmap.ic_launcher);
|
||||
TextView text = dialog.findViewById(R.id.text);
|
||||
TextView text2 = dialog.findViewById(R.id.text2);
|
||||
text.setText(String.format("%s1.0.8", getString(R.string.version)));
|
||||
@ -861,7 +892,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
tabHost.setCurrentTabByTag(TEXT);
|
||||
AppParams.crtTab = AppParams.Tabs.message;
|
||||
Vehicle vehicle = getVehicle4Imei(getImei());
|
||||
if(vehicle != null)
|
||||
if (vehicle != null)
|
||||
getMessageActivity().setScId(vehicle.sc_id);
|
||||
getMessageActivity().LASTMESSAGES = false;
|
||||
getMessageActivity().getLastSMS();
|
||||
@ -913,7 +944,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
}
|
||||
}
|
||||
|
||||
private void demoPositionsList() {
|
||||
public void demoPositionsList() {
|
||||
AssetManager assetManager = res.getAssets();
|
||||
SM.Debug("TRY 2 OPEN demo_positions.txt");
|
||||
InputStream input = null;
|
||||
@ -1038,7 +1069,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
SM.Debug("########### UPDATE");
|
||||
int scId = demoPosition % 3 == 0 ? 101 : 102;
|
||||
SuperVehicle superVehicle = (getSuperVehHash().get((long) scId));
|
||||
if(superVehicle != null)
|
||||
if (superVehicle != null)
|
||||
superVehicle.SetNewPosition(crtPos.lat, crtPos.lng, Calendar.getInstance().getTime().getTime(), crtPos.speed);
|
||||
getLiveActivity().refreshMap();
|
||||
}
|
||||
@ -1315,7 +1346,7 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
myHandler.post(updateResults);
|
||||
} else
|
||||
myHandler.post(() ->
|
||||
createNotification(AppParams.messageNotif));
|
||||
createNotification(AppParams.messageNotif));
|
||||
|
||||
//list for SMS
|
||||
if (AppParams.crtTab == AppParams.Tabs.message && getMessageActivity() != null) {
|
||||
@ -1763,7 +1794,8 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
Vehicle vehicle = getVehicle4Imei(getImei());
|
||||
if (vehicle != null)
|
||||
textViewNMFrom.setText(String.format("%s: %s", getString(R.string.from), vehicle.name));
|
||||
else textViewNMFrom.setText(String.format("%s: %s", getString(R.string.from), getImei()));
|
||||
else
|
||||
textViewNMFrom.setText(String.format("%s: %s", getString(R.string.from), getImei()));
|
||||
textViewNMMessage.setText(String.format("TYPE: %s", getMess()));
|
||||
// show layout
|
||||
layoutNewMessage.setVisibility(View.VISIBLE);
|
||||
@ -2209,4 +2241,87 @@ public class TabLayoutActivity extends AbstractSDParentActivity {
|
||||
intent.putExtra("extra", new SerializedObject(object, action));
|
||||
getBaseContext().sendBroadcast(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
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);
|
||||
}
|
||||
|
||||
AuthorizationStatus result;
|
||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
result = AuthorizationStatus.AUTHORIZE;
|
||||
} else {
|
||||
result = AuthorizationStatus.DENIED;
|
||||
}
|
||||
|
||||
if (permissions.length == 0)
|
||||
return;
|
||||
|
||||
if (permissions[0].equals(Manifest.permission.RECORD_AUDIO)) {
|
||||
onAudioPermissionChanged(result);
|
||||
}
|
||||
}
|
||||
|
||||
private void onAudioPermissionChanged(AuthorizationStatus result) {
|
||||
if (result == AuthorizationStatus.AUTHORIZE) {
|
||||
// select button
|
||||
buttonRadio.setSelected(true);
|
||||
// deselect other buttons
|
||||
buttonAlarms.setSelected(false);
|
||||
buttonLive.setSelected(false);
|
||||
buttonRecordings.setSelected(false);
|
||||
buttonHistory.setSelected(false);
|
||||
buttonSetup.setSelected(false);
|
||||
buttonText.setSelected(false);
|
||||
// select tab
|
||||
tabHost.setCurrentTabByTag(RADIO);
|
||||
AppParams.crtTab = AppParams.Tabs.radio;
|
||||
|
||||
if (getRadioActivity() != null && getRadioActivity().allVehicle != null && getRadioActivity().allVehicle.isEmpty()) {
|
||||
getRadioActivity().allVehicle = getAllVehicle();
|
||||
getRadioActivity().UpdateVehicle();
|
||||
}
|
||||
} else {
|
||||
DialogService dialogService = new DialogService();
|
||||
Task<Boolean> responseTask = dialogService.showPermissionRequestDialog(this,
|
||||
getString(R.string.permissionBlocked, getString(R.string.microphone), getString(R.string.radio_tab), getString(R.string.microphone)),
|
||||
getString(R.string.cancel));
|
||||
responseTask.addOnCompleteListener(task -> waitForUserInput(task.getResult()));
|
||||
}
|
||||
}
|
||||
|
||||
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 == "")
|
||||
return;
|
||||
|
||||
boolean isActionApplicationDetailsSettings = action.equals(ProviderSettingsHelper.ACTION_APPLICATION_DETAILS_SETTINGS);
|
||||
|
||||
if (!ProviderSettingsHelper.canHandleAction(context, action))
|
||||
action = ProviderSettingsHelper.getAction(ProviderSettingsStatus.SETTINGS);
|
||||
|
||||
Intent intent = new Intent(action);
|
||||
|
||||
if (isActionApplicationDetailsSettings) {
|
||||
Uri uri = Uri.fromParts(ProviderSettingsHelper.PACKAGE, this.getPackageName(), null);
|
||||
intent.setData(uri);
|
||||
}
|
||||
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
this.startActivity(intent);
|
||||
}
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 207 KiB |
Before Width: | Height: | Size: 66 KiB |
BIN
safeDispatch/src/main/res/drawable-hdpi/safedispatch_logo.png
Normal file
After Width: | Height: | Size: 145 KiB |
BIN
safeDispatch/src/main/res/drawable-mdpi/history_pin.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
@ -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>
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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="@drawable/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="#FFFFFF"
|
||||
/>
|
||||
<TextView android:id="@+id/text2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:textSize="18dp"
|
||||
android:textColor="#FFFFFF"
|
||||
/>
|
||||
</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>
|
||||
|
@ -11,7 +11,7 @@
|
||||
android:paddingTop="2dp"
|
||||
android:text="TITLE"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textColor="@color/black"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/layout_horizontal"
|
||||
@ -24,7 +24,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:src="@drawable/ic_launcher"
|
||||
android:src="@mipmap/ic_launcher"
|
||||
android:contentDescription="image for dialog"
|
||||
/>
|
||||
<LinearLayout
|
||||
@ -40,7 +40,6 @@
|
||||
android:paddingTop="8dp"
|
||||
android:text="Row1"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="#FFFFFF"
|
||||
/>
|
||||
<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="#FFFFFF"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
@ -61,4 +61,4 @@
|
||||
android:textSize="16dp" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
@ -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>
|
@ -209,8 +209,6 @@
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/frameLayoutLanguage"
|
||||
@ -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>
|
@ -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>
|
@ -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="@drawable/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"/>
|
||||
|
||||
</LinearLayout>
|
||||
android:gravity="center_vertical"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
@ -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"
|
||||
|
@ -8,7 +8,6 @@
|
||||
android:layout_height="fill_parent"
|
||||
style="?header"
|
||||
android:gravity="center_vertical" >
|
||||
|
||||
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
@ -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>
|
@ -4,86 +4,85 @@
|
||||
android:layout_height="fill_parent"
|
||||
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">
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="left"
|
||||
android:layout_weight="0"
|
||||
android:orientation="horizontal"
|
||||
style="?header"
|
||||
android:id="@+id/layoutHeader">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageViewMsg"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:src="@drawable/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>
|
@ -1,8 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent" android:layout_height="fill_parent"
|
||||
android:id="@+id/tab1Layout" android:orientation="horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:id="@+id/tab1Layout"
|
||||
android:orientation="horizontal"
|
||||
style="?bg">
|
||||
|
||||
<RelativeLayout
|
||||
@ -162,10 +164,11 @@
|
||||
android:text="@string/startDate"
|
||||
android:textSize="22dp"
|
||||
android:paddingLeft="5dp"
|
||||
android:layout_marginTop="15sp"
|
||||
android:textColor="#000000"
|
||||
android:gravity="left"
|
||||
android:id="@+id/labelStartDate"
|
||||
android:visibility="gone"/>
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/layoutStartPicker"
|
||||
android:layout_height="wrap_content"
|
||||
@ -202,7 +205,7 @@
|
||||
android:textColor="#000000"
|
||||
android:gravity="left"
|
||||
android:id="@+id/labelEndDate"
|
||||
android:visibility="gone"/>
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/layoutEndPicker"
|
||||
android:layout_height="wrap_content"
|
||||
@ -284,14 +287,15 @@
|
||||
</LinearLayout>
|
||||
|
||||
<fragment
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:id="@+id/map"
|
||||
android:layout_toRightOf="@id/slidelayout"
|
||||
android:layout_weight="1"
|
||||
tools:context=".HistoryActivity"
|
||||
android:name="com.google.android.gms.maps.SupportMapFragment" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/changeMapType"
|
||||
|
@ -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">
|
||||
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" >
|
||||
<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" />
|
||||
<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/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"/>
|
||||
<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/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/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" />
|
||||
<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>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="right"
|
||||
android:layout_marginRight="8dp"
|
||||
android:visibility="gone">
|
||||
<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" />
|
||||
<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>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="2dp">
|
||||
<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="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>
|
||||
</LinearLayout>
|
@ -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>
|
||||
|
@ -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="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"/>
|
||||
<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"
|
||||
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"
|
||||
|
||||
android:singleLine="true" >
|
||||
<requestFocus />
|
||||
</EditText>
|
||||
<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>
|
||||
</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>
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#FFFFFF</color>
|
||||
</resources>
|
@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="app_name">SafeMobile Dispatch</string>
|
||||
<string name="app_name_demo">SafeMobile Dispatch Demo</string>
|
||||
<string name="app_name">SafeDispatch Mobile</string>
|
||||
<string name="app_name_demo">SafeDispatch Mobile Demo</string>
|
||||
<string name="app_name_radiopod">RadioPod</string>
|
||||
<string name="app_name_radiopad">RadioPad</string>
|
||||
<string name="app_name_radiopodd">RadioPod</string>
|
||||
@ -257,5 +257,11 @@
|
||||
|
||||
|
||||
<string name="speedMph">%1$d mph</string>
|
||||
<string name="DialogService_Info_ErrorMessage">Oops, something happened</string>
|
||||
<string name="go_to_settings">Go to settings</string>
|
||||
<string name="permission_denied">Permission Denied</string>
|
||||
<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>
|
||||
|
||||
</resources>
|
@ -82,7 +82,7 @@
|
||||
|
||||
<style name="mainBackground_sd">
|
||||
<item name="android:orientation">vertical</item>
|
||||
<item name="android:background">@drawable/safedispatch</item>
|
||||
<item name="android:background">@drawable/safedispatch_logo</item>
|
||||
<item name="android:scaleType">centerInside</item>
|
||||
</style>
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
</style>
|
||||
|
||||
<style name="bg_sd">
|
||||
<item name="android:background">@drawable/safedispatch</item>
|
||||
<item name="android:background">@drawable/safedispatch_logo</item>
|
||||
</style>
|
||||
|
||||
<style name="header_sd">
|
||||
@ -155,7 +155,7 @@
|
||||
|
||||
<style name="mainBackground_hy">
|
||||
<item name="android:orientation">vertical</item>
|
||||
<item name="android:background">@drawable/safedispatch</item>
|
||||
<item name="android:background">@drawable/safedispatch_logo</item>
|
||||
<item name="android:scaleType">centerInside</item>
|
||||
</style>
|
||||
|
||||
@ -211,7 +211,7 @@
|
||||
</style>
|
||||
|
||||
<style name="bg_hy">
|
||||
<item name="android:background">@drawable/safedispatch</item>
|
||||
<item name="android:background">@drawable/safedispatch_logo</item>
|
||||
</style>
|
||||
|
||||
<style name="header_hy">
|
||||
@ -228,7 +228,7 @@
|
||||
|
||||
<style name="mainBackground_vi">
|
||||
<item name="android:orientation">vertical</item>
|
||||
<item name="android:background">@drawable/safedispatch</item>
|
||||
<item name="android:background">@drawable/safedispatch_logo</item>
|
||||
<item name="android:scaleType">centerInside</item>
|
||||
</style>
|
||||
|
||||
@ -285,7 +285,7 @@
|
||||
</style>
|
||||
|
||||
<style name="bg_vi">
|
||||
<item name="android:background">@drawable/safedispatch</item>
|
||||
<item name="android:background">@drawable/safedispatch_logo</item>
|
||||
</style>
|
||||
|
||||
<style name="header_vi">
|
||||
|