Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
f98f878
Merge pull request #31 from sameerasw/develop
sameerasw Sep 18, 2025
273e75e
Change Google Play badge link in README
sameerasw Sep 18, 2025
a72d213
Merge pull request #35 from sameerasw/develop
sameerasw Sep 21, 2025
d210697
#115 Addressing open source licensing
sameerasw Sep 28, 2025
1ae2254
Delete COMMERCIAL-EULA.txt (unrelated to the Android app)
sameerasw Sep 28, 2025
4a2dddd
Merge pull request #39 from sameerasw/develop
sameerasw Sep 30, 2025
295e1c6
Merge pull request #40 from sameerasw/develop
sameerasw Sep 30, 2025
5d3b412
Merge pull request #41 from sameerasw/develop
sameerasw Oct 13, 2025
a523960
Merge pull request #48 from sameerasw/develop
sameerasw Nov 1, 2025
4753d45
Merge pull request #51 from sameerasw/develop
sameerasw Nov 3, 2025
302b81c
Merge pull request #59 from sameerasw/develop
sameerasw Dec 20, 2025
ff42e72
Merge pull request #60 from sameerasw/develop
sameerasw Dec 20, 2025
fea154a
Merge pull request #61 from sameerasw/develop
sameerasw Dec 20, 2025
ede446d
Merge pull request #62 from sameerasw/develop
sameerasw Dec 21, 2025
9f60e90
Merge pull request #64 from sameerasw/develop
sameerasw Dec 24, 2025
11d26c3
Create notify.yml
sameerasw Jan 3, 2026
c732861
Merge pull request #67 from sameerasw/develop
sameerasw Jan 16, 2026
203854e
Merge pull request #69 from sameerasw/develop
sameerasw Jan 16, 2026
c4760b3
Merge pull request #71 from sameerasw/develop
sameerasw Jan 24, 2026
d573a01
Merge pull request #72 from sameerasw/develop
sameerasw Jan 30, 2026
deffd7e
gradle: Bump build tool version
Mudit200408 Feb 2, 2026
5712bcc
feat: Add Clipboard Quick Settings Tile
Mudit200408 Feb 2, 2026
addedbf
feat: Improve UI/UX of ClipboardSync QSTile
Mudit200408 Feb 3, 2026
7f88203
Merge pull request #75 from sameerasw/develop
sameerasw Feb 7, 2026
7edd851
feat: Smart auto-connect with "Active Burst, Passive Listen" [1/2]
Mudit200408 Feb 7, 2026
4d725db
feat: Workaround `RECEIVE_BOOT_COMPLETED` permission and fix the noti…
Mudit200408 Feb 15, 2026
b116e11
Merge https://github.com/sameerasw/airsync-android
Mudit200408 Feb 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions .github/workflows/notify.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Telegram Notify

on:
release:
types: [published]
issues:
types: [opened, closed]
pull_request:
types: [opened, closed]
workflow_dispatch:

jobs:
notify:
runs-on: ubuntu-latest
steps:
- name: Gather and Clean Data
id: info
run: |
CHAT_ID="${{ secrets.TELEGRAM_CHAT_ID }}"
TOPIC_ID="${{ secrets.TELEGRAM_TOPIC_ID }}"
echo "final_chat_id=${CHAT_ID:- -1001653455300}" >> $GITHUB_OUTPUT
echo "final_topic_id=${TOPIC_ID:-71370}" >> $GITHUB_OUTPUT

REPO="${{ github.repository }}"
EVENT="${{ github.event_name }}"

if [[ "$EVENT" == "release" || "$EVENT" == "workflow_dispatch" ]]; then
if [[ "$EVENT" == "workflow_dispatch" ]]; then
DATA=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest)
RAW_BODY=$(echo "$DATA" | jq -r .body)
TAG=$(echo "$DATA" | jq -r .tag_name)
URL=$(echo "$DATA" | jq -r .html_url)
else
RAW_BODY="${{ github.event.release.body }}"
TAG="${{ github.event.release.tag_name }}"
URL="${{ github.event.release.html_url }}"
fi

CLEAN_BODY=$(echo "$RAW_BODY" | \
sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g' | \
sed 's/^\* / - /g' | \
sed 's/!\[.*\](.*)//g' | \
sed 's/^#* //g' | \
head -c 3000)

{
echo "full_message<<EOF"
echo "🚀 <b>New Release: $REPO $TAG</b>"
echo "<a href='$URL'>View Release Details</a>"
echo ""
echo "<b>Release notes:</b>"
echo "$CLEAN_BODY"
echo "EOF"
} >> "$GITHUB_OUTPUT"

elif [[ "$EVENT" == "issues" ]]; then
ACTION="${{ github.event.action }}"
STATUS=$([[ "$ACTION" == "opened" ]] && echo "🟢 NEW ISSUE" || echo "🔴 CLOSED ISSUE")
{
echo "full_message<<EOF"
echo "<b>$STATUS: $REPO</b>"
echo "<a href='${{ github.event.issue.html_url }}'>Issue: ${{ github.event.issue.title }}</a>"
echo "EOF"
} >> "$GITHUB_OUTPUT"

elif [[ "$EVENT" == "pull_request" ]]; then
ACTION="${{ github.event.action }}"
[[ "$ACTION" == "closed" && "${{ github.event.pull_request.merged }}" == "true" ]] && STATUS="💜 MERGED PR" || STATUS="🔵 PR $ACTION"
{
echo "full_message<<EOF"
echo "<b>$STATUS: $REPO</b>"
echo "<a href='${{ github.event.pull_request.html_url }}'>PR: ${{ github.event.pull_request.title }}</a>"
echo "EOF"
} >> "$GITHUB_OUTPUT"
fi

- name: Send to Telegram
env:
BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
CHAT_ID: ${{ steps.info.outputs.final_chat_id }}
TOPIC_ID: ${{ steps.info.outputs.final_topic_id }}
TEXT: ${{ steps.info.outputs.full_message }}
run: |
jq -n \
--arg chat_id "$CHAT_ID" \
--arg thread_id "$TOPIC_ID" \
--arg text "$TEXT" \
'{
chat_id: $chat_id,
message_thread_id: $thread_id,
text: $text,
parse_mode: "HTML",
disable_web_page_preview: false
}' > payload.json

curl -X POST -H "Content-Type: application/json" -d @payload.json https://api.telegram.org/bot$BOT_TOKEN/sendMessage
31 changes: 0 additions & 31 deletions COMMERCIAL-EULA.txt

This file was deleted.

18 changes: 4 additions & 14 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,14 @@ In addition to the terms of the Mozilla Public License 2.0, the following condit
You are free to use, modify, and build this software for any purpose,
including personal, educational, or commercial use.

2. No Publishing of Modified Builds
You are not permitted to publish, distribute, or share modified builds
of this software in any form, whether for free or commercially.
2. Published builds should be signed by the publisher taking responsibility
Any changes you may apply on the source code must not be intentionally harmful in anyway and the publisher should take responsibility of the cause.

This includes, but is not limited to:
- Uploading modified builds to public platforms or stores
- Distributing modified builds to individuals or organizations
- Offering modified versions as part of any product or service

3. Private Use Only
You may modify and build this software only for your own private or internal use.
Any form of public redistribution of modified builds is strictly prohibited.

4. License Inclusion Requirement
3. License Inclusion Requirement
This license and the entire Additional Terms section must be retained in all
copies and derivative works created for private or internal use.

5. No Trademark Rights
4. No Trademark Rights
This license does not grant rights to use the project name, logo, or branding.

--------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Android app for AirSync 2.0 built with Kotlin Jetpack Compose

Min : Android 11

[<img src="https://steverichey.github.io/google-play-badge-svg/img/en_get.svg" width="30%" />](https://groups.google.com/forum/#!forum/airsync-testing/join)
[<img src="https://steverichey.github.io/google-play-badge-svg/img/en_get.svg" width="30%" />](https://play.google.com/store/apps/details?id=com.sameerasw.airsync)


## How to connect?
Expand Down
24 changes: 24 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_WALLPAPER_INTERNAL" />


<!-- Permission for downloading updates -->
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />

Expand Down Expand Up @@ -106,6 +107,14 @@
</intent-filter>
</activity>

<activity
android:name=".presentation.ui.activities.ClipboardActionActivity"
android:theme="@style/Theme.AirSync.Transparent"
android:exported="false"
android:excludeFromRecents="true"
android:noHistory="true"
android:taskAffinity="" />

<service
android:name=".service.MediaNotificationListener"
android:exported="false"
Expand Down Expand Up @@ -155,6 +164,18 @@
</intent-filter>
</service>

<!-- Clipboard Quick Settings Tile Service -->
<service
android:name=".service.ClipboardTileService"
android:exported="true"
android:icon="@drawable/ic_clipboard_24"
android:label="Send Clipboard"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
</intent-filter>
</service>

<!-- Wake-up Service for receiving reconnection requests from Mac -->
<service
android:name=".service.WakeupService"
Expand Down Expand Up @@ -229,8 +250,11 @@
<action android:name="com.sameerasw.airsync.action.REQUEST_MAC_BATTERY" />
</intent-filter>
</receiver>


</application>


<queries>
<!-- To see launchable apps -->
<intent>
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/java/com/sameerasw/airsync/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,16 @@ class MainActivity : ComponentActivity() {
}
}

override fun onStart() {
super.onStart()
com.sameerasw.airsync.service.AirSyncService.notifyAppForeground(this)
}

override fun onStop() {
super.onStop()
com.sameerasw.airsync.service.AirSyncService.notifyAppBackground(this)
}

@OptIn(ExperimentalMaterial3Api::class)
override fun onCreate(savedInstanceState: Bundle?) {
// Install and configure the splash screen before any UI rendering
Expand Down
Loading