diff --git a/app/build.gradle b/app/build.gradle index e59d80e..a4e42ae 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,6 +50,9 @@ // DataBinding kapt "com.android.databinding:compiler:3.0.0" + // AndroidDesignSupportLibrary + implementation "com.android.support:design:26.1.0" + // Android Architecture Components for Lifecycles, LiveData, and ViewModel implementation "android.arch.lifecycle:runtime:1.0.3" implementation "android.arch.lifecycle:extensions:1.0.0-rc1" diff --git a/app/src/main/kotlin/jackall/moncalc/utils/ServiceUtil.kt b/app/src/main/kotlin/jackall/moncalc/utils/ServiceUtil.kt new file mode 100644 index 0000000..1147f1e --- /dev/null +++ b/app/src/main/kotlin/jackall/moncalc/utils/ServiceUtil.kt @@ -0,0 +1,22 @@ +package jackall.moncalc.utils + +import android.app.ActivityManager +import android.content.Context +import jackall.moncalc.service.MainService + +/** + * Created by matsumoto_k on 2017/11/03. + */ +class ServiceUtil { + companion object { + fun isMainServiceRunning(context: Context): Boolean { + val manager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + for (serviceInfo in manager.getRunningServices(Integer.MAX_VALUE)) { + if (MainService::class.java.getName() == serviceInfo.service.className) { + return true + } + } + return false + } + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/moncalc/viewmodel/MainViewModel.kt b/app/src/main/kotlin/jackall/moncalc/viewmodel/MainViewModel.kt index f864cef..2c80d71 100644 --- a/app/src/main/kotlin/jackall/moncalc/viewmodel/MainViewModel.kt +++ b/app/src/main/kotlin/jackall/moncalc/viewmodel/MainViewModel.kt @@ -2,17 +2,47 @@ import android.arch.lifecycle.ViewModel import android.arch.lifecycle.ViewModelProvider +import android.content.Context +import android.content.Intent +import android.databinding.ObservableField +import android.view.View +import jackall.moncalc.service.MainService +import jackall.moncalc.utils.ServiceUtil.Companion.isMainServiceRunning /** * MainActivityのViewModel. * * Created by matsumoto_k on 2017/11/01. */ -class MainViewModel : LifecycleViewModel() { +class MainViewModel(val context: Context) : LifecycleViewModel() { + val serviceButtonText = ObservableField("") + val serviceIntent by lazy { + val intent = Intent(context, MainService::class.java) + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK + intent + } - class Factory() : ViewModelProvider.NewInstanceFactory() { + init { + if (isMainServiceRunning(context)) { + serviceButtonText.set("常駐終了") + } else { + serviceButtonText.set("常駐開始") + } + } + + class Factory(val context: Context) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { - return MainViewModel() as T + return MainViewModel(context) as T + } + } + + fun onClickServiceButton(view: View) { + if (!isMainServiceRunning(context)) { + context.startService(serviceIntent) + serviceButtonText.set("常駐終了") + } else { + context.stopService(serviceIntent) + serviceButtonText.set("常駐開始") } } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5ae9ae2..8ff472d 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,6 @@ - + @@ -12,5 +13,31 @@ android:layout_width="match_parent" android:layout_height="match_parent"> +