diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/utils/ServiceUtil.kt b/app/src/main/kotlin/jackall/overlaymulticounter/utils/ServiceUtil.kt new file mode 100644 index 0000000..5a81385 --- /dev/null +++ b/app/src/main/kotlin/jackall/overlaymulticounter/utils/ServiceUtil.kt @@ -0,0 +1,22 @@ +package jackall.overlaymulticounter.utils + +import android.app.ActivityManager +import android.content.Context +import jackall.overlaymulticounter.service.MainService + +/** + * Created by matsumoto_k on 2017/11/10. + */ +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/overlaymulticounter/viewmodel/MainViewModel.kt b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt index 9d51995..655f275 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt @@ -23,6 +23,7 @@ import jackall.overlaymulticounter.db.CounterRealmHelper import jackall.overlaymulticounter.service.MainService import jackall.overlaymulticounter.utils.RuntimePermissionUtil +import jackall.overlaymulticounter.utils.ServiceUtil import jackall.overlaymulticounter.vo.Counter import java.util.* @@ -56,8 +57,13 @@ fun onClickStartService(view: View) { // TODO: RuntimePermissionの処理 if (RuntimePermissionUtil.checkOverlayPermission(view.context)) { - val intent = Intent(view.context, MainService::class.java) - view.context.startService(intent) + if (ServiceUtil.isMainServiceRunning(view.context)) { + val intent = Intent(view.context, MainService::class.java) + view.context.stopService(intent) + } else { + val intent = Intent(view.context, MainService::class.java) + view.context.startService(intent) + } } else { AlertDialog.Builder(view.context) .setMessage("常駐機能を使用するには権限の許可が必要です。")