fei.wang
2025-04-30 722da005a5ec126bedf752ac6bd5c5c7f6172155
1
{"version":3,"sources":["uni_modules/android-utils/utssdk/app-android/index.uts","uni_modules/android-utils/utssdk/interface.uts","uni_modules/android-utils/utssdk/unierror.uts"],"sourcesContent":["/**\r\n * 引用 Android 系统库,示例如下:\r\n * import { Context } from \"android.content.Context\";\r\n * [可选实现,按需引入]\r\n */\r\n\r\n/* 引入 interface.uts 文件中定义的变量 */\r\nimport { MyApiOptions, MyApiResult, MyApi, MyApiSync } from '../interface.uts';\r\n\r\n/* 引入 unierror.uts 文件中定义的变量 */\r\nimport { MyApiFailImpl } from '../unierror';\r\n// import Toast from 'android.widget.Toast';\r\n// import ViewGroup from \"android.view.ViewGroup\";\r\n\r\nimport  Context from  'android.content.Context';\r\nimport Gravity from 'android.view.Gravity';\r\nimport ViewGroup  from 'android.view.ViewGroup';\r\nimport  WindowManager from 'android.view.WindowManager';\r\nimport Toast  from 'android.widget.Toast';\r\nimport Class from 'java.lang.Class'\r\nimport Field from  'java.lang.reflect.Field';\r\nimport Exception from 'java.lang.Exception'\r\n\r\nimport GradientDrawable from  'android.graphics.drawable.GradientDrawable';\r\nimport LinearLayout from   'android.widget.LinearLayout'\r\nimport Color from 'android.graphics.Color'\r\nimport ImageView from \"android.widget.ImageView\";\r\n\r\nimport  BitmapFactory from  'android.graphics.BitmapFactory'\r\nimport Im from 'android.provider.ContactsContract.CommonDataKinds.Im';\r\nimport TextView from 'android.widget.TextView';\r\nimport TypedValue from 'android.util.TypedValue';\r\nimport AlertDialog from 'android.app.AlertDialog';\r\nimport DialogInterface from \"android.content.DialogInterface\";\r\n\r\nimport System from \"java.lang.System\"\r\nimport CharSequence from 'java.lang.CharSequence';\r\nimport ArrayAdapter from \"android.widget.ArrayAdapter\";\r\nimport ArrayList from 'java.util.ArrayList';\r\nimport List from \"java.util.List\";\r\nimport SaveImageToPhotosAlbumOptions from 'uts.sdk.modules.DCloudUniMedia.SaveImageToPhotosAlbumOptions';\r\nimport Base64 from \"android.util.Base64\";\r\nimport ContentValues from \"android.content.ContentValues\";\r\nimport MediaStore from \"android.provider.MediaStore\";\r\nimport Bitmap from \"android.graphics.Bitmap\";\r\nimport Uri from \"android.net.Uri\";\r\nimport OutputStream from \"java.io.OutputStream\";\r\nimport IOException from \"java.io.IOException\";\r\nimport ByteArray from \"kotlin.ByteArray\";\r\nimport Objects from \"java.util.Objects\";\r\nimport Drawable from 'android.graphics.drawable.Drawable';\r\nimport Resources from \"android.content.res.Resources\";\r\nimport Int from \"kotlin.Int\";\r\nimport EditText from 'android.widget.EditText';\r\n\r\nimport Locale from \"java.util.Locale\";\r\nimport  UUID from  \"java.util.UUID\";\r\nimport  Bundle from  \"android.os.Bundle\";\r\nimport  Set from 'java.util.Set'\r\nimport  Voice from 'android.speech.tts.Voice'\r\nimport TextToSpeech from  \"android.speech.tts.TextToSpeech\";\r\n\r\nimport  UtteranceProgressListener  from 'android.speech.tts.UtteranceProgressListener'\r\n// import Snackbar from 'com.google.android.material.snackbar.Snackbar'\r\n/**\r\n * 引入三方库\r\n * [可选实现,按需引入]\r\n *\r\n * 在 Android 平台引入三方库有以下两种方式:\r\n * 1、[推荐] 通过 仓储 方式引入,将 三方库的依赖信息 配置到 config.json 文件下的 dependencies 字段下。详细配置方式[详见](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#dependencies)\r\n * 2、直接引入,将 三方库的aar或jar文件 放到libs目录下。更多信息[详见](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#android%E5%B9%B3%E5%8F%B0%E5%8E%9F%E7%94%9F%E9%85%8D%E7%BD%AE)\r\n *\r\n * 在通过上述任意方式依赖三方库后,使用时需要在文件中 import,如下示例:\r\n * import { LottieAnimationView } from 'com.airbnb.lottie.LottieAnimationView'\r\n */\r\n\r\n/**\r\n * UTSAndroid 为平台内置对象,不需要 import 可直接调用其API,[详见](https://uniapp.dcloud.net.cn/uts/utsandroid.html#utsandroid)\r\n */\r\n\r\n\r\n/**\r\n * 异步方法\r\n *\r\n * uni-app项目中(vue/nvue)调用示例:\r\n * 1、引入方法声明 import { myApi } from \"@/uni_modules/uts-api\"\r\n * 2、方法调用\r\n * myApi({\r\n *   paramA: false,\r\n *   complete: (res) => {\r\n *      console.log(res)\r\n *   }\r\n * });\r\n * uni-app x项目(uvue)中调用示例:\r\n * 1、引入方法及参数声明 import { myApi, MyApiOptions } from \"@/uni_modules/uts-api\";\r\n * 2、方法调用\r\n * let options = {\r\n *   paramA: false,\r\n *   complete: (res : any) => {\r\n *     console.log(res)\r\n *   }\r\n * } as MyApiOptions;\r\n * myApi(options);\r\n *\r\n */\r\nexport const myApi : MyApi = function (options : MyApiOptions) {\r\n  if (options.paramA == true) {\r\n    // 返回数据\r\n    const res : MyApiResult = {\r\n      fieldA: 85,\r\n      fieldB: true,\r\n      fieldC: 'some message'\r\n    };\r\n    options.success?.(res);\r\n    options.complete?.(res);\r\n  } else {\r\n    // 返回错误\r\n    const err = new MyApiFailImpl(9010001);\r\n    options.fail?.(err)\r\n    options.complete?.(err)\r\n  }\r\n}\r\n\r\n/**\r\n * 同步方法\r\n *\r\n * uni-app项目中(vue/nvue)调用示例:\r\n * 1、引入方法声明 import { myApiSync } from \"@/uni_modules/uts-api\"\r\n * 2、方法调用 myApiSync(true)\r\n *\r\n * uni-app x项目(uvue)中调用示例:\r\n * 1、引入方法及参数声明 import { myApiSync } from \"@/uni_modules/uts-api\";\r\n * 2、方法调用 myApiSync(true)\r\n */\r\nexport const myApiSync : MyApiSync = function (paramA : boolean) : MyApiResult {\r\n  // 返回数据,根据插件功能获取实际的返回值\r\n  const res : MyApiResult = {\r\n    fieldA: 85,\r\n    fieldB: paramA,\r\n    fieldC: 'some message'\r\n  };\r\n  return res;\r\n}\r\n\tvar  mToast:Toast|null= null;\r\n\r\n\r\n\r\n\tvar  mLastText = \"\";\r\n\t\r\n\t   var mLastTime = 0;\r\n\t\r\n\t   var mLastDuration = 0;\r\n\t\r\n\t\r\n\t\r\n\t\r\n\r\n// export const showToast=function(text:string){\r\n// \t\t\tif (mToast == null) {\r\n// \t            mToast = Toast.makeText(UTSAndroid.getAppContext()!!, text, Toast.LENGTH_LONG);\r\n// \t        } else {\r\n// \t            if (Objects.equals(text, mLastText) && System.currentTimeMillis() - mLastTime < mLastDuration) {\r\n// \t                return;\r\n// \t            }\r\n// \t            mToast!!.cancel();\r\n// \t            mToast = Toast.makeText(UTSAndroid.getAppContext()!!, text, Toast.LENGTH_SHORT);\r\n// \t            mLastDuration = Toast.LENGTH_LONG;\r\n// \t            mLastTime = System.currentTimeMillis();\r\n// \t            mLastText = text;\r\n// \t        }\r\n// \t\t\tmToast!!.setGravity(Gravity.CENTER, 0, 0);\r\n// \t        mToast!!.show();\r\n// }\r\n\r\n// export const showColorToast=function(text:string,color:string){\r\n// \t\t\tvar tv=new TextView(UTSAndroid.getAppContext()!!);\r\n// \t\t\tvar b:GradientDrawable=getSoldRadiusBg(Color.parseColor(color),60);\r\n// \t\t\ttv.setBackgroundDrawable(b as Drawable);\r\n// \t\t\tvar r1=convertHtmlPxToAndroidPx(20).toInt();\r\n// \t\t\tvar r2=convertHtmlPxToAndroidPx(10).toInt();\r\n\t\t\t\r\n// \t\t\ttv.setPadding(r1,r2,r1,r2)\r\n// \t\t\ttv.setTextColor(Color.WHITE)\r\n// \t\t\ttv.setTextSize((16).toFloat())\r\n// \t\t\ttv.setText(text);\r\n// \t\t\tif (mToast == null) {\r\n// \t            mToast = new Toast(UTSAndroid.getAppContext()!!)\r\n// \t\t\t\tmToast!!.setView(tv);\r\n// \t        } else {\r\n// \t            if (Objects.equals(text, mLastText) && System.currentTimeMillis() - mLastTime < mLastDuration) {\r\n// \t                return;\r\n// \t            }\r\n// \t            mToast!!.cancel();\r\n// \t            mToast = Toast.makeText(UTSAndroid.getAppContext()!!, text, Toast.LENGTH_SHORT);\r\n// \t\t\t\tmToast!!.setView(tv);\r\n// \t            mLastDuration = Toast.LENGTH_LONG;\r\n// \t            mLastTime = System.currentTimeMillis();\r\n// \t            mLastText = text;\r\n// \t        }\r\n// \t\t\tmToast!!.setGravity(Gravity.CENTER, 0, 0);\r\n// \t        mToast!!.show();\r\n// }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const showToastButton=function(text:string){\r\n\t\tif (mToast == null) {\r\n\t\t    mToast = Toast.makeText(UTSAndroid.getAppContext()!!, text, Toast.LENGTH_LONG);\r\n\t\t} else {\r\n\t\t    if (Objects.equals(text, mLastText) && System.currentTimeMillis() - mLastTime < mLastDuration) {\r\n\t\t        return;\r\n\t\t    }\r\n\t\t    mToast!!.cancel();\r\n\t\t    mToast = Toast.makeText(UTSAndroid.getAppContext()!!, text, Toast.LENGTH_SHORT);\r\n\t\t    mLastDuration = Toast.LENGTH_LONG;\r\n\t\t    mLastTime = System.currentTimeMillis();\r\n\t\t    mLastText = text;\r\n\t\t}\r\n\t\tmToast!!.show();\r\n}\r\n\r\n// export const androidDialog=function(title:string,msg:string,okText:string,callback:()=> void ,cancelText:string,callback1:()=>void){\r\n// \tclass MyOnClickListener implements DialogInterface.OnClickListener{\r\n// \t\t\t type:number\r\n// \t\t\tconstructor(type:number){\r\n// \t\t\t\tthis.type=type;\r\n// \t\t\t}\r\n// \t\t\tpublic override onClick( dialogInterface:DialogInterface,  i:Int) {\r\n\t\t\t\t\r\n// \t\t\t\tif(this.type==0){\r\n// \t\t\t\t\t callback();\r\n// \t\t\t\t\t dialogInterface.dismiss()\r\n// \t\t\t\t}else if(this.type==1){\r\n// \t\t\t\t\tcallback1();\r\n// \t\t\t\t\tdialogInterface.dismiss()\r\n// \t\t\t\t}\r\n// \t\t\t}\r\n\t\t\t\r\n// \t}\r\n\t\r\n\t\r\n// \t\tvar builder:\tAlertDialog.Builder=\tnew AlertDialog.Builder(UTSAndroid.getUniActivity()!!)\r\n// \t\tif(title!=\"\"){\r\n// \t\t\tbuilder.setTitle(title)\r\n// \t\t}\r\n\t\t\r\n// \t\tbuilder.setMessage(msg)\r\n// \t\tbuilder.setPositiveButton(okText,new MyOnClickListener(0))\r\n// \t\tif(cancelText!=\"\"){\r\n// \t\t\tbuilder.setNegativeButton(cancelText, new MyOnClickListener(1))\r\n// \t\t}\r\n// \t\tbuilder.create().show();\r\n\t\t\t\r\n// }\r\nexport const  isHavePermision=function(pername:string): boolean {\r\n\t\treturn\tUTSAndroid.checkSystemPermissionGranted(UTSAndroid.getUniActivity()!, [pername])\r\n}\r\n\t \r\n\t \r\n\t\r\n export const  requestPermison=function(pername:string, callback: (sth:boolean) => void ) {\r\n\t\t if(isHavePermision(pername)){\r\n\t\t\t callback(true);\r\n\t\t\t return\r\n\t\t }\r\n\t\t  UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!, [pername], (_ : boolean, p : string[]) => {\r\n\t\t          console.log(p)\r\n\t\t\t\t  callback(true)\r\n\t\t        }, (_ : boolean, p : string[]) => {\r\n\t\t         callback(false)\r\n\t\t          console.log(p)\r\n\t\t        })\r\n\t\t \r\n\t\t \r\n\t\t \r\n}\t\r\n\r\n\r\n\r\nexport const requesMoretPermison=function(pername:string[], callback: (sth:boolean) => void ) {\r\n\t\t\tvar have=true;\t\r\n\t\t\tfor(var per=0;per<pername.length;per++){\r\n\t\t\t\tif(!isHavePermision(pername[per])){\r\n\t\t\t\t\thave=false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(have){\r\n\t\t\t\t callback(true)\r\n\t\t\t\t return;\r\n\t\t\t}\r\n\t\t\tvar len=pername.length;\r\n\t\t\t\t\r\n\t \t\t  UTSAndroid.requestSystemPermission(UTSAndroid.getUniActivity()!, pername, (_ : boolean, p : string[]) => {\r\n\t \t\t          console.log(p)\r\n\t\t\t\t\t  if(p.length==len){\r\n\t\t\t\t\t\t  callback(true)\r\n\t\t\t\t\t  }\r\n\t \t\t\t\t  // callback(true)\r\n\t \t\t        }, (_ : boolean, p : string[]) => {\r\n\t\t\t\t\t\tconsole.log(p)\r\n\t\t\t\t\t\tcallback(false)\r\n\t \t\t          \r\n\t \t\t        })\r\n\t \t\t \r\n\t \t\t \r\n\t \t\t \r\n\t }\r\n\r\n\r\n// export const saveBase64ToGallery=function(name:string,base64:string,callback: (sth:boolean) => void ){\r\n// \tif(isHavePermision(\"android.permission.WRITE_EXTERNAL_STORAGE\")&&isHavePermision(\"android.permission.READ_MEDIA_IMAGES\")){\r\n// \t\tsaveBitmap(name,base64,callback);\r\n\t\t\r\n// \t}else {\r\n// \t\trequesMoretPermison([\"android.permission.WRITE_EXTERNAL_STORAGE\",\"android.permission.READ_MEDIA_IMAGES\"],function(state:boolean){\r\n// \t\t\tif(state){\r\n// \t\t\t\t// saveBitmap(name,base64,callback);\r\n// \t\t\t}else{\r\n// \t\t\t\tcallback(state)\r\n// \t\t\t}\r\n\t\t\t\r\n// \t\t})\r\n// \t}\r\n// }\r\n\r\n// export const saveBitmap=function(name:string,base64:string,callback: (sth:boolean) => void ){\r\n// \tvar decode:ByteArray = Base64.decode(base64, Base64.DEFAULT);\r\n// \t       var  bitmapImage:Bitmap = BitmapFactory.decodeByteArray(decode, (0).toInt(),decode.size);\r\n// \t        var contentValues:ContentValues = new ContentValues();\r\n// \t        contentValues.put(\"_display_name\", name);\r\n// \t        contentValues.put(\"mime_type\", \"image/jpeg\");\r\n\t\t\t\r\n// \t\t\tvar  uri:Uri|null=null;\r\n// \t\t\t\turi = UTSAndroid.getAppContext()!!.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);\r\n// \t        try{\t\r\n\t\t\t\t\r\n// \t\t\t\tif(uri!=null){\r\n// \t\t\t\t\tvar\toutputStream:\tOutputStream|null=null;\r\n// \t\t\t\t\t\toutputStream  =  UTSAndroid.getAppContext()!!.getContentResolver()!!.openOutputStream(uri!!)\r\n// \t\t\t\t\tif(outputStream!=null){\r\n// \t\t\t\t\t\tbitmapImage.compress(Bitmap.CompressFormat.JPEG, 100, outputStream!!);\r\n// \t\t\t\t\t}\r\n// \t\t\t\t\tcallback(true);\r\n// \t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t\r\n// \t\t\t} catch ( e:IOException) {\r\n// \t            e.printStackTrace();\r\n// \t\t\t\tcallback(false)\r\n// \t        }\r\n// }\r\n\r\n\r\nexport type InputBean ={\r\n\ttitle:string|null,\r\n\tholder:string|null,\r\n\tnowInput:String|null,\r\n\tinputType:number,\r\n\tmaxLength:number,\r\n\tcancelText:string,\r\n\tokText:string|null,\r\n\tokCallbackClick:((res:string)=>void),\r\n\tcancelCallbackClick:(()=>void)\r\n}\r\n\r\nexport const showEditDialog=function(bean:InputBean){\r\n\tvar et:EditText=new EditText(UTSAndroid.getAppContext()!!);\r\n\tclass MyOnClickListener implements DialogInterface.OnClickListener{\r\n\t\t\ttype:number\r\n\t\t\tconstructor(type:number){\r\n\t\t\t\tthis.type=type;\r\n\t\t\t}\r\n\t\t\tpublic override onClick( dialogInterface:DialogInterface,  i:Int) {\r\n\t\t\t\t\r\n\t\t\t\tif(this.type==0){\r\n\t\t\t\t\t bean!.okCallbackClick(et.getText().toString())\r\n\t\t\t\t\t dialogInterface.dismiss()\r\n\t\t\t\t}else if(this.type==1){\r\n\t\t\t\t\tbean!.cancelCallbackClick();\r\n\t\t\t\t\tdialogInterface.dismiss()\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t}\r\n\tvar builder:\tAlertDialog.Builder=\tnew AlertDialog.Builder(UTSAndroid.getUniActivity()!!)\r\n\tif(bean.title!=null||bean.title!=\"\"){\r\n\t\tbuilder.setTitle(bean.title)\r\n\t}\r\n\tbuilder.setPositiveButton(bean.okText,new MyOnClickListener(0))\r\n\tif(bean.cancelText!=\"\"){\r\n\t\tbuilder.setNegativeButton(bean.cancelText, new MyOnClickListener(1))\r\n\t}\r\n\tbuilder.setView(et);\r\n\tbuilder.create();\r\n\tbuilder.show();\r\n\t\r\n}\r\n\r\n\r\nexport const screenShotEnableState=function(state:boolean):void{\r\n\tclass MyRun implements Runnable{\r\n\t   override\trun(){\r\n\t\t\tif(state){\r\n\t\t\t\tUTSAndroid.getUniActivity()!!.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);\r\n\t\t\t}else{\r\n\t\t\t\tUTSAndroid.getUniActivity()!!.\tgetWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tUTSAndroid.getUniActivity()!!.runOnUiThread(new MyRun());\r\n}\r\n\r\nexport const     convertHtmlPxToAndroidPx=function  ( htmlPx:number):number {\r\n       var  resources:Resources = UTSAndroid.getAppContext()!!.getResources();\r\n        return Math.round(htmlPx * (resources.getDisplayMetrics().density));\r\n}\r\n\r\nexport const showImgDialog=function(){\r\n\t\t\r\n\tvar builder:\tAlertDialog.Builder=\tnew AlertDialog.Builder(UTSAndroid.getUniActivity()!!)\r\n\t\r\n\t// builder.setView(img);\r\n\tbuilder.create().show();\r\n}\r\n\r\n\r\n\r\nexport class AndroidTTSVoice{\r\n\ttextToSpeech:TextToSpeech;\r\n    public  onVoiceStateListener:OnVoiceStateListener |null=null\r\n\t  \r\n\t  \r\n\tconstructor(callback:(init:boolean)=>void){ \r\n\t\tclass MyListener implements TextToSpeech.OnInitListener{\r\n\t\t\t  override  onInit( i:Int):void {\r\n\t\t\t\t\tconsole.log(\"init  \"+i.toString())\r\n\t\t\t\t\tif(i==-1){\r\n\t\t\t\t\t\tcallback(false)\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// this.\ttextToSpeech.setLanguage(Locale.CHINA);\r\n\t\t\t\t\t\tcallback(true)\r\n\t\t\t\t\t}\r\n\t\t\t  }\r\n\t\t\t\r\n\t\t}\r\n\tthis.\ttextToSpeech=new TextToSpeech(UTSAndroid.getUniActivity()!!,new MyListener())\r\n\t\t\r\n\tthis.\t textToSpeech.setOnUtteranceProgressListener(new MyTTSListener(this));\r\n\t}\r\n\t\r\n\tpublic speak(data:string):number{\r\n\t\t\r\n\t   var state=   this.\t  textToSpeech.speak(data,TextToSpeech.QUEUE_FLUSH,new Bundle(), UUID.randomUUID().toString());\r\n\t   \r\n\t   return state;\r\n\t}\r\n\t\r\n\tpublic getVoiceNames():string[]{\r\n\t\t\tvar voices=this.\ttextToSpeech.getVoices();\r\n\t\t\tvar b:string[]=[] ;\r\n\t\t\t for(s in voices){\r\n\t\t\t\t b.push(s.getName())\r\n\t\t\t }\r\n\t\t\t return b;\r\n\t}\r\n\t\r\n\t\r\n\t\r\n\tpublic setSpeed(num:number){\r\n\t\tthis.textToSpeech.setSpeechRate(num.toFloat())\r\n\t}\r\n\t\r\n\t\r\n\t\r\n\tpublic  setVoiceName(name:string):void{\r\n\t\tvar voices=this.\ttextToSpeech.getVoices();\r\n\t\tvar cur:Voice|null=null;\r\n\t\tfor(s in voices){\r\n\t\t\tif(name==s.getName()){\r\n\t\t\t\tcur=s;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.textToSpeech.setVoice(cur!!);\r\n\t}\r\n\t\r\n\t\r\n\tpublic stop(){\r\n\t\tthis.textToSpeech.stop();\r\n\t}\r\n\t\r\n\tpublic shutdown(){\r\n\t\tthis.textToSpeech.shutdown();\r\n\t}\r\n\t\r\n\t\r\n\tpublic isSpeaking():boolean{\r\n\t\treturn this.textToSpeech.isSpeaking();\r\n\t}\r\n\t\r\n\r\n\tpublic listenerVoiceState(callback:(state:number)=>void){\r\n\t\t class MyOnVoiceStateListener implements OnVoiceStateListener{\r\n\t\t\t override onVoiceState(state:number){\r\n\t\t\t\tcallback(state);\r\n\t\t\t\t \r\n\t\t\t }\r\n\t\t\t \r\n\t\t }\r\n\t\t \r\n\t\t\r\n\t\tthis.onVoiceStateListener=new MyOnVoiceStateListener();\r\n\t}\r\n\t\r\n\t\r\n\t\r\n\t\r\n\tgetEngineName():string{\r\n\t\t\r\n\t\treturn\tthis.textToSpeech.getDefaultEngine();\r\n\t}\r\n\t\r\n\t\r\n\t\r\n}\r\ninterface OnVoiceStateListener{\r\n\tonVoiceState(state:number);\r\n\t\r\n}\r\n\r\n\r\nclass MyTTSListener extends UtteranceProgressListener {\r\n\t\tts:AndroidTTSVoice;\r\n\t\t\r\n\t\tconstructor(t:AndroidTTSVoice){\r\n\t\t\tthis.ts=t;\r\n\t\t}\t\r\n\t     public  override  onStart(s:string):void {\r\n\t\t\tts.onVoiceStateListener!.onVoiceState(0)\r\n\t     }\r\n\t     \t\r\n\t     \r\n\t     public  override  onDone(s:string):void{\r\n\t     \tts.onVoiceStateListener!.onVoiceState(1)\r\n\t     }\r\n\t     \t\r\n\t     public override  onError(s:string):void{\r\n\t\t\t console.log(\"onError\"+s)\r\n\t     \tts.onVoiceStateListener!.onVoiceState(-1)\r\n\t     }       \r\n\t\t\t\t\r\n}\r\n\t\r\n\r\n\r\nconst getSoldRadiusBg=function(  colorSold:number, radius:number):GradientDrawable{\r\n\t\tvar   drawable:GradientDrawable =new GradientDrawable();\r\n        drawable.setShape(GradientDrawable.RECTANGLE);\r\n        drawable.setCornerRadius( radius.toFloat());\r\n        drawable.setColor(colorSold.toInt());\r\n\t\t\r\n        return drawable;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n// export const androidItemDialog=function(title:string,data:string[],   callback:(b:number)=>void){\r\n// \tclass MyOnClickListener implements DialogInterface.OnClickListener{\r\n// \t\t\tconstructor(){\r\n// \t\t\t}\r\n// \t\t\tpublic override onClick( dialogInterface:DialogInterface,  i:Int) {\r\n// \t\t\t\t\tcallback(Number.from(i));\r\n\t\t\t\t\r\n// \t\t\t\t dialogInterface.dismiss()\r\n\t\t\t\t\r\n// \t\t\t}\r\n\t\t\t\r\n// \t}\r\n// \tvar builder:\tAlertDialog.Builder=\tnew AlertDialog.Builder(UTSAndroid.getUniActivity()!!)\r\n// \tif(title!=\"\"){\r\n// \t\tbuilder.setTitle(title)\r\n// \t}\r\n// \tvar list:List<string>=new ArrayList<string>();\r\n// \tfor(var i=0;i<data.length;i++){\r\n// \t\tlist.add(data[i]);\r\n// \t}\r\n\t\r\n\t\r\n\t\r\n\t\r\n// \tbuilder. setAdapter(new ArrayAdapter<String>(UTSAndroid.getAppContext(), 17367043,list),new MyOnClickListener())\r\n// \t builder.create().show();\r\n\t\r\n// }\r\n\r\n\r\n\r\n\r\n","/**\r\n * interface.uts\r\n * uts插件接口定义文件,按规范定义接口文件可以在HBuilderX中更好的做到语法提示\r\n */\r\n\r\n/**\r\n * myApi 异步函数的参数,在type里定义函数需要的参数以及api成功、失败的相关回调函数。\r\n */\r\nexport type MyApiOptions = {\r\n  paramA : boolean\r\n  success ?: (res : MyApiResult) => void\r\n  fail ?: (res : MyApiFail) => void\r\n  complete ?: (res : any) => void\r\n}\r\n\r\n/**\r\n * 函数返回结果\r\n * 可以是void, 基本数据类型,自定义type, 或者其他类型。\r\n * [可选实现]\r\n */\r\nexport type MyApiResult = {\r\n  fieldA : number,\r\n  fieldB : boolean,\r\n  fieldC : string\r\n}\r\n\r\n/**\r\n * 错误码\r\n * 根据uni错误码规范要求,建议错误码以90开头,以下是错误码示例:\r\n * - 9010001 错误信息1\r\n * - 9010002 错误信息2\r\n */\r\nexport type MyApiErrorCode = 9010001 | 9010002;\r\n/**\r\n * myApi 的错误回调参数\r\n */\r\nexport interface MyApiFail extends IUniError {\r\n  errCode : MyApiErrorCode\r\n};\r\n\r\n/* 异步函数定义 */\r\nexport type MyApi = (options : MyApiOptions) => void\r\n\r\n/* 同步函数定义 */\r\nexport type MyApiSync = (paramA : boolean) => MyApiResult","/* 此规范为 uni 规范,可以按照自己的需要选择是否实现 */\r\nimport { MyApiErrorCode, MyApiFail } from \"./interface.uts\"\r\n/**\r\n * 错误主题\r\n * 注意:错误主题一般为插件名称,每个组件不同,需要使用时请更改。\r\n * [可选实现]\r\n */\r\nexport const UniErrorSubject = 'uts-api';\r\n\r\n\r\n/**\r\n * 错误信息\r\n * @UniError\r\n * [可选实现]\r\n */\r\nexport const MyAPIErrors : Map<MyApiErrorCode, string> = new Map([\r\n  /**\r\n   * 错误码及对应的错误信息\r\n   */\r\n  [9010001, 'custom error mseeage1'],\r\n  [9010002, 'custom error mseeage2'],\r\n]);\r\n\r\n\r\n/**\r\n * 错误对象实现\r\n */\r\nexport class MyApiFailImpl extends UniError implements MyApiFail {\r\n\r\n  /**\r\n   * 错误对象构造函数\r\n   */\r\n  constructor(errCode : MyApiErrorCode) {\r\n    super();\r\n    this.errSubject = UniErrorSubject;\r\n    this.errCode = errCode;\r\n    this.errMsg = MyAPIErrors.get(errCode) ?? \"\";\r\n  }\r\n}\r\n"],"names":[],"mappings":"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"}