2018/02/02

壘球記錄Android APP

環境介紹

  • 程式開發為使用MIT App Inventor 進行開發,
  • 資料儲存在Google Cloud Platform
  • APP需要連線Internet才能作業
  • 所有資料均為雲端即時更新,請勿兩人同時記錄同一場次,避免資料重複
  • 此程式為個人興趣,不保證資料的永久保存

APP安裝說明

  • 請先由我分享(私訊)的Google Drive 路徑下載APP程式到手機中
  • 只支援Android手機,未來等App Inventor 支援iOS才能支援iPhone
  • 程式沒有申請憑證,請再安裝前確認手機有允許安裝來源不明的應用程式(下圖左)
  • 到手機中執行下載的APK檔案,開始安裝
  • 安裝後就可以找到對應的APP圖示(下圖右)

APP使用說明

開啟後程式顯示如下圖,以下使用FJU壘球隊作為範例說明(人名與背號均非本人)

  • 左上角為球隊名稱(舉例: FJU)
  • 右上角為版號(各球隊可能不同)
  • 中上為球隊的LOGO按鈕,作為開始比賽與結束比賽的計時按鈕
  • 中下左邊為切換到投手區的按鈕
  • 中下右邊為切換到打擊區的按鈕
  • 下方左邊為新增刪除修改球員名單維護按鈕
  • 下方右邊為教訓訓練的切換功能,打勾為進入教育訓練練習模式,各球隊均共用同一資料,正式紀錄時請記得不要打勾

第一次使用請記得先維護球員名單,按下左下角的維護按鈕

  • 維護結束
  • 選擇黃色增加按鈕 
  • 新增球員
  • 輸入背號
  • 輸入姓名
  • 選擇左上角的維護按鈕回到主畫面
  • 修改球員
  • 上方的下拉式選單,選擇名單內的球員
  • 修改背號
  • 修改姓名
  • 選擇黃色增加按鈕
  • 刪除球員
  • 上方的下拉式選單,選擇名單內的球員
  • 選擇紅色刪除按鈕


教育訓練模式

  • 勾選左下角的教育訓練模式,開始進入練習模式
  • 教育訓練模式球員紀錄為各隊共用一份
  • 正式紀錄時請記得不要勾選
  • 左上角的隊名會變更為Test
  • 所有作業模式均予正式紀錄相同

預設為瀏覽模式,選擇中下按鈕分別瀏覽打擊與投手記錄

瀏覽打擊紀錄

  • 瀏覽打擊紀錄

  • 左上角標示 Batter page 與隊名
  • 上方中間下拉式選擇球員名單 
  • 球員名單左邊按鈕可以回主頁
  • 球員名單右邊按鈕可以到投手記錄頁面
  • 育設在View分頁,顯示球員的各項記錄
  • Today 分頁會顯示今日的文字記錄

瀏覽投手紀錄

  • 瀏覽投手紀錄

  • 左上角標示 Batter page 與隊名
  • 上方中間下拉式選擇球員名單 
  • 球員名單左邊按鈕可以回主頁
  • 球員名單右邊按鈕可以到打擊季錄頁面
  • 育設在View分頁,顯示球員的各項記錄

記錄模式

  • 進入記錄模式
  • 在首頁按下上方的計時按鈕
  • 顯示對話盒詢問是否要開始一場新比賽
  • 選擇New Game就開始計時,並進入記錄模式
  • 計時按鈕下方新增一個計時顯示
  • 開始計時同時進入記錄模式
  • 計時可提供球賽時間的參考
  • 再次按下計時按鈕,停止記時並回到瀏覽模式
  • 停止計時同時會重設自動打序排列的記錄資料


打擊記錄模式

  • 打擊記錄模式

  • 上方球員名單左測回主頁按鈕變更為計時圖示
  • 預設為Write 分頁
  • 除BB與K外,需標示打擊的落點
  • 1B : 一壘安打
  • 2B : 二壘安打
  • 3B : 三壘安打
  • HR : 全壘打
  • BB : 保送
  • SH : 犧牲打
  • O : 出局
  • K :三振 
  • F : 飛球
  • G : 滾地球 
  • 0, 1, 2, 3, 4 : 本打席的打點 
  • 下拉式壘包狀態,為本打席上場時的各壘包狀況,預設為無人在壘,如有人在壘要記得修改
  • 按下ADD,就會增加記錄
  • 新增成功時,下方顯示最近新增的球員記錄時間
  • 可參考此訊息判斷避免重複記錄或遺漏記錄
  • 同時會清除記錄的狀況選項,檢查是否可進入自動打序選擇
  • 請確認上方的球員是否為正確,如不正確,可手動調整
  • 自動打序模式為系統依據記錄球員的順序,當發現本場有重複球員時,就會視為已經打完一個完整打序,並依據之前的記錄開始自動選擇球員
  • 因某些原因自動打序亂掉時,請回首頁選擇停止計時,接著重新開始計時,即可清掉自動打序內容
  • 選擇View 分頁,瀏覽該球員的記錄資料
  • 落點區藍色為安打的落點,紅色為出局的落點
  • G/F 為打擊的滾地球數與飛球數
  • Extra 分頁為記錄非打席的資料
  • 此記錄與個人無關,資料會顯示在Today的文字中
  • 選擇要新增的文字資料後,選擇Add Extra Info.

投手記錄模式

  • 投手記錄模式
  • 上方球員名單左測回主頁按鈕變更為計時圖示
  • 預設為Write 分頁
  • H : 被安打
  • E : 野手失誤
  • BB : 對手保送
  • GO : 對手滾地球出局
  • FO : 對手飛球出局
  • Out 0,1,2,3 : 對手本打席造成的出局數
  • 本壘板0,1,2,3,4 : 對手本打席的得分數
  • 按下Add 增加記錄
  • 新增成功時,下方顯示最近新增記錄時間
  • Win/Loss ,記錄投手的勝投與敗投數

結束計時

  • 結束計時
  • 在記錄模式中,選擇計時按鈕,跳出確認對話框
  • 選擇END,結束計時模式,進入瀏覽模式
  • 同時清除自動打序內容

2012/04/12

[Android]How to sort object list

How to make a file browser with different sort display method. We can get the file structure first and store in a list. Then use Comparator interface to do different sort.

1. Suppose you have a class "MYFile" and need to sort the ArrayList of MyFiles

    private List myFiles=new ArrayList();

2. Create a Class implements Comparator and with the compare method

  class DirFirstComparator implements Comparator {
    public int compare(MYFile emp1, MYFile emp2) {
    MYFile myfile1 = (MYFile)emp1;
    MYFile myfile2 = (MYFile)emp2;
    if( myfile1.bdir){ // myfile1 is a directory
      if( myfile2.bdir)
        return ( myfile1.showname.compareToIgnoreCase(myfile2.showname));
      else
        return -1;
    } else { // myfile1 is a file
      if( myfile2.bdir )
        return 1;
      else
        return ( myfile1.showname.compareToIgnoreCase(myfile2.showname));
    }
  }

3. Construct the Comparator and call Collections.sort( )
  Comparator comparator = new DirFirstComparator( );
  Collections.sort( myFiles, comparator ); 

2012/03/26

[Android]Display view first, flash content later

Let view comes out first, then update the content later.
Do not put everything into onCreate(), try to use AsyncTask class to access content in background.

1. Implement a class to inherent AsynTask class
class RunningAsyncTask extends AsyncTask{
   protected void onPreExecute( ) { 
     // system will call this first
     // do whatever view content modification
     // just after thread started.
      bEndThread = false;
   }
   protected void onPostExecute( String value ) { 
     // system will call this when thread finished.
     // do whatever view content modification
     // before thread finished.
      SetAddressText ( value );
      bEndThread = true;
   }
   protected void onProgressUpdate(Integer... values) {  
     // system will call this when publishProgress( )
     // is called in doInBackground( )
     // do whatever view content modification 
     // when the background process.
   } 
   protected String doInBackground(Void... params) {  
     // CAN NOT DO any modification of view content
     // just do any content fetch for longer process time
     // Call publishProgress((int) ((i / (float) count) * 100))
     // giving a chance to update the view during the process time
      String addStr = getCurrentGPSAddress( );
      return addStr;
   }
}
2. In onResume or onCreate to init the thread (never reentry)
  protected void onResume(){
    super.onResume( );
    if( bEndThread == true);
      new RunningAsyncTask().execute();
  }
3. Never Never execute a new AsyncTask when the last one is not finished.

2012/03/25

[Android] Gridview display in reverse order

If your Gridview got a reverse order display bug after refresh the screen
try to change the code of Google sample to below code
 public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if(convertView==null){ 
         LayoutInflater li = getLayoutInflater(); 
         v = li.inflate(R.layout.iconview, parent, false); 
     } 
     TextView tv = (TextView)v.findViewById(R.id.icon_text); 
     tv.setText(fun_strs[position]); 
     ImageView iv = (ImageView)v.findViewById(R.id.icon_image); 
     iv.setImageResource(fun_imgs[position]); 
     return v; 
 }

2009/09/20

謹慎處置新流感

快篩不等於H1N1檢驗
陽性反應不等於感染H1N1

A型流感不等於H1N1
H1N1是A型流感的一種
 快篩( 1hr )是判斷A型流感,快篩陽性反映代表是得到A型流感,但不一定是H1N1,就醫後應在家進行隔離,如果服用克流感後,3天內高燒持續在38度以上,並出現氣喘等現象,應到醫院感染科就診進行H1N1的取樣篩檢( 需送疾病管制局, 最快3小時可確認, 一般需要0.5~1天 )。


苦哥有親身的經歷,整理處置如下,
8 月底時哥哥在學校發燒後, 我們立刻開車直接由學校帶到萬芳醫院掛急診( 23:00 )
1. 全程戴口罩
2. 搖下車窗,保持空氣暢通
3. 告知集診室, 學校有其它班同學感染H1N1

急診室小兒科醫師進行喉頭取樣快篩後, 1 小時後確認是A型流感陽性反應,在此等待期間
1. 全程戴口罩
2. 媽媽陪哥哥到院外通風處等待
3. 爸爸陪妹妹在院內等待

醫師開了五天的克流感與其它咳嗽,流鼻水的藥,就請我們回家自行隔離
1. 回家途中搖下車窗,保持空氣暢通
2. 在家全程戴口罩
3. 媽媽陪哥哥睡,開窗,關門,戴口罩
4. 爸爸陪妹妹睡,安撫妹妹不安的情緒

第二天通報學校,哥哥快篩出現陽性反應
每隔2~3鐘頭量體溫,克流感一定準時吃,哥哥的餐具分開處理滾水消毒,要求哥哥勤洗手(使用獨立的衛浴設備)。
第二天哥哥的體溫就降到38 度下,第三天到37度以下,精神恢復正常,持續將五日克流感吃完,同時爸爸、媽媽、妹妹未出現發燒症狀,全家恢復正常生活。

2009/08/09

愛民如子的國軍

南臺灣受到颱風重創,國軍以百分之一(2686人次)不到的兵力試圖幫助(五萬四千份口糧)將近全台1/3面積的受災縣市,同時間民間團體慈濟已經動員超過3000多名志工,投入預計十萬份的熱食發放,國防部長真的是愛民如愛子!????

苦哥節錄相關新聞如下:
軍事新聞通訊社於2009/08/09發布新聞
...國防部今天表示,受「莫拉克」颱風重創影響,國軍自昨日起配合地方政府,大量投入人力、物力支援地方救災工作,兩天來總共動員兵力計兩千六百八十六人、各型車輛三百七十二輛、S-70C救護直升機一架次以及各式機具一百三十二部,並協助撤離受困民眾二千七百二十一人、清運土石垃圾一百一十餘噸與,運送五萬四千餘份口糧等,有效動員國軍救援能量,協助地方政府救災及安頓災民的任務。...


Nownews 2009/08/09 "慈濟總動員 10萬熱食慰災民"新聞中指出
...南台灣的慈濟人,9日出動了超過3000多名志工,一早就為受災的民眾準備熱食,從8日至9日中午截止,已發放六萬份便當,預估9日會發放超過十萬份。...


自由時報在2009/03/10 "全募兵制 裁軍6萬" 一文中指出
...全募兵制裁軍規模幾近定案,軍方規劃將裁軍六萬人,三軍總員額從廿七萬五千人降到廿一萬五千人...


[相關新聞]

2009/07/13

不再跟往事乾杯

我們以完封來慶祝第一個冠軍

 苦哥從小就喜歡玩棒球,進入EMBA後結識了一群喜歡打壘球的好友,每年十月的NTU EMBA壘球賽大家總是積極備戰,到處找球隊比賽,遠征過台科大、輔大、甚至與大學生球隊打管院杯。四年了,這支被看好奪冠的熱門隊伍,彷彿被下魔咒般,每年都會莫名的輸球。在晚會上,除了痠痛的肌肉,沾滿球場紅土的球衣,"跟往事乾杯"是唯一會被一遍又一遍唱出的歌曲。(還有一杯杯的紅酒)

 2009年07月11日,終於不再高唱跟往事乾杯,悶了四年,我們在學生會舉辦的積分賽中,經過七個月的賽事最後在決賽以三勝的成績奪得冠軍,苦哥以此文感謝所有參賽的球友,並預祝勝必勝王朝的降臨。

[後記]
勝必勝是苦哥所屬球隊的隊名,只因前一年冠軍隊的隊名叫必勝隊,所以我們就叫勝必勝。

跟往事乾杯 作詞:陳桂珠 作曲:長剛 編曲:陳志遠
經過了許多事 你是不是覺得累
這樣的心情 我曾有過幾回
也許是被人傷了心 也許是無人可瞭解
現在的你 我想一定很疲憊

人生際遇就像酒 有的苦有的烈
這樣的滋味 你我早晚要體會
也許那傷口還流著血 也許那眼角還有淚
現在的你 讓我陪你喝一杯

乾杯 朋友就讓那一切成流水
把那往事 把那往事當作一場宿醉
明日的酒杯 莫再要裝著昨天的傷悲

請與我舉起杯 跟往事乾杯
舉起杯 跟往事 乾杯


[2017/03/28]
94必勝慢慢變成一個台大EMBA壘球的障礙,從一冠難求到累積十五冠,謝謝所有一起打球的夥伴。