diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index c101128..b04602c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-# Contributing to AirSync Android (2.0)
+# Contributing to AirSync Android (3.0)
Thank you for your interest in contributing!
Before you submit a pull request, please read the following guidelines.
diff --git a/README.md b/README.md
index 15a30b1..01acdea 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# airsync-android
-Android app for AirSync 2.0 built with Kotlin Jetpack Compose
+Android app for AirSync 3.0 built with Kotlin Jetpack Compose
Min : Android 11
@@ -7,7 +7,7 @@ Min : Android 11
## How to connect?
-Use your built-in camera or Google lense or anything that can scan a QR code. I twill prompt you to open the app. Once authorized, The last device will be saved on the mobile for now for easier re-connection.
+Use your built-in camera or Google Lens or anything that can scan a QR code. It will prompt you to open the app. Once authorized, the last device will be saved on the mobile for now for easier reconnection.
## [Read Documentation and How-To](https://airsync.notion.site/)
diff --git a/app/src/main/java/com/sameerasw/airsync/MainActivity.kt b/app/src/main/java/com/sameerasw/airsync/MainActivity.kt
index 8da1a07..8465d1c 100644
--- a/app/src/main/java/com/sameerasw/airsync/MainActivity.kt
+++ b/app/src/main/java/com/sameerasw/airsync/MainActivity.kt
@@ -180,7 +180,7 @@ class MainActivity : ComponentActivity() {
// Install and configure the splash screen before any UI rendering
val splashScreen = installSplashScreen()
- // Make activity draw behind system bars - let the theme handles the colors
+ // Make activity draw behind system bars - let the theme handle the colors
androidx.core.view.WindowCompat.setDecorFitsSystemWindows(window, false)
super.onCreate(savedInstanceState)
@@ -221,7 +221,7 @@ class MainActivity : ComponentActivity() {
if (splashIcon is ImageView && deviceIconRes != null) {
// Fade out the original app icon
val fadeOutIcon = ObjectAnimator.ofFloat(splashIcon, "alpha", 1f, 0f).apply {
- duration = 150 // 0.5 seconds
+ duration = 150 // 0.15 seconds
}
fadeOutIcon.doOnEnd {
@@ -239,7 +239,7 @@ class MainActivity : ComponentActivity() {
// Fade in the new device icon
val fadeInIcon =
ObjectAnimator.ofFloat(splashIcon, "alpha", 0f, 1f).apply {
- duration = 350 // 0.5 seconds
+ duration = 350 // 0.35 seconds
}
fadeInIcon.doOnEnd {
@@ -251,7 +251,7 @@ class MainActivity : ComponentActivity() {
splashIcon,
splashScreenViewProvider
)
- }, 250) // 0.5 second hold
+ }, 250) // 0.25 second hold
} catch (e: Exception) {
Log.e(
"MainActivity",
diff --git a/app/src/main/java/com/sameerasw/airsync/presentation/ui/components/SettingsView.kt b/app/src/main/java/com/sameerasw/airsync/presentation/ui/components/SettingsView.kt
index 993a4ad..227f591 100644
--- a/app/src/main/java/com/sameerasw/airsync/presentation/ui/components/SettingsView.kt
+++ b/app/src/main/java/com/sameerasw/airsync/presentation/ui/components/SettingsView.kt
@@ -394,7 +394,7 @@ fun SettingsView(
deviceInfo.name,
deviceInfo.localIp,
uiState.port.toIntOrNull() ?: 6996,
- versionName ?: "2.0.0",
+ versionName ?: "3.0.0",
adbPorts
)
onSendMessage(message)
diff --git a/app/src/main/java/com/sameerasw/airsync/presentation/ui/screens/AirSyncMainScreen.kt b/app/src/main/java/com/sameerasw/airsync/presentation/ui/screens/AirSyncMainScreen.kt
index 06d5409..0834e89 100644
--- a/app/src/main/java/com/sameerasw/airsync/presentation/ui/screens/AirSyncMainScreen.kt
+++ b/app/src/main/java/com/sameerasw/airsync/presentation/ui/screens/AirSyncMainScreen.kt
@@ -154,7 +154,7 @@ fun AirSyncMainScreen(
.getPackageInfo(context.packageName, 0)
.versionName
} catch (_: Exception) {
- "2.0.0"
+ "3.0.0"
}
val viewModel: AirSyncViewModel = viewModel { AirSyncViewModel.create(context) }
val uiState by viewModel.uiState.collectAsState()
diff --git a/app/src/main/java/com/sameerasw/airsync/utils/JsonUtil.kt b/app/src/main/java/com/sameerasw/airsync/utils/JsonUtil.kt
index e6536f1..99bb5af 100644
--- a/app/src/main/java/com/sameerasw/airsync/utils/JsonUtil.kt
+++ b/app/src/main/java/com/sameerasw/airsync/utils/JsonUtil.kt
@@ -26,9 +26,6 @@ object JsonUtil {
return """{"type":"device","data":{"name":"$name","ipAddress":"$ipAddress","port":$port,"version":"$version","adbPorts":[]$targetIpJson}}"""
}
- /**
- * Creates a single-line JSON string for device info with ADB ports
- */
/**
* Creates a single-line JSON string for device info with ADB ports
*/
@@ -47,9 +44,6 @@ object JsonUtil {
return """{"type":"device","data":{"id":"$id","name":"$name","ipAddress":"$ipAddress","port":$port,"version":"$version","adbPorts":[$portsJson]$targetIpJson}}"""
}
- /**
- * Creates a single-line JSON string for device info with wallpaper
- */
/**
* Creates a single-line JSON string for device info with wallpaper
*/
diff --git a/app/src/main/java/com/sameerasw/airsync/utils/NotificationDismissalUtil.kt b/app/src/main/java/com/sameerasw/airsync/utils/NotificationDismissalUtil.kt
index 1a814d1..0329017 100644
--- a/app/src/main/java/com/sameerasw/airsync/utils/NotificationDismissalUtil.kt
+++ b/app/src/main/java/com/sameerasw/airsync/utils/NotificationDismissalUtil.kt
@@ -198,7 +198,7 @@ object NotificationDismissalUtil {
return suppressedIds.remove(notificationId)
}
- /** Remove from caches when we it's gone. */
+ /** Remove from caches when it's gone. */
fun removeFromCaches(id: String) {
activeNotifications.remove(id)?.let { sbn ->
keyToId.remove(sbn.key)
diff --git a/app/src/main/java/com/sameerasw/airsync/utils/SyncManager.kt b/app/src/main/java/com/sameerasw/airsync/utils/SyncManager.kt
index 852e5ce..4f1ea1c 100644
--- a/app/src/main/java/com/sameerasw/airsync/utils/SyncManager.kt
+++ b/app/src/main/java/com/sameerasw/airsync/utils/SyncManager.kt
@@ -164,7 +164,7 @@ object SyncManager {
val localIp = DeviceInfoUtil.getWifiIpAddress(context) ?: "Unknown"
val port = dataStoreManager.getPort().first().toIntOrNull() ?: 6996
val version = context.packageManager
- .getPackageInfo(context.packageName, 0).versionName ?: "2.0.0"
+ .getPackageInfo(context.packageName, 0).versionName ?: "3.0.0"
// Get discovered ADB ports from the running mDNS discovery
val adbPorts = try {
@@ -247,7 +247,7 @@ object SyncManager {
val statusJson = DeviceInfoUtil.generateDeviceStatusJson(context)
if (WebSocketUtil.sendMessage(statusJson)) {
Log.d(TAG, "Device status sent")
- // Update cache
+ // Update cache
lastAudioInfo = DeviceInfoUtil.getAudioInfo(context, includeNowPlaying)
lastBatteryInfo = DeviceInfoUtil.getBatteryInfo(context)
} else {
diff --git a/app/src/main/java/com/sameerasw/airsync/utils/UDPDiscoveryManager.kt b/app/src/main/java/com/sameerasw/airsync/utils/UDPDiscoveryManager.kt
index 237e812..d9bd2e0 100644
--- a/app/src/main/java/com/sameerasw/airsync/utils/UDPDiscoveryManager.kt
+++ b/app/src/main/java/com/sameerasw/airsync/utils/UDPDiscoveryManager.kt
@@ -25,10 +25,10 @@ data class DiscoveredDevice(
val type: String, // "mac" or "android"
val lastSeen: Long = System.currentTimeMillis()
) {
- //check if it has a local IP (non-Tailscale)
+ // check if it has a local IP (non-Tailscale)
fun hasLocalIp(): Boolean = ips.any { !it.startsWith("100.") }
- //check if it has a Tailscale IP
+ // check if it has a Tailscale IP
fun hasTailscaleIp(): Boolean = ips.any { it.startsWith("100.") }
// Best IP for connection
@@ -415,7 +415,7 @@ object UDPDiscoveryManager {
val packet = DatagramPacket(
data,
data.size,
- InetAddress.getByName("255.55.255.255"),
+ InetAddress.getByName("255.255.255.255"),
BROADCAST_PORT
)
DatagramSocket(0, InetAddress.getByName(bindIp)).use { sender ->
diff --git a/app/src/main/java/com/sameerasw/airsync/utils/WallpaperUtil.kt b/app/src/main/java/com/sameerasw/airsync/utils/WallpaperUtil.kt
index de09860..4390336 100644
--- a/app/src/main/java/com/sameerasw/airsync/utils/WallpaperUtil.kt
+++ b/app/src/main/java/com/sameerasw/airsync/utils/WallpaperUtil.kt
@@ -26,7 +26,7 @@ object WallpaperUtil {
return try {
val wallpaperManager = WallpaperManager.getInstance(context)
- // Check permissions
+ // Check permissions
if (!hasWallpaperPermissions(context)) {
Log.w(TAG, "Missing wallpaper permissions")
return null
diff --git a/app/src/main/java/com/sameerasw/airsync/utils/WebSocketMessageHandler.kt b/app/src/main/java/com/sameerasw/airsync/utils/WebSocketMessageHandler.kt
index 12dca51..31bc146 100644
--- a/app/src/main/java/com/sameerasw/airsync/utils/WebSocketMessageHandler.kt
+++ b/app/src/main/java/com/sameerasw/airsync/utils/WebSocketMessageHandler.kt
@@ -328,7 +328,7 @@ object WebSocketMessageHandler {
val success = NotificationDismissalUtil.dismissNotification(notificationId)
val message =
- if (success) "Notification dismissed" else "Failed to dismiss notification or notification not found"
+ if (success) "Notification dismissed" else "Failed to dismiss notification or not found"
sendNotificationDismissalResponse(notificationId, success, message)
} catch (e: Exception) {
@@ -513,7 +513,7 @@ object WebSocketMessageHandler {
val macName = data.optString("name", "")
val isPlus = data.optBoolean("isPlusSubscription", false)
- val macVersion = data.optString("version", "2.0.0")
+ val macVersion = data.optString("version", "3.0.0")
Log.d(
TAG,
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d752d8c..5c50755 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -14,7 +14,7 @@
Disconnect
Device discovery
Allow other devices to find this phone in the background
- Psst... You\'ve been syncing with your mac for a while now, Do you like the app? Rate and give your feedback. ♥
+ Psst... You\'ve been syncing with your Mac for a while now, Do you like the app? Rate and give your feedback. ♥
Rate Now
Maybe Later
No device connected
@@ -60,10 +60,10 @@
by sameerasw.com
Let\'s Begin
Permissions
- This app allows you to sync notifications, clipboard, and media controls with your Mac. To provide these features, AirSync requires certain permissions.\n\nYou have full control over which features are enabled and which permissions are granted. We do not collect or store any of your personal data.\n\nAirSync is open source and this app is completly free to use. Always ensure you download it from Play Store or GitHub.
+ This app allows you to sync notifications, clipboard, and media controls with your Mac. To provide these features, AirSync requires certain permissions.\n\nYou have full control over which features are enabled and which permissions are granted. We do not collect or store any of your personal data.\n\nAirSync is open source and this app is completely free to use. Always ensure you download it from Play Store or GitHub.
If you need any help, feel free to check the guides or reach out to the developer.
I Understand
- From the scan button in app or by long pressing the connection quick settings tile, scan the QR code displayed on the app on MacOS.
+ From the scan button in app or by long pressing the connection quick settings tile, scan the QR code displayed on the app on macOS.
You can always find help and guides in the app settings.
Let Me In Already
Preferences