lmw
2023-04-17 51f657872f152a115fb055ad8860093a5cdbc12d
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package cn.sinata.xldutils
 
import android.Manifest
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri
import android.telephony.TelephonyManager
import android.util.Log
import android.view.View
import androidx.fragment.app.Fragment
import cn.sinata.xldutils.utils.toImageUri
import com.facebook.common.executors.CallerThreadExecutor
import com.facebook.common.references.CloseableReference
import com.facebook.datasource.DataSource
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber
import com.facebook.imagepipeline.image.CloseableImage
import com.facebook.imagepipeline.request.ImageRequestBuilder
import com.tbruyelle.rxpermissions2.RxPermissions
import io.reactivex.Flowable
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import org.jetbrains.anko.toast
import java.io.File
import java.util.*
 
/**
 * 打印公司日志
 */
fun Any?.sysErr(msg:Any?){
    if (xldUtils.DEBUG)
        Log.e("sinata","--------"+msg)
}
 
fun <T> Flowable<T>.ioScheduler(): Flowable<T> = this.subscribeOn(Schedulers.io())
fun <T> Flowable<T>.defaultScheduler(): Flowable<T> = this.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
fun <T> Observable<T>.defaultScheduler(): Observable<T> = this.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
 
fun Activity.callPhone(phone:String?){
    val p = phone ?: ""
    val intent = Intent(Intent.ACTION_DIAL)
    intent.data = Uri.parse("tel:" + p)
    this.startActivity(intent)
}
 
fun Fragment.callPhone(phone:String?){
    activity?.callPhone(phone)
}
 
fun View?.visible(){
    this?.let {
        if (it.visibility != View.VISIBLE) {
            it.visibility = View.VISIBLE
        }
    }
}
 
fun View?.hide(){
    this?.let {
        if (it.visibility != View.INVISIBLE) {
            it.visibility = View.INVISIBLE
        }
    }
}
 
fun View?.toggle(){
    this?.let {
        if (it.visibility != View.VISIBLE) {
            it.visibility = View.VISIBLE
        }else{
            it.visibility = View.GONE
        }
    }
}
 
fun View?.gone(){
    this?.let {
        if (it.visibility != View.GONE) {
            it.visibility = View.GONE
        }
    }
}
fun View?.invisible(){
    this?.let {
        if (it.visibility != View.INVISIBLE) {
            it.visibility = View.INVISIBLE
        }
    }
}
 
fun File?.suffix():String {
    if (this == null) {
        return ""
    }
    if (!this.isFile) {
        return ""
    }
    val fileName = this.name
    return if (fileName.contains(".")) {
        fileName.substring(fileName.lastIndexOf(".") + 1)
    } else ""
}
 
inline fun Any.downLoadByFresco(url: String?, crossinline onFinish:(bitmap: Bitmap?)->Unit){
    val imagePipeline = Fresco.getImagePipeline()
    val imageRequest = ImageRequestBuilder.newBuilderWithSource(url.toImageUri()).build()
    val dataSource1 = imagePipeline.fetchDecodedImage(imageRequest, null)
    dataSource1.subscribe(object : BaseBitmapDataSubscriber() {
        override fun onNewResultImpl(bitmap: Bitmap?) {
            onFinish(bitmap)
        }
        override fun onFailureImpl(dataSource: DataSource<CloseableReference<CloseableImage>>) {
            onFinish(null)
        }
    }, CallerThreadExecutor.getInstance())
}
 
fun Context.getUUID(): String {
    try {
        val tm = this.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
        val tmDevice: String
        val tmSerial: String
        val androidId: String = "" + android.provider.Settings.Secure.getString(this.contentResolver, android.provider.Settings.Secure.ANDROID_ID)
        tmDevice = "" + tm.deviceId
        tmSerial = "" + tm.simSerialNumber
        val deviceUuid = UUID(androidId.hashCode().toLong(), tmDevice.hashCode().toLong() shl 32 or tmSerial.hashCode().toLong())
        return deviceUuid.toString()
    } catch (e: SecurityException) {
        e.printStackTrace()
    }
    return ""
}