[安卓] 安卓实时获取数据并刷新图表
作者:CC下载站 日期:2020-10-30 00:00:00 浏览:72 分类:编程开发
先来个效果图吧
然后直接上代码,解说以后有机会我再补上
assets>index.html
<!doctypehtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"> <metahttp-equiv="X-UA-Compatible"content="ie=edge"> <scriptsrc="./js/echarts.min.js"></script> <title>Document</title> </head> <body> <divid="main"style="width:400px;height:400px;"></div> <scripttype="text/javascript"src="./js/echarts.min.js"></script> <script> varmyChart=echarts.init(document.getElementById('main')); functionupdateData(jsonstr){ varshuju=JSON.parse(jsonstr); option={ xAxis:{ type:'category', data:shuju.data, }, yAxis:{ type:'value' }, series:[{ data:shuju.wendu, type:'line' }] }; myChart.setOption(option); } </script> </body> </html>
Mainactivity.java
packagecn.lanol.wendu; importandroidx.annotation.NonNull; importandroidx.annotation.UiThread; importandroidx.appcompat.app.AppCompatActivity; importandroid.annotation.SuppressLint; importandroid.content.ContentValues; importandroid.database.Cursor; importandroid.database.sqlite.SQLiteDatabase; importandroid.os.Bundle; importandroid.os.Handler; importandroid.os.Message; importandroid.util.Log; importandroid.view.View; importandroid.webkit.JavascriptInterface; importandroid.webkit.WebView; importandroid.widget.Button; importcom.google.gson.Gson; importcom.google.gson.JsonElement; importcom.google.gson.JsonObject; importcom.google.gson.JsonParser; importjava.io.IOException; importjava.sql.Time; importjava.util.Timer; importjava.util.TimerTask; importcn.lanol.wendu.Helper.GetContext; importcn.lanol.wendu.Helper.SQLiteDBhelper; importokhttp3.OkHttpClient; importokhttp3.Request; importokhttp3.Response; publicclassMainActivityextendsAppCompatActivity{ privateSQLiteDBhelperdBhelper=newSQLiteDBhelper(GetContext.getContext(),"DATA",null,1); privateSQLiteDatabasedb=dBhelper.getReadableDatabase(); privateWebViewwebView; privateHandlerhandler; @SuppressLint({"SetJavaScriptEnabled","HandlerLeak"}) @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化数据库 newThread(newRunnable(){ @Override publicvoidrun(){ Timertimer=newTimer(); timer.schedule(newTimerTask(){ @Override publicvoidrun(){ getWenDuData(); Messagemsg=newMessage(); msg.what=1; handler.sendMessage(msg); } },0,60000); } }).start(); webView=findViewById(R.id.echartsView); webView.getSettings().setAllowFileAccess(true); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("file:///android_asset/index.html"); handler=newHandler(){ @Override publicvoidhandleMessage(@NonNullMessagemsg){ super.handleMessage(msg); Log.d("标签","handleMessage:"+msg.what); webView.loadUrl("javascript:updateData('"+getNewData()+"')"); } }; try{ Thread.sleep(2000); }catch(InterruptedExceptione){ e.printStackTrace(); } } publicStringgetNewData(){ dBhelper.getWritableDatabase(); StringwenduJson="["; StringtimeJson="["; Cursora=db.query("WenDu",null,null,null,null,null,"IDdesc","5"); if(a.moveToFirst()){ do{ Stringtime=a.getString(a.getColumnIndex("time")); Stringwendu=a.getString(a.getColumnIndex("wendu")); wenduJson+="""+wendu+"","; timeJson+="""+time+"","; }while(a.moveToNext()); } timeJson=timeJson.substring(0,timeJson.length()-1)+']'; wenduJson=wenduJson.substring(0,wenduJson.length()-1)+']'; Stringresult="{"data":"+timeJson+","wendu":"+wenduJson+"}"; returnresult; } publicvoidgetWenDuData(){ OkHttpClientokHttpClient=newOkHttpClient(); Requestrequest=newRequest.Builder().url("https://api.565.ink/json").get().build(); try{ Responseresponse=okHttpClient.newCall(request).execute(); Stringres=response.body().string(); JsonObjecta=JsonParser.parseString(res).getAsJsonObject(); Stringtime=a.get("time").getAsString(); Stringwendu=a.get("wendu").getAsString(); Cursorcursor=db.query("WenDu",null,"timelike'%"+time+"%'",null,null,null,null); if(cursor.moveToFirst()){ Log.d("已存在",time); }else{ ContentValuesvalues=newContentValues(); values.put("time",time); values.put("wendu",wendu); db.insert("WenDu",null,values); Log.d("不存在",time); } Log.d("结果",time+","+wendu); }catch(IOExceptione){ e.printStackTrace(); } } }
activity_main.xml
<?xmlversion="1.0"encoding="utf-8"?> <androidx.drawerlayout.widget.DrawerLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" tools:ignore="WebViewLayout"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="温度"/> <WebView android:id="@+id/echartsView" android:layout_width="match_parent" android:layout_height="400dp"/> </LinearLayout> <com.google.android.material.navigation.NavigationView android:id="@+id/navigationView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start"/> </androidx.drawerlayout.widget.DrawerLayout>
AndroidMainifest.xml
<?xmlversion="1.0"encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="cn.lanol.wendu"> <uses-permissionandroid:name="android.permission.INTERNET"/> <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:name=".Helper.GetContext" tools:ignore="GoogleAppIndexingWarning"> <activityandroid:name=".MainActivity"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
SQLiteDBHelper.java
packagecn.lanol.wendu.Helper; importandroid.content.Context; importandroid.database.sqlite.SQLiteDatabase; importandroid.database.sqlite.SQLiteOpenHelper; importandroid.widget.Toast; importandroidx.annotation.Nullable; publicclassSQLiteDBhelperextendsSQLiteOpenHelper{ privateContextmcontext; privatestaticfinalStringCREATE_WENDU="createtableWenDu(idintegerprimarykeyautoincrement,timetext,wenduinteger)"; publicSQLiteDBhelper(@NullableContextcontext,@NullableStringname,@NullableSQLiteDatabase.CursorFactoryfactory,intversion){ super(context,name,factory,version); mcontext=context; } @Override publicvoidonCreate(SQLiteDatabasedb){ db.execSQL(CREATE_WENDU); Toast.makeText(GetContext.getContext(),"欢迎使用温度实时监控系统",Toast.LENGTH_SHORT).show(); } @Override publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ } }
GetContext.java
packagecn.lanol.wendu.Helper; importandroid.app.Application; importandroid.content.Context; publicclassGetContextextendsApplication{ privatestaticContextcontext; @Override publicvoidonCreate(){ super.onCreate(); context=getApplicationContext(); } publicstaticContextgetContext(){ returncontext; } }
目录结构
猜你还喜欢
- 03-29 [编程相关] Winform窗体圆角以及描边完美解决方案
- 03-29 [前端问题] has been blocked by CORS policy跨域问题解决
- 03-29 [编程相关] GitHub Actions 入门教程
- 03-29 [编程探讨] CSS Grid 网格布局教程
- 10-12 [编程相关] python实现文件夹所有文件编码从GBK转为UTF8
- 10-11 [编程算法] opencv之霍夫变换:圆
- 10-11 [编程算法] OpenCV Camshift算法+目标跟踪源码
- 10-11 [Python] python 创建 Telnet 客户端
- 10-11 [编程相关] Python 基于 Yolov8 + CPU 实现物体检测
- 03-15 [脚本工具] 使用go语言开发自动化脚本 - 一键定场、抢购、预约、捡漏
- 01-08 [编程技术] 秒杀面试官系列 - Redis zset底层是怎么实现的
- 01-05 [编程技术] 《Redis设计与实现》pdf
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[美剧] 史密斯夫妇.2024.8集全.4K.附影版
[电影] 最佳拍档5:兵马俑风云(含前4部全合集)[喜剧/动作/犯罪]
[有声小说] 《都市风水师》 作者:听叶 主播:原野 434集完【MP3】
[电影] 重启2000之传奇人生(84集)
[有声小说] 《百炼成神》 主播:令狐笑笑生&浥轻尘 3913集完【MP3】 [40.3G]
[有声小说] 《傲世九重天》 作者:风凌天下 主播:我影随风 2323集完结【MP3】
[美剧] 《女巫阿加莎》2024 [1080P BD][英语 中英双语字幕][1-9集全]
[美剧] 企鹅人 The Penguin (2024) 1080P 全8集完结
[电视剧] 我们在黑夜中相拥 (2024) 1080 横屏短剧 更24完结
[书籍] 经典科普书籍合集30套近300部·完美精校全插图收藏版
[书籍] 彭子益医书合集 [PDF/DOC]
[游戏] 《黑神话悟空》免安装学习版【全dlc整合完整版】+Steam游戏解锁+游戏修改工具!
[动画] 《名侦探柯南》名侦探柯南百万美元的五菱星 [TC] [MP4]
[动画] 2002《火影忍者》720集全【4K典藏版】+11部剧场版+OVA+漫画 内嵌简日字幕
[剧集] 《斯巴达克斯》1-4季合集 无删减版 1080P 内嵌简英特效字幕
[CG剧情] 《黑神话:悟空》158分钟CG完整剧情合集 4K120帧最高画质
[电影] 《变形金刚系列》七部合集 [4K HDR 蓝光] 国英双语音轨 [内封精品特效字幕]【典藏版】235G
[游戏] 黑神话悟空离线完整版+修改器
[动画] 西游记 (1999) 动画版 4K 全52集 高清修复版 童年回忆
[动画] 收藏版:1996-2024年名侦探柯南全系列1080P,含国配、日配双语版+26部剧场作品
[影视] 美国内战 4K蓝光原盘下载+高清MKV版/内战/帝国浩劫:美国内战(台)/美帝崩裂(港) 2024 Civil War 63.86G
[影视] 一命 3D 蓝光高清MKV版/切腹 / 切腹:武士之死 / Hara-Kiri: Death of a Samurai / Ichimei 2011 一命 13.6G
[影视] 爱情我你他 蓝光原盘下载+高清MKV版/你、我、他她他 2005 Me and You and Everyone We Know 23.2G
[影视] 穿越美国 蓝光原盘下载+高清MKV版/窈窕老爸 / 寻找他妈…的故事 2005 Transamerica 20.8G
[电影] 《黄飞鸿》全系列合集
[Android] 开罗游戏 ▎像素风格的模拟经营的游戏厂商安卓游戏大合集
[游戏合集] 要战便战 v0.9.107 免安装绿色中文版
[电影] 【珍藏版】20世纪电影合集从1922年到1990年代,看看爷爷辈的电影是什么样合集约212G
[书籍] 彭子益医书合集 [PDF/DOC]
[系统]【黑果小兵】macOS Big Sur 11.0.1 20B50 正式版 with Clover 5126 黑苹果系统镜像下载
- 最新评论
-
一部不错的经典科幻kelvin 评论于:11-13 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢285552528 评论于:11-09 找了好久的资源bjzchzch12 评论于:11-07 谢谢分享感谢ppy2016 评论于:11-05 谢谢分享感谢ppy2016 评论于:11-05 有靳东!嘻嘻奥古斯都.凯撒 评论于:10-28 流星花园是F4处女作也是4人集体搭配的唯一一部!奥古斯都.凯撒 评论于:10-28 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢AAAAA 评论于:10-26 找了好久的资源,终于在这里找到了。感谢本站的资源和分享。谢谢password63 评论于:10-26 找了好久的资源,终于在这里找齐了!!!!blog001 评论于:10-21
- 热门tag