Add android quick tile

This commit is contained in:
problematicconsumer
2023-09-05 19:03:11 +03:30
parent a90aea48af
commit ee627779bc
2 changed files with 66 additions and 0 deletions

View File

@@ -52,7 +52,25 @@
<data android:scheme="hiddify"/> <data android:scheme="hiddify"/>
<data android:host="install-sub"/> <data android:host="install-sub"/>
</intent-filter> </intent-filter>
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" />
</intent-filter>
</activity> </activity>
<service
android:name=".bg.TileService"
android:directBootAware="true"
android:exported="true"
android:icon="@drawable/ic_stat_logo"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
tools:targetApi="n">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
</intent-filter>
<meta-data
android:name="android.service.quicksettings.TOGGLEABLE_TILE"
android:value="true" />
</service>
<service <service
android:name=".bg.VPNService" android:name=".bg.VPNService"
android:exported="false" android:exported="false"

View File

@@ -0,0 +1,48 @@
package com.hiddify.hiddify.bg
import android.service.quicksettings.Tile
import android.service.quicksettings.TileService
import androidx.annotation.RequiresApi
import com.hiddify.hiddify.constant.Status
@RequiresApi(24)
class TileService : TileService(), ServiceConnection.Callback {
private val connection = ServiceConnection(this, this)
override fun onServiceStatusChanged(status: Status) {
qsTile?.apply {
state = when (status) {
Status.Started -> Tile.STATE_ACTIVE
Status.Stopped -> Tile.STATE_INACTIVE
else -> Tile.STATE_UNAVAILABLE
}
updateTile()
}
}
override fun onStartListening() {
super.onStartListening()
connection.connect()
}
override fun onStopListening() {
connection.disconnect()
super.onStopListening()
}
override fun onClick() {
when (connection.status) {
Status.Stopped -> {
BoxService.start()
}
Status.Started -> {
BoxService.stop()
}
else -> {}
}
}
}