* 设置界面支持切换到不同类型的仪表盘地址,默认是自动跳转
* 监听遥控器 F8 按键,打开设置界面 * webView 禁止缩放,避免受到安卓字体和dpi缩放的影响
This commit is contained in:
@@ -9,6 +9,17 @@ author:
|
|||||||
2. $ {VERSION_CODE} (去掉空格),会自动替换实际修订号,比如 1.1.4.$ {VERSION_CODE}
|
2. $ {VERSION_CODE} (去掉空格),会自动替换实际修订号,比如 1.1.4.$ {VERSION_CODE}
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
### [1.0.2.${VERSION_CODE}] - 2025.10.10
|
||||||
|
|
||||||
|
#### 文件下载
|
||||||
|
|
||||||
|
* [dashboard_1.0.2.apk](dashboard_1.0.2.apk)
|
||||||
|
|
||||||
|
#### 更新记录
|
||||||
|
* 设置界面支持切换到不同类型的仪表盘地址,默认是自动跳转
|
||||||
|
* 监听遥控器 F8 按键,打开设置界面
|
||||||
|
* webView 禁止缩放,避免受到安卓字体和dpi缩放的影响
|
||||||
|
|
||||||
### [1.0.1.12] - 2025.9.16
|
### [1.0.1.12] - 2025.9.16
|
||||||
|
|
||||||
#### 文件下载
|
#### 文件下载
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import android.os.Handler;
|
|||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.webkit.WebResourceError;
|
import android.webkit.WebResourceError;
|
||||||
@@ -96,9 +97,14 @@ public class BuildingDashboardActivity extends FullscreenActivity {
|
|||||||
|
|
||||||
SharedPreferences pre = PreferenceManager.getDefaultSharedPreferences(this);
|
SharedPreferences pre = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
String url = pre.getString("k_url", "http://172.18.22.211:8002/Dashboard");
|
String url = pre.getString("k_url", "http://172.18.22.211:8002/Dashboard");
|
||||||
mainUrl = url + "/index.html";
|
String type = pre.getString("k_dashboard_type", "0");
|
||||||
configUrl = url + "/data/config.json";
|
configUrl = url + "/data/config.json";
|
||||||
|
|
||||||
|
if(!type.equals("0"))
|
||||||
|
mainUrl = url + "/dashboards/" + type + "/index.html";
|
||||||
|
else
|
||||||
|
mainUrl = url + "/index.html";
|
||||||
|
|
||||||
configLoadHandler.post(configLoadRunnable);
|
configLoadHandler.post(configLoadRunnable);
|
||||||
loadUrlWithRetry();
|
loadUrlWithRetry();
|
||||||
}
|
}
|
||||||
@@ -142,6 +148,24 @@ public class BuildingDashboardActivity extends FullscreenActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 监听按键,因为 WebView 可能会拦截功能键,这里不使用 onKeyDown
|
||||||
|
* @param event
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean dispatchKeyEvent(KeyEvent event) {
|
||||||
|
Log.d(TAG, "dispatchKeyEvent:" + event.getKeyCode());
|
||||||
|
|
||||||
|
if ( event.getKeyCode() == KeyEvent.KEYCODE_F8
|
||||||
|
&& event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||||
|
openSettingsActivity();
|
||||||
|
return true; // 不再向下分发
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.dispatchKeyEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
private void initListener() {
|
private void initListener() {
|
||||||
binding.settingsButton.setOnClickListener(view -> openSettingsActivity());
|
binding.settingsButton.setOnClickListener(view -> openSettingsActivity());
|
||||||
}
|
}
|
||||||
@@ -158,6 +182,13 @@ public class BuildingDashboardActivity extends FullscreenActivity {
|
|||||||
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
|
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
|
||||||
webSettings.setJavaScriptEnabled(true);
|
webSettings.setJavaScriptEnabled(true);
|
||||||
|
|
||||||
|
// 禁用缩放相关设置
|
||||||
|
webSettings.setTextZoom(100);
|
||||||
|
webSettings.setSupportZoom(false); // 禁止缩放
|
||||||
|
webSettings.setBuiltInZoomControls(false);
|
||||||
|
|
||||||
|
binding.webview.setInitialScale(100);
|
||||||
|
|
||||||
binding.webview.setWebViewClient(new WebViewClient() {
|
binding.webview.setWebViewClient(new WebViewClient() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceivedError(WebView view, WebResourceRequest request,
|
public void onReceivedError(WebView view, WebResourceRequest request,
|
||||||
|
|||||||
@@ -9,4 +9,16 @@
|
|||||||
<item>reply</item>
|
<item>reply</item>
|
||||||
<item>reply_all</item>
|
<item>reply_all</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="dashboard_type_entries">
|
||||||
|
<item>0 (根据服务器配置跳转)</item>
|
||||||
|
<item>1 (按楼层)</item>
|
||||||
|
<item>2 (网格+统计)</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="dashboard_type_values">
|
||||||
|
<item>0</item>
|
||||||
|
<item>1</item>
|
||||||
|
<item>2</item>
|
||||||
|
</string-array>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -19,4 +19,5 @@
|
|||||||
<string name="attachment_summary_on">Automatically download attachments for incoming emails
|
<string name="attachment_summary_on">Automatically download attachments for incoming emails
|
||||||
</string>
|
</string>
|
||||||
<string name="attachment_summary_off">Only download attachments when manually requested</string>
|
<string name="attachment_summary_off">Only download attachments when manually requested</string>
|
||||||
|
<string name="dashboard_type_default_value">0</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -5,5 +5,12 @@
|
|||||||
app:title="URL 前缀"
|
app:title="URL 前缀"
|
||||||
app:defaultValue="http://172.18.22.211:8002/Dashboard"
|
app:defaultValue="http://172.18.22.211:8002/Dashboard"
|
||||||
app:useSimpleSummaryProvider="true" />
|
app:useSimpleSummaryProvider="true" />
|
||||||
|
<ListPreference
|
||||||
|
app:title="仪表盘类型"
|
||||||
|
app:key="k_dashboard_type"
|
||||||
|
app:useSimpleSummaryProvider="true"
|
||||||
|
app:entries="@array/dashboard_type_entries"
|
||||||
|
app:entryValues="@array/dashboard_type_values"
|
||||||
|
app:defaultValue="@string/dashboard_type_default_value" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
10
readme.md
10
readme.md
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
## 1. 简介
|
## 1. 简介
|
||||||
|
|
||||||
本项目是一个为 Android 设备设计的专用仪表盘(Dashboard)客户端。
|
本项目是一个运行在 Android 设备上的仪表盘(Dashboard)客户端。
|
||||||
|
|
||||||
其主要功能是作为一个**数字标牌或控制面板**的展示端:它通过全屏 `WebView` 加载并展示一个远程的网页仪表盘,同时接收远程指令,在预定的时间通过串口与外部硬件设备进行通信。
|
其主要功能是作为一个**仪表盘(Dashboard)**的展示端:它通过全屏 `WebView` 加载并展示一个远程的网页仪表盘,并根据服务器数据的配置,在预定的时间通过串口与外部硬件设备进行通信。
|
||||||
|
|
||||||
## 2. 主要功能
|
## 2. 主要功能
|
||||||
|
|
||||||
@@ -59,12 +59,12 @@
|
|||||||
这是一个标准的 Android Gradle 项目。使用 Android Studio 打开即可,或在命令行中执行以下命令构建:
|
这是一个标准的 Android Gradle 项目。使用 Android Studio 打开即可,或在命令行中执行以下命令构建:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 构建 Debug 版本的 APK
|
# 构建 Release 版本的 APK
|
||||||
./gradlew assembleDebug
|
./gradlew clean assembleRelease
|
||||||
```
|
```
|
||||||
|
|
||||||
## 6. TODO
|
## 6. TODO
|
||||||
|
|
||||||
* [ ] 恢复并优化图片轮播功能,支持本地与网络图片。
|
* [ ] 恢复并优化图片轮播功能,支持本地与网络图片。
|
||||||
* [ ] 提供更丰富的远程配置选项(如轮播间隔、动画效果等)。
|
* [ ] 提供更丰富的远程配置选项(如轮播间隔、动画效果等)。
|
||||||
* [ ] 增加 Web 与客户端通过 JavascriptInterface 的双向交互。
|
* [ ] 增加 Web 与客户端通过 Javascript Interface 的双向交互。
|
||||||
|
|||||||
Reference in New Issue
Block a user