cloudroam
2025-02-14 2fce91b8c0faf1290d8a35ee022dab3cdbc28a54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.example.firstapp.utils
 
import android.app.ActivityManager
import android.content.Context
import io.reactivex.Completable
import io.reactivex.Observable
import io.reactivex.ObservableEmitter
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.concurrent.TimeUnit
 
@Suppress("DEPRECATION", "MemberVisibilityCanBePrivate")
class FrpcUtils private constructor() {
 
    companion object {
 
        fun waitService(serviceName: String, context: Context): Completable {
            return Completable.fromObservable(
                Observable.interval(3, 1, TimeUnit.SECONDS)
                    .takeUntil { isServiceRunning(serviceName, context) }
            )
        }
 
        fun isServiceRunning(serviceName: String, context: Context): Boolean {
            val am = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
            val runningServices = am.getRunningServices(Int.MAX_VALUE) //获取运行的服务,参数表示最多返回的数量
            for (runningServiceInfo in runningServices) {
                val className = runningServiceInfo.service.className
                if (className == serviceName) {
                    return true
                }
            }
            return false
        }
 
        fun getStringFromRaw(context: Context, rawName: Int): Observable<String?> {
            return Observable.create { emitter: ObservableEmitter<String?> ->
                val reader = BufferedReader(InputStreamReader(context.resources.openRawResource(rawName)))
                var line: String?
                val result = StringBuilder()
                while (reader.readLine().also { line = it } != null) {
                    result.append(line).append("\n")
                }
                reader.close()
                emitter.onNext(result.toString())
                emitter.onComplete()
            }
        }
 
    }
}