From 5be007a9a9c3ab66d662cc02ac12ff663d4870d4 Mon Sep 17 00:00:00 2001 From: JOETION <1322874562@qq.com> Date: Tue, 9 Feb 2021 17:31:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=A0=E8=BD=BD=E6=9D=A1?= =?UTF-8?q?=E5=8A=A8=E7=94=BB=EF=BC=8C=E6=96=B0=E5=A2=9E=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 7 +- app/src/main/assets/demo/index.html | 12 +++ app/src/main/assets/error/404.html | 5 ++ app/src/main/assets/error/500.html | 5 ++ app/src/main/assets/error/index.html | 5 ++ .../business/activity/AboutActivity.java | 3 +- .../business/activity/MainActivity.java | 74 ++++++++++++++++++- .../activity/NetworkSettingActivity.java | 3 +- .../activity/VoiceSettingActivity.java | 5 +- app/src/main/res/layout/activity_main.xml | 11 ++- 10 files changed, 119 insertions(+), 11 deletions(-) create mode 100644 app/src/main/assets/demo/index.html create mode 100644 app/src/main/assets/error/404.html create mode 100644 app/src/main/assets/error/500.html create mode 100644 app/src/main/assets/error/index.html diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4ddcbc9..e5ff625 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,9 +2,12 @@ - - + + + + + +

hello world

+ + + + + \ No newline at end of file diff --git a/app/src/main/assets/error/404.html b/app/src/main/assets/error/404.html new file mode 100644 index 0000000..5f97b58 --- /dev/null +++ b/app/src/main/assets/error/404.html @@ -0,0 +1,5 @@ + + +

未找到资源,访问路径错误!

+ + \ No newline at end of file diff --git a/app/src/main/assets/error/500.html b/app/src/main/assets/error/500.html new file mode 100644 index 0000000..875ae41 --- /dev/null +++ b/app/src/main/assets/error/500.html @@ -0,0 +1,5 @@ + + +

服务器内部发生严重错误!

+ + \ No newline at end of file diff --git a/app/src/main/assets/error/index.html b/app/src/main/assets/error/index.html new file mode 100644 index 0000000..990602c --- /dev/null +++ b/app/src/main/assets/error/index.html @@ -0,0 +1,5 @@ + + +

发生未知错误,请联系管理员

+ + \ No newline at end of file diff --git a/app/src/main/java/chaoran/business/activity/AboutActivity.java b/app/src/main/java/chaoran/business/activity/AboutActivity.java index 1d8bda0..434fbbf 100644 --- a/app/src/main/java/chaoran/business/activity/AboutActivity.java +++ b/app/src/main/java/chaoran/business/activity/AboutActivity.java @@ -20,7 +20,8 @@ public class AboutActivity extends AppCompatActivity { protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); - setTitle(R.string.activity_about); + //隐藏状态栏 + getSupportActionBar().hide(); TextView textView = findViewById(R.id.about_content); textView.setText(R.string.activity_about_content); } diff --git a/app/src/main/java/chaoran/business/activity/MainActivity.java b/app/src/main/java/chaoran/business/activity/MainActivity.java index 17090ce..48b35dc 100644 --- a/app/src/main/java/chaoran/business/activity/MainActivity.java +++ b/app/src/main/java/chaoran/business/activity/MainActivity.java @@ -4,12 +4,14 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.graphics.Bitmap; import android.os.Build; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; -import android.webkit.WebSettings; -import android.webkit.WebView; +import android.view.View; +import android.webkit.*; +import android.widget.ProgressBar; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -32,6 +34,7 @@ public class MainActivity extends AppCompatActivity implements ResultListener { private WebView webView; private Adapter adapter; private VoiceEngine voiceEngine; + private ProgressBar progressBar; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -65,15 +68,75 @@ public class MainActivity extends AppCompatActivity implements ResultListener { @SuppressLint("JavascriptInterface") private void initView() { - setTitle(R.string.title_activity_main); + //隐藏状态栏 + getSupportActionBar().hide(); voiceEngine = new TekVoiceEngine(this); webView = findViewById(R.id.webView); + progressBar = findViewById(R.id.loading); + webView.setWebViewClient(disposeView()); WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); + settings.setDomStorageEnabled(true); webView.addJavascriptInterface(voiceEngine, "VoiceEngine"); webView.loadUrl(url()); } + //配置客户端 + private WebViewClient disposeView() { + return new WebViewClient() { + //页面开始加载时 + @Override + public void onPageStarted(WebView view, String url, Bitmap favicon) { + super.onPageStarted(view, url, favicon); + progressBar.setVisibility(View.VISIBLE); + } + + //页面加载完成时 + @Override + public void onPageFinished(WebView view, String url) { + super.onPageFinished(view, url); + progressBar.setVisibility(View.INVISIBLE); + } + + //网络发生错误时,先展示错误界面,然后关闭加载条 + @Override + public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { + switch (errorCode) { + case 404: + webView.loadUrl("file:///android_asset/error/404.html"); + break; + case 500: + webView.loadUrl("file:///android_asset/error/500.html"); + break; + default: + webView.loadUrl("file:///android_asset/error/index.html"); + } + super.onReceivedError(view, errorCode, description, failingUrl); + progressBar.setVisibility(View.INVISIBLE); + } + + //安卓6.0以上发生错误时回调 + @Override + public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + switch (error.getErrorCode()) { + case 404: + webView.loadUrl("file:///android_asset/error/404.html"); + break; + case 500: + webView.loadUrl("file:///android_asset/error/500.html"); + break; + default: + webView.loadUrl("file:///android_asset/error/index.html"); + } + } + super.onReceivedError(view, request, error); + progressBar.setVisibility(View.INVISIBLE); + } + }; + } + + @Override protected void onResume() { //再次唤醒该页面时,重新加载页面和语音配置 @@ -118,9 +181,12 @@ public class MainActivity extends AppCompatActivity implements ResultListener { private String url() { SharedPreferences spf = this.getSharedPreferences("crtech", Context.MODE_PRIVATE); + Integer port = spf.getInt("port", -1); + if (port == -1) { + return "file:///android_asset/demo/index.html"; + } String address = spf.getString("address", "").replaceAll(" ", ""); String path = spf.getString("path", "").replaceAll(" ", ""); - Integer port = spf.getInt("port", -1); String link = address.concat(":").concat(String.valueOf(port)).concat(path); return link.startsWith("http://") ? link : "http://".concat(link); } diff --git a/app/src/main/java/chaoran/business/activity/NetworkSettingActivity.java b/app/src/main/java/chaoran/business/activity/NetworkSettingActivity.java index 498df06..aceae49 100644 --- a/app/src/main/java/chaoran/business/activity/NetworkSettingActivity.java +++ b/app/src/main/java/chaoran/business/activity/NetworkSettingActivity.java @@ -31,12 +31,13 @@ public class NetworkSettingActivity extends AppCompatActivity { private void initView() { + //隐藏状态栏 + getSupportActionBar().hide(); address = findViewById(R.id.address); path = findViewById(R.id.path); port = findViewById(R.id.port); save = findViewById(R.id.save); cancel = findViewById(R.id.cancel); - setTitle(R.string.title_activity_setting_network); SharedPreferences sharedPreferences = this.getSharedPreferences("crtech", Context.MODE_PRIVATE); address.setText(sharedPreferences.getString("address", "")); path.setText(sharedPreferences.getString("path", "")); diff --git a/app/src/main/java/chaoran/business/activity/VoiceSettingActivity.java b/app/src/main/java/chaoran/business/activity/VoiceSettingActivity.java index e4101fe..6f235fd 100644 --- a/app/src/main/java/chaoran/business/activity/VoiceSettingActivity.java +++ b/app/src/main/java/chaoran/business/activity/VoiceSettingActivity.java @@ -12,6 +12,7 @@ import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.widget.*; +import androidx.appcompat.app.AppCompatActivity; import chaoran.business.R; import chaoran.business.vioce.TekVoiceEngine; import chaoran.business.vioce.VoiceEngine; @@ -19,7 +20,7 @@ import chaoran.business.vioce.VoiceEngine; /** * 播报语音设置 */ -public class VoiceSettingActivity extends Activity { +public class VoiceSettingActivity extends AppCompatActivity { private EditText testText; private RadioButton voiceF, voiceY; @@ -40,6 +41,8 @@ public class VoiceSettingActivity extends Activity { } private void initView() { + //隐藏状态栏 + getSupportActionBar().hide(); testText = findViewById(R.id.voice_test_text); voiceF = findViewById(R.id.voice_member_xiaofeng); voiceY = findViewById(R.id.voice_member_xiaoyan); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index ec61af8..3ff7e12 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,5 +1,5 @@ - @@ -8,4 +8,11 @@ android:layout_height="match_parent" android:id="@+id/webView" /> - \ No newline at end of file + + + \ No newline at end of file