fei.wang
7 天以前 645834e1c3efb3a8c50dcbda98d87caba04bd421
unpackage/dist/build/app-plus/uni_modules/android-utils/utssdk/app-android/src/index.kt
@@ -1,43 +1,43 @@
@file:Suppress("UNCHECKED_CAST", "USELESS_CAST", "INAPPLICABLE_JVM_NAME", "UNUSED_ANONYMOUS_PARAMETER")
package uts.sdk.modules.androidUtils;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.speech.tts.TextToSpeech;
import android.speech.tts.UtteranceProgressListener;
import android.speech.tts.Voice;
import android.util.Base64;
import android.view.Gravity;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import io.dcloud.uniapp.*;
import io.dcloud.uniapp.extapi.*;
import io.dcloud.uts.*;
import io.dcloud.uts.Map;
import io.dcloud.uts.Set;
import io.dcloud.uts.UTSAndroid;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.System;
import java.util.Objects;
import java.util.UUID;
import kotlin.ByteArray;
import kotlin.Int;
import kotlinx.coroutines.CoroutineScope;
import kotlinx.coroutines.Deferred;
import kotlinx.coroutines.Dispatchers;
import kotlinx.coroutines.async;
@file:Suppress("UNCHECKED_CAST", "USELESS_CAST", "INAPPLICABLE_JVM_NAME", "UNUSED_ANONYMOUS_PARAMETER", "NAME_SHADOWING", "UNNECESSARY_NOT_NULL_ASSERTION")
package uts.sdk.modules.androidUtils
import android.app.AlertDialog
import android.content.ContentValues
import android.content.DialogInterface
import android.content.res.Resources
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Color
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.net.Uri
import android.os.Bundle
import android.provider.MediaStore
import android.speech.tts.TextToSpeech
import android.speech.tts.UtteranceProgressListener
import android.speech.tts.Voice
import android.util.Base64
import android.view.Gravity
import android.view.WindowManager
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import io.dcloud.uniapp.*
import io.dcloud.uniapp.extapi.*
import io.dcloud.uts.*
import io.dcloud.uts.Map
import io.dcloud.uts.Set
import io.dcloud.uts.UTSAndroid
import java.io.IOException
import java.io.OutputStream
import java.lang.System
import java.util.Objects
import java.util.UUID
import kotlin.ByteArray
import kotlin.Int
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
open class MyApiOptions (
    @JsonNotNull
    open var paramA: Boolean = false,
@@ -53,13 +53,13 @@
    @JsonNotNull
    open var fieldC: String,
) : UTSObject()
typealias MyApiErrorCode = Number;
typealias MyApiErrorCode = Number
interface MyApiFail : IUniError {
    override var errCode: MyApiErrorCode
}
typealias MyApi = (options: MyApiOptions) -> Unit;
typealias MyApiSync = (paramA: Boolean) -> MyApiResult;
val UniErrorSubject = "uts-api";
typealias MyApi = (options: MyApiOptions) -> Unit
typealias MyApiSync = (paramA: Boolean) -> MyApiResult
val UniErrorSubject = "uts-api"
val MyAPIErrors: Map<MyApiErrorCode, String> = Map(utsArrayOf(
    utsArrayOf(
        9010001,
@@ -69,219 +69,208 @@
        9010002,
        "custom error mseeage2"
    )
));
))
open class MyApiFailImpl : UniError, MyApiFail {
    constructor(errCode: MyApiErrorCode) : super() {
        this.errSubject = UniErrorSubject;
        this.errCode = errCode;
        this.errMsg = MyAPIErrors.get(errCode) ?: "";
        this.errSubject = UniErrorSubject
        this.errCode = errCode
        this.errMsg = MyAPIErrors.get(errCode) ?: ""
    }
}
val myApi: MyApi = fun(options: MyApiOptions) {
    if (options.paramA == true) {
        val res = MyApiResult(fieldA = 85, fieldB = true, fieldC = "some message");
        options.success?.invoke(res);
        options.complete?.invoke(res);
        val res = MyApiResult(fieldA = 85, fieldB = true, fieldC = "some message")
        options.success?.invoke(res)
        options.complete?.invoke(res)
    } else {
        val err = MyApiFailImpl(9010001);
        options.fail?.invoke(err);
        options.complete?.invoke(err);
        val err = MyApiFailImpl(9010001)
        options.fail?.invoke(err)
        options.complete?.invoke(err)
    }
}
;
val myApiSync: MyApiSync = fun(paramA: Boolean): MyApiResult {
    val res = MyApiResult(fieldA = 85, fieldB = paramA, fieldC = "some message");
    return res;
    val res = MyApiResult(fieldA = 85, fieldB = paramA, fieldC = "some message")
    return res
}
;
var mToast: Toast? = null;
var mLastText = "";
var mLastTime: Number = 0;
var mLastDuration: Number = 0;
var mToast: Toast? = null
var mLastText = ""
var mLastTime: Number = 0
var mLastDuration: Number = 0
val showToast = fun(text: String) {
    if (mToast == null) {
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_LONG);
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_LONG)
    } else {
        if (Objects.equals(text, mLastText) && System.currentTimeMillis() - mLastTime < mLastDuration) {
            return;
            return
        }
        mToast!!!!.cancel();
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_SHORT);
        mLastDuration = Toast.LENGTH_LONG;
        mLastTime = System.currentTimeMillis();
        mLastText = text;
        mToast!!!!.cancel()
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_SHORT)
        mLastDuration = Toast.LENGTH_LONG
        mLastTime = System.currentTimeMillis()
        mLastText = text
    }
    mToast!!!!.setGravity(Gravity.CENTER, 0, 0);
    mToast!!!!.show();
    mToast!!!!.setGravity(Gravity.CENTER, 0, 0)
    mToast!!!!.show()
}
;
val showColorToast = fun(text: String, color: String) {
    var tv = TextView(UTSAndroid.getAppContext()!!!!);
    var b: GradientDrawable = getSoldRadiusBg(Color.parseColor(color), 60);
    tv.setBackgroundDrawable(b as Drawable);
    var r1 = convertHtmlPxToAndroidPx(20).toInt();
    var r2 = convertHtmlPxToAndroidPx(10).toInt();
    tv.setPadding(r1, r2, r1, r2);
    tv.setTextColor(Color.WHITE);
    tv.setTextSize(16.toFloat());
    tv.setText(text);
    var tv = TextView(UTSAndroid.getAppContext()!!!!)
    var b: GradientDrawable = getSoldRadiusBg(Color.parseColor(color), 60)
    tv.setBackgroundDrawable(b as Drawable)
    var r1 = convertHtmlPxToAndroidPx(20).toInt()
    var r2 = convertHtmlPxToAndroidPx(10).toInt()
    tv.setPadding(r1, r2, r1, r2)
    tv.setTextColor(Color.WHITE)
    tv.setTextSize(16.toFloat())
    tv.setText(text)
    if (mToast == null) {
        mToast = Toast(UTSAndroid.getAppContext()!!!!);
        mToast!!!!.setView(tv);
        mToast = Toast(UTSAndroid.getAppContext()!!!!)
        mToast!!!!.setView(tv)
    } else {
        if (Objects.equals(text, mLastText) && System.currentTimeMillis() - mLastTime < mLastDuration) {
            return;
            return
        }
        mToast!!!!.cancel();
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_SHORT);
        mToast!!!!.setView(tv);
        mLastDuration = Toast.LENGTH_LONG;
        mLastTime = System.currentTimeMillis();
        mLastText = text;
        mToast!!!!.cancel()
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_SHORT)
        mToast!!!!.setView(tv)
        mLastDuration = Toast.LENGTH_LONG
        mLastTime = System.currentTimeMillis()
        mLastText = text
    }
    mToast!!!!.setGravity(Gravity.CENTER, 0, 0);
    mToast!!!!.show();
    mToast!!!!.setGravity(Gravity.CENTER, 0, 0)
    mToast!!!!.show()
}
;
val showToastButton = fun(text: String) {
    if (mToast == null) {
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_LONG);
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_LONG)
    } else {
        if (Objects.equals(text, mLastText) && System.currentTimeMillis() - mLastTime < mLastDuration) {
            return;
            return
        }
        mToast!!!!.cancel();
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_SHORT);
        mLastDuration = Toast.LENGTH_LONG;
        mLastTime = System.currentTimeMillis();
        mLastText = text;
        mToast!!!!.cancel()
        mToast = Toast.makeText(UTSAndroid.getAppContext()!!!!, text, Toast.LENGTH_SHORT)
        mLastDuration = Toast.LENGTH_LONG
        mLastTime = System.currentTimeMillis()
        mLastText = text
    }
    mToast!!!!.show();
    mToast!!!!.show()
}
;
val androidDialog = fun(title: String, msg: String, okText: String, callback: () -> Unit, cancelText: String, callback1: () -> Unit) {
    open class MyOnClickListener : DialogInterface.OnClickListener {
        open var type: Number;
        open var type: Number
        constructor(type: Number){
            this.type = type;
            this.type = type
        }
        public override fun onClick(dialogInterface: DialogInterface, i: Int) {
            if (this.type == 0) {
                callback();
                dialogInterface.dismiss();
                callback()
                dialogInterface.dismiss()
            } else if (this.type == 1) {
                callback1();
                dialogInterface.dismiss();
                callback1()
                dialogInterface.dismiss()
            }
        }
    }
    var builder: AlertDialog.Builder = AlertDialog.Builder(UTSAndroid.getUniActivity()!!!!);
    var builder: AlertDialog.Builder = AlertDialog.Builder(UTSAndroid.getUniActivity()!!!!)
    if (title != "") {
        builder.setTitle(title);
        builder.setTitle(title)
    }
    builder.setMessage(msg);
    builder.setPositiveButton(okText, MyOnClickListener(0));
    builder.setMessage(msg)
    builder.setPositiveButton(okText, MyOnClickListener(0))
    if (cancelText != "") {
        builder.setNegativeButton(cancelText, MyOnClickListener(1));
        builder.setNegativeButton(cancelText, MyOnClickListener(1))
    }
    builder.create().show();
    builder.create().show()
}
;
val isHavePermision = fun(pername: String): Boolean {
    return UTSAndroid.checkSystemPermissionGranted(UTSAndroid.getUniActivity()!!, utsArrayOf(
        pername
    ));
    ))
}
;
val requestPermison = fun(pername: String, callback: (sth: Boolean) -> Unit) {
    if (isHavePermision(pername)) {
        callback(true);
        return;
        callback(true)
        return
    }
    UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!!, utsArrayOf(
        pername
    ), fun(_: Boolean, p: UTSArray<String>){
        console.log(p);
        callback(true);
        console.log(p)
        callback(true)
    }
    , fun(_: Boolean, p: UTSArray<String>){
        callback(false);
        console.log(p);
        callback(false)
        console.log(p)
    }
    );
    )
}
;
val requesMoretPermison = fun(pername: UTSArray<String>, callback: (sth: Boolean) -> Unit) {
    var have = true;
    var have = true
    run {
        var per: Number = 0;
        var per: Number = 0
        while(per < pername.length){
            if (!isHavePermision(pername[per])) {
                have = false;
                have = false
            }
            per++;
            per++
        }
    }
    if (have) {
        callback(true);
        return;
        callback(true)
        return
    }
    var len = pername.length;
    var len = pername.length
    UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!!, pername, fun(_: Boolean, p: UTSArray<String>){
        console.log(p);
        console.log(p)
        if (p.length == len) {
            callback(true);
            callback(true)
        }
    }
    , fun(_: Boolean, p: UTSArray<String>){
        console.log(p);
        callback(false);
        console.log(p)
        callback(false)
    }
    );
    )
}
;
val saveBase64ToGallery = fun(name: String, base64: String, callback: (sth: Boolean) -> Unit) {
    if (isHavePermision("android.permission.WRITE_EXTERNAL_STORAGE") && isHavePermision("android.permission.READ_MEDIA_IMAGES")) {
        saveBitmap(name, base64, callback);
        saveBitmap(name, base64, callback)
    } else {
        requesMoretPermison(utsArrayOf(
            "android.permission.WRITE_EXTERNAL_STORAGE",
            "android.permission.READ_MEDIA_IMAGES"
        ), fun(state: Boolean) {
            if (state) {
                saveBitmap(name, base64, callback);
                saveBitmap(name, base64, callback)
            } else {
                callback(state);
                callback(state)
            }
        }
        );
        )
    }
}
;
val saveBitmap = fun(name: String, base64: String, callback: (sth: Boolean) -> Unit) {
    var decode: ByteArray = Base64.decode(base64, Base64.DEFAULT);
    var bitmapImage: Bitmap = BitmapFactory.decodeByteArray(decode, 0.toInt(), decode.size);
    var contentValues: ContentValues = ContentValues();
    contentValues.put("_display_name", name);
    contentValues.put("mime_type", "image/jpeg");
    var uri: Uri? = null;
    uri = UTSAndroid.getAppContext()!!!!.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
    var decode: ByteArray = Base64.decode(base64, Base64.DEFAULT)
    var bitmapImage: Bitmap = BitmapFactory.decodeByteArray(decode, 0.toInt(), decode.size)
    var contentValues: ContentValues = ContentValues()
    contentValues.put("_display_name", name)
    contentValues.put("mime_type", "image/jpeg")
    var uri: Uri? = null
    uri = UTSAndroid.getAppContext()!!!!.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
    try {
        if (uri != null) {
            var outputStream: OutputStream? = null;
            outputStream = UTSAndroid.getAppContext()!!!!.getContentResolver()!!!!.openOutputStream(uri!!!!);
            var outputStream: OutputStream? = null
            outputStream = UTSAndroid.getAppContext()!!!!.getContentResolver()!!!!.openOutputStream(uri!!!!)
            if (outputStream != null) {
                bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, outputStream!!!!);
                bitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, outputStream!!!!)
            }
            callback(true);
            callback(true)
        }
    }
     catch (e: IOException) {
        e.printStackTrace();
        callback(false);
        e.printStackTrace()
        callback(false)
    }
}
;
open class InputBean (
    open var title: String? = null,
    open var holder: String? = null,
@@ -297,265 +286,300 @@
    open var cancelCallbackClick: (() -> Unit),
) : UTSObject()
val showEditDialog = fun(bean: InputBean) {
    var et: EditText = EditText(UTSAndroid.getAppContext()!!!!);
    var et: EditText = EditText(UTSAndroid.getAppContext()!!!!)
    open class MyOnClickListener : DialogInterface.OnClickListener {
        open var type: Number;
        open var type: Number
        constructor(type: Number){
            this.type = type;
            this.type = type
        }
        public override fun onClick(dialogInterface: DialogInterface, i: Int) {
            if (this.type == 0) {
                bean!!.okCallbackClick(et.getText().toString());
                dialogInterface.dismiss();
                bean!!.okCallbackClick(et.getText().toString())
                dialogInterface.dismiss()
            } else if (this.type == 1) {
                bean!!.cancelCallbackClick();
                dialogInterface.dismiss();
                bean!!.cancelCallbackClick()
                dialogInterface.dismiss()
            }
        }
    }
    var builder: AlertDialog.Builder = AlertDialog.Builder(UTSAndroid.getUniActivity()!!!!);
    var builder: AlertDialog.Builder = AlertDialog.Builder(UTSAndroid.getUniActivity()!!!!)
    if (bean.title != null || bean.title != "") {
        builder.setTitle(bean.title);
        builder.setTitle(bean.title)
    }
    builder.setPositiveButton(bean.okText, MyOnClickListener(0));
    builder.setPositiveButton(bean.okText, MyOnClickListener(0))
    if (bean.cancelText != "") {
        builder.setNegativeButton(bean.cancelText, MyOnClickListener(1));
        builder.setNegativeButton(bean.cancelText, MyOnClickListener(1))
    }
    builder.setView(et);
    builder.create();
    builder.show();
    builder.setView(et)
    builder.create()
    builder.show()
}
;
val screenShotEnableState = fun(state: Boolean): Unit {
    open class MyRun : Runnable {
        override fun run() {
            if (state) {
                UTSAndroid.getUniActivity()!!!!.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
                UTSAndroid.getUniActivity()!!!!.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
            } else {
                UTSAndroid.getUniActivity()!!!!.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
                UTSAndroid.getUniActivity()!!!!.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
            }
        }
    }
    UTSAndroid.getUniActivity()!!!!.runOnUiThread(MyRun());
    UTSAndroid.getUniActivity()!!!!.runOnUiThread(MyRun())
}
;
val convertHtmlPxToAndroidPx = fun(htmlPx: Number): Number {
    var resources: Resources = UTSAndroid.getAppContext()!!!!.getResources();
    return Math.round(htmlPx * resources.getDisplayMetrics().density);
    var resources: Resources = UTSAndroid.getAppContext()!!!!.getResources()
    return Math.round(htmlPx * resources.getDisplayMetrics().density)
}
;
val showImgDialog = fun() {
    var builder: AlertDialog.Builder = AlertDialog.Builder(UTSAndroid.getUniActivity()!!!!);
    builder.create().show();
    var builder: AlertDialog.Builder = AlertDialog.Builder(UTSAndroid.getUniActivity()!!!!)
    builder.create().show()
}
;
open class AndroidTTSVoice {
    open var textToSpeech: TextToSpeech;
    open var onVoiceStateListener: OnVoiceStateListener? = null;
    open var textToSpeech: TextToSpeech
    open var onVoiceStateListener: OnVoiceStateListener? = null
    constructor(callback: (init: Boolean) -> Unit){
        open class MyListener : TextToSpeech.OnInitListener {
            override fun onInit(i: Int): Unit {
                console.log("init  " + i.toString());
                console.log("init  " + i.toString())
                if (i == -1) {
                    callback(false);
                    callback(false)
                } else {
                    callback(true);
                    callback(true)
                }
            }
        }
        this.textToSpeech = TextToSpeech(UTSAndroid.getUniActivity()!!!!, MyListener());
        this.textToSpeech.setOnUtteranceProgressListener(MyTTSListener(this));
        this.textToSpeech = TextToSpeech(UTSAndroid.getUniActivity()!!!!, MyListener())
        this.textToSpeech.setOnUtteranceProgressListener(MyTTSListener(this))
    }
    public open fun speak(data: String): Number {
        var state = this.textToSpeech.speak(data, TextToSpeech.QUEUE_FLUSH, Bundle(), UUID.randomUUID().toString());
        return state;
        var state = this.textToSpeech.speak(data, TextToSpeech.QUEUE_FLUSH, Bundle(), UUID.randomUUID().toString())
        return state
    }
    public open fun getVoiceNames(): UTSArray<String> {
        var voices = this.textToSpeech.getVoices();
        var b: UTSArray<String> = utsArrayOf();
        var voices = this.textToSpeech.getVoices()
        var b: UTSArray<String> = utsArrayOf()
        for(s in resolveUTSKeyIterator(voices)){
            b.push(s.getName());
            b.push(s.getName())
        }
        return b;
        return b
    }
    public open fun setSpeed(num: Number) {
        this.textToSpeech.setSpeechRate(num.toFloat());
        this.textToSpeech.setSpeechRate(num.toFloat())
    }
    public open fun setVoiceName(name: String): Unit {
        var voices = this.textToSpeech.getVoices();
        var cur: Voice? = null;
        var voices = this.textToSpeech.getVoices()
        var cur: Voice? = null
        for(s in resolveUTSKeyIterator(voices)){
            if (name == s.getName()) {
                cur = s;
                cur = s
            }
        }
        this.textToSpeech.setVoice(cur!!!!);
        this.textToSpeech.setVoice(cur!!!!)
    }
    public open fun stop() {
        this.textToSpeech.stop();
        this.textToSpeech.stop()
    }
    public open fun shutdown() {
        this.textToSpeech.shutdown();
        this.textToSpeech.shutdown()
    }
    public open fun isSpeaking(): Boolean {
        return this.textToSpeech.isSpeaking();
        return this.textToSpeech.isSpeaking()
    }
    public open fun listenerVoiceState(callback: (state: Number) -> Unit) {
        open class MyOnVoiceStateListener : OnVoiceStateListener {
            override fun onVoiceState(state: Number) {
                callback(state);
                callback(state)
            }
        }
        this.onVoiceStateListener = MyOnVoiceStateListener();
        this.onVoiceStateListener = MyOnVoiceStateListener()
    }
    open fun getEngineName(): String {
        return this.textToSpeech.getDefaultEngine();
        return this.textToSpeech.getDefaultEngine()
    }
}
interface OnVoiceStateListener {
    fun onVoiceState(state: Number)
}
open class MyTTSListener : UtteranceProgressListener {
    open var ts: AndroidTTSVoice;
    open var ts: AndroidTTSVoice
    constructor(t: AndroidTTSVoice){
        this.ts = t;
        this.ts = t
    }
    public override fun onStart(s1: String): Unit {
        ts.onVoiceStateListener!!.onVoiceState(0);
        ts.onVoiceStateListener!!.onVoiceState(0)
    }
    public override fun onDone(s1: String): Unit {
        ts.onVoiceStateListener!!.onVoiceState(1);
        ts.onVoiceStateListener!!.onVoiceState(1)
    }
    public override fun onError(s1: String): Unit {
        console.log("onError" + s1);
        ts.onVoiceStateListener!!.onVoiceState(-1);
        console.log("onError" + s1)
        ts.onVoiceStateListener!!.onVoiceState(-1)
    }
}
val getSoldRadiusBg = fun(colorSold: Number, radius: Number): GradientDrawable {
    var drawable: GradientDrawable = GradientDrawable();
    drawable.setShape(GradientDrawable.RECTANGLE);
    drawable.setCornerRadius(radius.toFloat());
    drawable.setColor(colorSold.toInt());
    return drawable;
    var drawable: GradientDrawable = GradientDrawable()
    drawable.setShape(GradientDrawable.RECTANGLE)
    drawable.setCornerRadius(radius.toFloat())
    drawable.setColor(colorSold.toInt())
    return drawable
}
;
open class MyApiOptionsJSONObject : UTSJSONObject() {
    open var paramA: Boolean = false;
    open var success: UTSCallback? = null;
    open var fail: UTSCallback? = null;
    open var complete: UTSCallback? = null;
    open var paramA: Boolean = false
    open var success: UTSCallback? = null
    open var fail: UTSCallback? = null
    open var complete: UTSCallback? = null
}
fun myApiByJs(options: MyApiOptionsJSONObject): Unit {
    return myApi(MyApiOptions(paramA = options.paramA, success = fun(res: MyApiResult): Unit {
        options.success?.invoke(res);
        options.success?.invoke(res)
    }
    , fail = fun(res: MyApiFail): Unit {
        options.fail?.invoke(res);
        options.fail?.invoke(res)
    }
    , complete = fun(res: Any): Unit {
        options.complete?.invoke(res);
        options.complete?.invoke(res)
    }
    ));
    ))
}
fun myApiSyncByJs(paramA: Boolean): MyApiResult {
    return myApiSync(paramA);
    return myApiSync(paramA)
}
fun showToastByJs(text: String): Unit {
    return showToast(text);
    return showToast(text)
}
fun showColorToastByJs(text: String, color: String): Unit {
    return showColorToast(text, color);
    return showColorToast(text, color)
}
fun showToastButtonByJs(text: String): Unit {
    return showToastButton(text);
    return showToastButton(text)
}
fun androidDialogByJs(title: String, msg: String, okText: String, callback: UTSCallback, cancelText: String, callback1: UTSCallback): Unit {
    return androidDialog(title, msg, okText, fun(){
        callback();
    return androidDialog(title, msg, okText, if (callback.fnJS != null) {
        callback.fnJS
    } else {
        callback.fnJS = fun(){
            callback()
        }
        callback.fnJS
    }
    , cancelText, fun(){
        callback1();
     as () -> Unit, cancelText, if (callback1.fnJS != null) {
        callback1.fnJS
    } else {
        callback1.fnJS = fun(){
            callback1()
        }
        callback1.fnJS
    }
    );
     as () -> Unit)
}
fun isHavePermisionByJs(pername: String): Boolean {
    return isHavePermision(pername);
    return isHavePermision(pername)
}
fun requestPermisonByJs(pername: String, callback: UTSCallback): Unit {
    return requestPermison(pername, fun(sth: Boolean){
        callback(sth);
    return requestPermison(pername, if (callback.fnJS != null) {
        callback.fnJS
    } else {
        callback.fnJS = fun(sth: Boolean){
            callback(sth)
        }
        callback.fnJS
    }
    );
     as (sth: Boolean) -> Unit)
}
fun requesMoretPermisonByJs(pername: UTSArray<String>, callback: UTSCallback): Unit {
    return requesMoretPermison(pername, fun(sth: Boolean){
        callback(sth);
    return requesMoretPermison(pername, if (callback.fnJS != null) {
        callback.fnJS
    } else {
        callback.fnJS = fun(sth: Boolean){
            callback(sth)
        }
        callback.fnJS
    }
    );
     as (sth: Boolean) -> Unit)
}
fun saveBase64ToGalleryByJs(name: String, base64: String, callback: UTSCallback): Unit {
    return saveBase64ToGallery(name, base64, fun(sth: Boolean){
        callback(sth);
    return saveBase64ToGallery(name, base64, if (callback.fnJS != null) {
        callback.fnJS
    } else {
        callback.fnJS = fun(sth: Boolean){
            callback(sth)
        }
        callback.fnJS
    }
    );
     as (sth: Boolean) -> Unit)
}
fun saveBitmapByJs(name: String, base64: String, callback: UTSCallback): Unit {
    return saveBitmap(name, base64, fun(sth: Boolean){
        callback(sth);
    return saveBitmap(name, base64, if (callback.fnJS != null) {
        callback.fnJS
    } else {
        callback.fnJS = fun(sth: Boolean){
            callback(sth)
        }
        callback.fnJS
    }
    );
     as (sth: Boolean) -> Unit)
}
fun showEditDialogByJs(bean: InputBean): Unit {
    return showEditDialog(InputBean(title = bean.title, holder = bean.holder, nowInput = bean.nowInput, inputType = bean.inputType, maxLength = bean.maxLength, cancelText = bean.cancelText, okText = bean.okText, okCallbackClick = fun(res: String): Unit {
        bean.okCallbackClick(res);
        bean.okCallbackClick(res)
    }
    , cancelCallbackClick = fun(): Unit {
        bean.cancelCallbackClick();
        bean.cancelCallbackClick()
    }
    ));
    ))
}
fun screenShotEnableStateByJs(state: Boolean): Unit {
    return screenShotEnableState(state);
    return screenShotEnableState(state)
}
fun convertHtmlPxToAndroidPxByJs(htmlPx: Number): Number {
    return convertHtmlPxToAndroidPx(htmlPx);
    return convertHtmlPxToAndroidPx(htmlPx)
}
fun showImgDialogByJs(): Unit {
    return showImgDialog();
    return showImgDialog()
}
open class AndroidTTSVoiceByJs : AndroidTTSVoice {
    constructor(callback: UTSCallback) : super(fun(init: Boolean){
        callback(init);
    constructor(callback: UTSCallback) : super(if (callback.fnJS != null) {
        callback.fnJS
    } else {
        callback.fnJS = fun(init: Boolean){
            callback(init)
        }
        callback.fnJS
    }
    ) {}
     as (init: Boolean) -> Unit) {}
    public open fun speakByJs(data: String): Number {
        return this.speak(data);
        return this.speak(data)
    }
    public open fun getVoiceNamesByJs(): UTSArray<String> {
        return this.getVoiceNames();
        return this.getVoiceNames()
    }
    public open fun setSpeedByJs(num: Number) {
        return this.setSpeed(num);
        return this.setSpeed(num)
    }
    public open fun setVoiceNameByJs(name: String): Unit {
        return this.setVoiceName(name);
        return this.setVoiceName(name)
    }
    public open fun stopByJs() {
        return this.stop();
        return this.stop()
    }
    public open fun shutdownByJs() {
        return this.shutdown();
        return this.shutdown()
    }
    public open fun isSpeakingByJs(): Boolean {
        return this.isSpeaking();
        return this.isSpeaking()
    }
    public open fun listenerVoiceStateByJs(callback: UTSCallback) {
        return this.listenerVoiceState(fun(state: Number){
            callback(state);
        return this.listenerVoiceState(if (callback.fnJS != null) {
            callback.fnJS
        } else {
            callback.fnJS = fun(state: Number){
                callback(state)
            }
            callback.fnJS
        }
        );
         as (state: Number) -> Unit)
    }
    open fun getEngineNameByJs(): String {
        return this.getEngineName();
        return this.getEngineName()
    }
}