diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 59c4931..21e4dec 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -13,8 +13,8 @@ android {
applicationId = "com.magix.atcommand"
minSdk = 30
targetSdk = 33
- versionCode = 5
- versionName = "0.0.4"
+ versionCode = 6
+ versionName = "0.0.5"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
@@ -47,6 +47,7 @@ dependencies {
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
implementation("com.github.mik3y:usb-serial-for-android:3.7.0")
implementation("com.google.android.gms:play-services-location:21.0.1")
+ implementation("androidx.webkit:webkit:1.9.0")
}
diff --git a/app/src/main/assets/assets/js/custom-chat.js b/app/src/main/assets/assets/js/custom-chat.js
index e20a495..e2ebb62 100644
--- a/app/src/main/assets/assets/js/custom-chat.js
+++ b/app/src/main/assets/assets/js/custom-chat.js
@@ -27,7 +27,8 @@ function receiveJsonUserChat(jsonString, newMessage="false") {
message.timestamp,
message.favourite,
`./../assets/media/avatar/${message.senderUUID}.png`,
- index === 0 ? needDivider : false
+ index === 0 ? needDivider : false,
+ message.rssi
);
});
if(newMessage != "false"){
@@ -56,6 +57,7 @@ function receiveGroupJsonUserChat(jsonString,newMessage = "false"){
message.favourite,
`./../assets/media/avatar/${message.senderUUID}.png`,
index === 0 ? needDivider : false,
+ message.rssi,
true
);
});
@@ -92,7 +94,8 @@ function addMessageDivider() {
}
// Genera il contenuto della chat
-function insertMessagesIntoContainer(messageID, myUUID, senderUUID, receiverUUID, messageText, messageDate, favourite, avatarSrc, needDivider, isGroup=false) {
+function insertMessagesIntoContainer(messageID, myUUID, senderUUID, receiverUUID, messageText, messageDate, favourite, avatarSrc, needDivider, rssi, isGroup=false) {
+ console.log(rssi);
const isSelf = myUUID === senderUUID;
const messageClass = isSelf ? 'message self' : 'message';
let messageContent = '';
@@ -110,6 +113,11 @@ function insertMessagesIntoContainer(messageID, myUUID, senderUUID, receiverUUID
${isGroup && senderUUID !== myUUID ? `
${senderUUID}
` : ''}
${messageText}
+ ${!isSelf ? `
+
+
+
+ ` : ''}
diff --git a/app/src/main/java/com/magix/atcommand/MainActivity.kt b/app/src/main/java/com/magix/atcommand/MainActivity.kt
index 047dbb1..6cc9676 100644
--- a/app/src/main/java/com/magix/atcommand/MainActivity.kt
+++ b/app/src/main/java/com/magix/atcommand/MainActivity.kt
@@ -49,6 +49,7 @@ import androidx.core.content.ContextCompat
import com.google.android.gms.location.FusedLocationProviderClient
import com.google.android.gms.location.LocationServices
import com.hoho.android.usbserial.driver.UsbSerialDriver
+import java.net.URLEncoder
import java.util.Timer
import java.util.TimerTask
import kotlin.concurrent.timerTask
@@ -197,7 +198,6 @@ class MainActivity : AppCompatActivity() {
val webAppInterface = WebAppInterface(this)
webView.addJavascriptInterface(webAppInterface, "Android")
webView.loadUrl("file:///android_asset/dark-skin/index.html")
-
}
webView.webViewClient = object : WebViewClient() {
@@ -209,6 +209,11 @@ class MainActivity : AppCompatActivity() {
disableTextareaAndLoadingIndicator()
}
}
+ if (currentPage == "Homepage"){
+ if (!isDeviceConnected) {
+ addOverlayDeviceDisconnected()
+ }
+ }
}
}
@@ -221,6 +226,7 @@ class MainActivity : AppCompatActivity() {
createTableUsers(db)
createTableMessage(db)
createTableGroups(db)
+ createTableCoordinates(db)
/*
Creo il gruppo Multicast se non esiste
@@ -611,6 +617,21 @@ class MainActivity : AppCompatActivity() {
}
}
+ /*
+ Carica Google Maps
+ */
+ fun loadMap(){
+ val latitude = 40.7128
+ val longitude = -74.0060
+ val zoomLevel = 15
+
+ val markerUrl = "https://www.openstreetmap.org/?mlat=$latitude&mlon=$longitude#map=$zoomLevel/$latitude/$longitude"
+ val encodedUrl = URLEncoder.encode(markerUrl, "UTF-8")
+
+ val mapUrl = "https://www.openstreetmap.org/export/embed.html"
+ webView.loadUrl(mapUrl)
+ }
+
/*
Funzione che controlla ogni 3 secondi lo stato della funzione readSerial()
*/
@@ -833,6 +854,24 @@ class MainActivity : AppCompatActivity() {
db.execSQL(query)
}
+ /*
+ Creo la tabella 'coordinates'
+ */
+ private fun createTableCoordinates(db: SQLiteDatabase) {
+ val query = """
+ CREATE TABLE IF NOT EXISTS coordinates (
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
+ receiverUUID TEXT,
+ latitude INTEGER DEFAULT NULL,
+ longitude INTEGER DEFAULT NULL,
+ rssi INTEGER DEFAULT NULL,
+ snr INTEGER DEFAULT NULL,
+ timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+ )
+ """.trimIndent()
+ db.execSQL(query)
+ }
+
fun deleteMessageById(db: SQLiteDatabase, messageId: Int) {
val whereClause = "id = ?"
val whereArgs = arrayOf(messageId.toString())
@@ -1486,7 +1525,7 @@ class MainActivity : AppCompatActivity() {
val jsonArray = JSONArray()
val query = (
- "SELECT id, senderUUID, receiverUUID, content, timestamp, favourite FROM messages " +
+ "SELECT id, senderUUID, receiverUUID, content, timestamp, favourite, rssi FROM messages " +
"WHERE (senderUUID = '$userUUID' OR receiverUUID = '$userUUID') " +
"AND hasGroup != 1 " + // Aggiunta della condizione per escludere hasGroup = 1
"ORDER BY timestamp DESC LIMIT 50"
@@ -1503,6 +1542,7 @@ class MainActivity : AppCompatActivity() {
val content = cursor.getString(3)
val timestamp = cursor.getString(4)
val favourite = cursor.getInt(5)
+ val rssi = cursor.getInt(6)
val jsonObject = JSONObject()
jsonObject.put("id", messageId)
@@ -1512,6 +1552,7 @@ class MainActivity : AppCompatActivity() {
jsonObject.put("timestamp", timestamp)
jsonObject.put("favourite", favourite)
jsonObject.put("myUUID", myUUID)
+ jsonObject.put("rssi", rssi)
jsonArray.put(jsonObject)
cursor.moveToPrevious()
}
@@ -1550,7 +1591,7 @@ class MainActivity : AppCompatActivity() {
val jsonArray = JSONArray()
val query = (
- "SELECT id, senderUUID, receiverUUID, content, timestamp, favourite FROM messages " +
+ "SELECT id, senderUUID, receiverUUID, content, timestamp, favourite, rssi FROM messages " +
"WHERE hasGroup = 1 AND IDGroup = $groupID " +
"ORDER BY timestamp DESC LIMIT 50"
)
@@ -1565,6 +1606,7 @@ class MainActivity : AppCompatActivity() {
val content = cursor.getString(3)
val timestamp = cursor.getString(4)
val favourite = cursor.getInt(5)
+ val rssi = cursor.getInt(6)
val jsonObject = JSONObject()
jsonObject.put("id", messageId)
@@ -1574,6 +1616,8 @@ class MainActivity : AppCompatActivity() {
jsonObject.put("timestamp", timestamp)
jsonObject.put("favourite", favourite)
jsonObject.put("myUUID", myUUID)
+ jsonObject.put("rssi", rssi)
+
jsonArray.put(jsonObject)
} while (cursor.moveToPrevious())
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 1afdd6f..39c7172 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -25,4 +25,5 @@
3
\u003F
AT+
+ AIzaSyAaLoeuhYn-pCwhKyQ1AUPsu9rcsSxOodc
\ No newline at end of file