@@ -2,7 +2,7 @@ import android.Keys._
|
||||
|
||||
android.Plugin.androidBuild
|
||||
|
||||
platformTarget in Android := "android-23"
|
||||
platformTarget in Android := "android-24"
|
||||
|
||||
name := "shadowsocks"
|
||||
|
||||
@@ -35,9 +35,9 @@ libraryDependencies ++= Seq(
|
||||
"com.google.android.gms" % "play-services-base" % "9.0.2",
|
||||
"com.google.android.gms" % "play-services-ads" % "9.0.2",
|
||||
"com.google.android.gms" % "play-services-analytics" % "9.0.2",
|
||||
"com.android.support" % "design" % "23.4.0",
|
||||
"com.android.support" % "gridlayout-v7" % "23.4.0",
|
||||
"com.android.support" % "cardview-v7" % "23.4.0",
|
||||
"com.android.support" % "design" % "24.0.0",
|
||||
"com.android.support" % "gridlayout-v7" % "24.0.0",
|
||||
"com.android.support" % "cardview-v7" % "24.0.0",
|
||||
"com.github.jorgecastilloprz" % "fabprogresscircle" % "1.01",
|
||||
"com.j256.ormlite" % "ormlite-core" % "4.48",
|
||||
"com.j256.ormlite" % "ormlite-android" % "4.48",
|
||||
|
||||
@@ -48,6 +48,9 @@
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.service.quicksettings.action.QS_TILE" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
@@ -125,6 +128,14 @@
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<service android:name=".ShadowsocksTileService" android:label="@string/app_name"
|
||||
android:icon="@drawable/ic_start_connected"
|
||||
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
|
||||
<intent-filter>
|
||||
<action android:name="android.service.quicksettings.action.QS_TILE" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<receiver android:name=".BootReceiver" android:enabled="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED"/>
|
||||
|
||||
@@ -203,7 +203,7 @@ class AppManager extends AppCompatActivity with OnMenuItemClickListener {
|
||||
this.setContentView(R.layout.layout_apps)
|
||||
toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar]
|
||||
toolbar.setTitle(R.string.proxied_apps)
|
||||
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha)
|
||||
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_material)
|
||||
toolbar.setNavigationOnClickListener((v: View) => {
|
||||
val intent = getParentActivityIntent
|
||||
if (intent == null) finish else navigateUpTo(intent)
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.github.shadowsocks
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.drawable.Icon
|
||||
import android.service.quicksettings.{Tile, TileService}
|
||||
import com.github.shadowsocks.aidl.IShadowsocksServiceCallback
|
||||
import com.github.shadowsocks.utils.State
|
||||
import com.github.shadowsocks.ShadowsocksApplication.app
|
||||
|
||||
/**
|
||||
* @author Mygod
|
||||
*/
|
||||
final class ShadowsocksTileService extends TileService with ServiceBoundContext {
|
||||
private lazy val iconIdle = Icon.createWithResource(this, R.drawable.ic_start_idle).setTint(0x80ffffff)
|
||||
private lazy val iconBusy = Icon.createWithResource(this, R.drawable.ic_start_busy)
|
||||
private lazy val iconConnected = Icon.createWithResource(this, R.drawable.ic_start_connected)
|
||||
private lazy val callback = new IShadowsocksServiceCallback.Stub {
|
||||
def trafficUpdated(txRate: Long, rxRate: Long, txTotal: Long, rxTotal: Long) = ()
|
||||
def stateChanged(state: Int, msg: String) {
|
||||
val tile = getQsTile
|
||||
state match {
|
||||
case State.STOPPED =>
|
||||
tile.setIcon(iconIdle)
|
||||
tile.setLabel(getString(R.string.app_name))
|
||||
tile.setState(Tile.STATE_INACTIVE)
|
||||
case State.CONNECTED =>
|
||||
tile.setIcon(iconConnected)
|
||||
tile.setLabel(app.currentProfile match {
|
||||
case Some(profile) => profile.name
|
||||
case None => getString(R.string.app_name)
|
||||
})
|
||||
tile.setState(Tile.STATE_ACTIVE)
|
||||
case _ =>
|
||||
tile.setIcon(iconBusy)
|
||||
tile.setLabel(getString(R.string.app_name))
|
||||
tile.setState(Tile.STATE_UNAVAILABLE)
|
||||
}
|
||||
tile.updateTile
|
||||
}
|
||||
}
|
||||
|
||||
override def onServiceConnected = callback.stateChanged(bgService.getState, null)
|
||||
|
||||
override def onStartListening {
|
||||
super.onStartListening
|
||||
attachService(callback)
|
||||
}
|
||||
|
||||
override def onStopListening {
|
||||
super.onStopListening
|
||||
detachService // just in case the user switches to NAT mode
|
||||
}
|
||||
|
||||
override def onClick = if (isLocked) unlockAndRun(configure) else configure()
|
||||
|
||||
private def configure() = startActivityAndCollapse(new Intent(this, classOf[Shadowsocks]))
|
||||
}
|
||||
Reference in New Issue
Block a user