編輯:關於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)...如果你想更短只能再跑一個線程然後用廣播通知什麼的
為了這個折騰好長時間的我知道真相眼淚掉下來...
android不同的按鈕一起點擊崩潰解決,android一起public class ButtonUtils { private static long last
Android 繪制view的小知識點,android繪制view【onMeasure】 直接繼承view或ViewGroup的自定義控件需要重寫onMeasure方法並
Android輕量級便簽應用項目源碼,android源碼作者Jhuster,源碼JNote,一款支持部分Markdown語法的輕量級便簽軟件。應用說明:一款輕量級的便簽軟
【開源】二維碼簽到手機andriod版下載!,開源簽到andriod 最近,應很多人的要求,我的易簽到二維碼簽到andriod版現