From bb9d0b31941ee3999f10e74c586a62b560b25745 Mon Sep 17 00:00:00 2001 From: "zhenhua.zhu" <1020090284@qq.com> Date: Wed, 31 Oct 2018 14:55:48 +0800 Subject: [PATCH 1/4] =?UTF-8?q?RECORD=5FAUDIO=E5=8A=A8=E6=80=81=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=9A=84=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyles/Project.xml | 29 +++++ .../plugin/uexxunfei/EUExXunfei.java | 114 ++++++++++++------ 2 files changed, 103 insertions(+), 40 deletions(-) create mode 100644 .idea/codeStyles/Project.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..30aa626 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/org/zywx/wbpalmstar/plugin/uexxunfei/EUExXunfei.java b/src/org/zywx/wbpalmstar/plugin/uexxunfei/EUExXunfei.java index 93f76b9..4bb28ad 100644 --- a/src/org/zywx/wbpalmstar/plugin/uexxunfei/EUExXunfei.java +++ b/src/org/zywx/wbpalmstar/plugin/uexxunfei/EUExXunfei.java @@ -1,9 +1,14 @@ package org.zywx.wbpalmstar.plugin.uexxunfei; +import android.Manifest; import android.content.Context; +import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Message; +import android.support.annotation.NonNull; +import android.support.v4.app.ActivityCompat; import android.text.TextUtils; +import android.widget.Toast; import com.iflytek.cloud.InitListener; import com.iflytek.cloud.RecognizerListener; @@ -16,6 +21,7 @@ import com.iflytek.cloud.SynthesizerListener; import org.zywx.wbpalmstar.engine.DataHelper; +import org.zywx.wbpalmstar.engine.EBrowserActivity; import org.zywx.wbpalmstar.engine.EBrowserView; import org.zywx.wbpalmstar.engine.universalex.EUExBase; import org.zywx.wbpalmstar.engine.universalex.EUExCallback; @@ -39,6 +45,7 @@ public class EUExXunfei extends EUExBase { private static final int MSG_INIT_SPEAKER = 2; private String mCallbackWinName="root"; + private String[] initSpeakerParams; public EUExXunfei(Context context, EBrowserView eBrowserView) { super(context, eBrowserView); @@ -75,7 +82,6 @@ public void init(String[] params) { } else { callBackPluginJs(JsConst.CALLBACK_INIT, DataHelper.gson.toJson(outputVO)); } - } private void initMsg(String[] params) { @@ -91,13 +97,8 @@ private void initMsg(String[] params) { } public void initSpeaker(String[] params) { - Message msg = new Message(); - msg.obj = this; - msg.what = MSG_INIT_SPEAKER; - Bundle bd = new Bundle(); - bd.putStringArray(BUNDLE_DATA, params); - msg.setData(bd); - mHandler.sendMessage(msg); + initSpeakerParams = params; + requsetPerssions(Manifest.permission.RECORD_AUDIO, "请先申请权限" + Manifest.permission.RECORD_AUDIO, 1); } private void initSpeakerMsg(String[] params) { @@ -127,7 +128,6 @@ public void onInit(int i) { //保存在SD卡需要在AndroidManifest.xml添加写SD卡权限 //如果不需要保存合成音频,注释该行代码 //mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm"); - } @Override @@ -154,47 +154,51 @@ public void onHandleMessage(Message message) { * @param params */ public void startSpeaking(String[] params) { - if (mTts == null) { - return; - } - String json = params[0]; - StartSpeakingVO speakingVO = DataHelper.gson.fromJson(json, StartSpeakingVO.class); - mTts.startSpeaking(speakingVO.text, new SynthesizerListener() { - @Override - public void onSpeakBegin() { - callBackPluginJs(JsConst.ON_SPEAK_BEGIN, ""); + if (mContext.checkCallingOrSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED){ + if (mTts == null) { + return; } + String json = params[0]; + StartSpeakingVO speakingVO = DataHelper.gson.fromJson(json, StartSpeakingVO.class); + mTts.startSpeaking(speakingVO.text, new SynthesizerListener() { + @Override + public void onSpeakBegin() { + callBackPluginJs(JsConst.ON_SPEAK_BEGIN, ""); + } - @Override - public void onBufferProgress(int i, int i1, int i2, String s) { + @Override + public void onBufferProgress(int i, int i1, int i2, String s) { - } + } - @Override - public void onSpeakPaused() { - callBackPluginJs(JsConst.ON_SPEAK_PAUSED, ""); - } + @Override + public void onSpeakPaused() { + callBackPluginJs(JsConst.ON_SPEAK_PAUSED, ""); + } - @Override - public void onSpeakResumed() { - callBackPluginJs(JsConst.ON_SPEAK_RESUMED, ""); - } + @Override + public void onSpeakResumed() { + callBackPluginJs(JsConst.ON_SPEAK_RESUMED, ""); + } - @Override - public void onSpeakProgress(int i, int i1, int i2) { + @Override + public void onSpeakProgress(int i, int i1, int i2) { - } + } - @Override - public void onCompleted(SpeechError speechError) { - callBackPluginJs(JsConst.ON_SPEAK_COMPLETE, ""); - } + @Override + public void onCompleted(SpeechError speechError) { + callBackPluginJs(JsConst.ON_SPEAK_COMPLETE, ""); + } - @Override - public void onEvent(int i, int i1, int i2, Bundle bundle) { + @Override + public void onEvent(int i, int i1, int i2, Bundle bundle) { - } - }); + } + }); + } else { + Toast.makeText(mContext, "请先申请权限" + Manifest.permission.RECORD_AUDIO, Toast.LENGTH_LONG).show(); + } } public void initRecognizer(String[] params) { @@ -305,4 +309,34 @@ private void callBackPluginJs(String methodName, String jsonData) { evaluateScript(mCallbackWinName,0,js); } + @Override + public void onRequestPermissionResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionResult(requestCode, permissions, grantResults); +// Log.i("--grantResults.length-","grantResults----" + grantResults.length); + if (requestCode == 1){ + if (grantResults[0] != PackageManager.PERMISSION_DENIED){ + Message msg = new Message(); + msg.obj = this; + msg.what = MSG_INIT_SPEAKER; + Bundle bd = new Bundle(); + bd.putStringArray(BUNDLE_DATA, initSpeakerParams); + msg.setData(bd); + mHandler.sendMessage(msg); +// Toast.makeText(mContext, "--权限通过--", Toast.LENGTH_LONG).show(); +// Log.i("----走了2----", "----走了2----"); + } else { + // 对于 ActivityCompat.shouldShowRequestPermissionRationale + // 1:用户拒绝了该权限,没有勾选"不再提醒",此方法将返回true。 + // 2:用户拒绝了该权限,有勾选"不再提醒",此方法将返回 false。 + // 3:如果用户同意了权限,此方法返回false + // 拒绝了权限且勾选了"不再提醒" + if (!ActivityCompat.shouldShowRequestPermissionRationale((EBrowserActivity)mContext, permissions[0])) { + Toast.makeText(mContext, "请先设置权限" + permissions[0], Toast.LENGTH_LONG).show(); + } else { + requsetPerssions(Manifest.permission.RECORD_AUDIO, "请先申请权限" + permissions[0], 1); + } + } + } + } + } From af8776e435fc7d79bafe66038c62383e72295350 Mon Sep 17 00:00:00 2001 From: "zhenhua.zhu" <1020090284@qq.com> Date: Wed, 31 Oct 2018 15:27:54 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=A4=9A=E4=BD=99=E7=9A=84=E6=96=87=E4=BB=B6project.xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyles/Project.xml | 29 ----------------------------- 1 file changed, 29 deletions(-) delete mode 100644 .idea/codeStyles/Project.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 30aa626..0000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file From 4110118ef536af4aa761a49be7a7a7a374fd4230 Mon Sep 17 00:00:00 2001 From: "zhenhua.zhu" <1020090284@qq.com> Date: Tue, 13 Nov 2018 15:47:26 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=B7=BB=E5=8A=A0android6.0=E4=BB=A5?= =?UTF-8?q?=E4=B8=8A=E5=8A=A8=E6=80=81=E6=9D=83=E9=99=90=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/uexxunfei/EUExXunfei.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/org/zywx/wbpalmstar/plugin/uexxunfei/EUExXunfei.java b/src/org/zywx/wbpalmstar/plugin/uexxunfei/EUExXunfei.java index 4bb28ad..1a4a0fc 100644 --- a/src/org/zywx/wbpalmstar/plugin/uexxunfei/EUExXunfei.java +++ b/src/org/zywx/wbpalmstar/plugin/uexxunfei/EUExXunfei.java @@ -98,7 +98,20 @@ private void initMsg(String[] params) { public void initSpeaker(String[] params) { initSpeakerParams = params; - requsetPerssions(Manifest.permission.RECORD_AUDIO, "请先申请权限" + Manifest.permission.RECORD_AUDIO, 1); + // android6.0以上动态权限申请 + if (mContext.checkCallingOrSelfPermission(Manifest.permission.RECORD_AUDIO) + != PackageManager.PERMISSION_GRANTED){ + requsetPerssions(Manifest.permission.RECORD_AUDIO, "请先申请权限" + + Manifest.permission.RECORD_AUDIO, 1); + } else { + Message msg = new Message(); + msg.obj = this; + msg.what = MSG_INIT_SPEAKER; + Bundle bd = new Bundle(); + bd.putStringArray(BUNDLE_DATA, initSpeakerParams); + msg.setData(bd); + mHandler.sendMessage(msg); + } } private void initSpeakerMsg(String[] params) { @@ -154,7 +167,8 @@ public void onHandleMessage(Message message) { * @param params */ public void startSpeaking(String[] params) { - if (mContext.checkCallingOrSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED){ + if (mContext.checkCallingOrSelfPermission(Manifest.permission.RECORD_AUDIO) + == PackageManager.PERMISSION_GRANTED){ if (mTts == null) { return; } @@ -312,7 +326,6 @@ private void callBackPluginJs(String methodName, String jsonData) { @Override public void onRequestPermissionResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionResult(requestCode, permissions, grantResults); -// Log.i("--grantResults.length-","grantResults----" + grantResults.length); if (requestCode == 1){ if (grantResults[0] != PackageManager.PERMISSION_DENIED){ Message msg = new Message(); @@ -322,8 +335,6 @@ public void onRequestPermissionResult(int requestCode, @NonNull String[] permiss bd.putStringArray(BUNDLE_DATA, initSpeakerParams); msg.setData(bd); mHandler.sendMessage(msg); -// Toast.makeText(mContext, "--权限通过--", Toast.LENGTH_LONG).show(); -// Log.i("----走了2----", "----走了2----"); } else { // 对于 ActivityCompat.shouldShowRequestPermissionRationale // 1:用户拒绝了该权限,没有勾选"不再提醒",此方法将返回true。 From 15f1de28364c55fb84829740c53652e85c382d2b Mon Sep 17 00:00:00 2001 From: "zhenhua.zhu" <1020090284@qq.com> Date: Wed, 14 Nov 2018 17:12:43 +0800 Subject: [PATCH 4/4] =?UTF-8?q?gradle=E4=B8=ADtargetSdkVersion=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E6=8F=92=E4=BB=B6=E7=89=88=E6=9C=AC=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/widget/config.xml | 2 +- build.gradle | 8 +++++++- uexXunfei/info.xml | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/assets/widget/config.xml b/assets/widget/config.xml index bd5435f..0035ea3 100644 --- a/assets/widget/config.xml +++ b/assets/widget/config.xml @@ -5,7 +5,7 @@ - + false diff --git a/build.gradle b/build.gradle index 136be37..f956f3d 100644 --- a/build.gradle +++ b/build.gradle @@ -20,11 +20,17 @@ repositories { } dependencies { compile fileTree(dir: 'libs', include: '*.jar') - compile ('org.appcan:engine:+:systemRelease@aar') +// compile ('org.appcan:engine:+:systemRelease@aar') + compile(name: 'Engine-system-release', ext: 'aar') + compile 'com.android.support:multidex:1.0.0' } android { compileSdkVersion 22 buildToolsVersion "23.0.0" + defaultConfig { + minSdkVersion 14 + targetSdkVersion 26 + } lintOptions { abortOnError false } diff --git a/uexXunfei/info.xml b/uexXunfei/info.xml index d6e1473..e88a33b 100644 --- a/uexXunfei/info.xml +++ b/uexXunfei/info.xml @@ -1,7 +1,8 @@  - 0:科大讯飞语音插件 + uexName="uexXunfei" version="4.3.0" build="1"> + 1:添加动态权限申请 + 0:科大讯飞语音插件 \ No newline at end of file