將學校擺在案頭上-即時更新校內資料的Android案頭組件,校內android

來源:互聯網
上載者:User

將學校擺在案頭上-即時更新校內資料的Android案頭組件,校內android

項目地址: https://github.com/hwding/AeolosXDUWidget

求支援(╭ ̄3 ̄)╭♡

本小白所在的學校雖身為某某電子科技大學, 但是網路基礎設施實在是...用於查詢的各個網頁根本用的不是一套系統...也就是說, 如果你想很方便地擷取你的實驗成績\體育打卡次數\校內一卡通的流水情況和餘額以及水電費的使用方式\圖書館借還資訊等等, 你得登入很多不同的網頁使用多套不同的系統輸入不同的賬戶與密碼...(不想吐槽某些系統居然還外包給另外一個某某電子科大...)

所以能不能用一種便捷的方法將重要的資訊及時呈現和重新整理呢?

根據這個需求給自己做了一個小組件放在手機案頭上, 真的很方便! 真的很方便! 真的很方便!

下面放兩張預覽圖

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 這個許可權

 

緩衝方法:

 1 public void getCaptcha(File file) throws IOException { 2         URL url = new URL(HOST + CAPTCHA_SUFFIX); 3         URLConnection urlConnection = url.openConnection(); 4         urlConnection.setRequestProperty("Cookie", "JSESSIONID="+JSESSIONID); 5         urlConnection.connect(); 6         InputStream inputStream = urlConnection.getInputStream(); 7         byte[] bytes = new byte[1024]; 8         FileOutputStream fileOutputStream = new FileOutputStream(file); 9         int LENGTH;10         while ((LENGTH = inputStream.read(bytes)) != -1){11             fileOutputStream.write(bytes, 0, LENGTH);12         }13         inputStream.close();14         fileOutputStream.close();15     }

 

設定頁面用於Download驗證碼的線程:

 1 package xdu.hwding.aeolosxdu; 2  3 import android.os.Handler; 4 import android.os.Message; 5 import java.io.File; 6 import java.io.IOException; 7 import FooPackage.ECard; 8  9 public class CaptchaLoaderThread extends Thread{10     File file;11     ECard eCard;12     Handler handler;13 14     CaptchaLoaderThread(File file, Handler handler) throws IOException {15         this.file = file;16         this.handler = handler;17     }18 19     public void run() {20         try {21             eCard = new ECard();22             eCard.getCaptcha(file);23             Message message = new Message();24             message.obj = eCard;25             handler.sendMessage(message);26         } catch (IOException e) {27             e.printStackTrace();28         }29     }30 }

 

緩衝成功後通知主線程通過BitMap方式顯示:

 1     Handler generateHandler(final ImageView imageView, final File file) { 2         return new Handler() { 3             @Override 4             public void handleMessage(Message msg) { 5                 Bitmap bitmap = BitmapFactory.decodeFile(String.valueOf(file)); 6                 imageView.setImageBitmap(bitmap); 7                 findViewById(R.id.add_button).setEnabled(true); 8                 findViewById(R.id.add_button).setOnClickListener(generateOnClickListener((ECard) msg.obj)); 9             }10         };11 }

 

關於HTML解析:

分析結果頁面抽取有效資訊是最重要的部分, 程式歸根結底是一個爬蟲

JSoup無疑是第一選擇, 參見: Java中解析HTML資料 (利用第三方庫Jsoup)

這裡不做贅述

 

案頭組件(Widget)的更新周期:

建立案頭組件的時候AndroidStudio會自動產生一個XML設定檔, 裡面定義了組件的某些屬性

 1 <?xml version="1.0" encoding="utf-8"?> 2 <appwidget-provider 3     xmlns:android="http://schemas.android.com/apk/res/android" 4     android:configure="xdu.hwding.aeolosxdu.NewAppWidgetConfigureActivity" 5     android:initialKeyguardLayout="@layout/new_app_widget" 6     android:initialLayout="@layout/new_app_widget" 7     android:minHeight="215dp" 8     android:minWidth="250dp" 9     android:previewImage="@drawable/preview"10     android:resizeMode="vertical"11     android:updatePeriodMillis="1800000"12     android:widgetCategory="home_screen">13 </appwidget-provider>

 minHeight 和 minWidth 屬性分別定義了組件的最小尺寸

 resizeMode 定義可以縮放的方向

注意這裡最坑的來了!!!

沒有看過文檔的本小白天真的認為這裡可以讓 updatePeriodMillis 低至60000毫秒這樣就可以每分鐘重新整理一次...

然而事實是最低更新周期也得半小時(1800000ms)...如果你想更短只能再跑一個線程然後用廣播通知什麼的

為了這個折騰好長時間的我知道真相眼淚掉下來...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.