1. 程式人生 > >手機跟蹤程式“手機去哪兒了”

手機跟蹤程式“手機去哪兒了”

前言

    本程式原是作者自用的一款手機防盜應用,朋友看到後覺得不錯也希望安裝,本來沒打算髮布,但是看了最近令人心痛的MH370事件後,感覺市面上缺少一款維繫親人牽掛的軟體。應微軟嚴苛的隱私稽核要求,我將程式進行了隱私改造(被退回了8次,不過相信在這麼嚴格的審查下,使用者用的也會放心些吧),最終誕生了這款《手機去哪兒了》這款軟體。

    本篇意在於簡單介紹軟體功能,功能分析以及實現功能部分程式碼,以及提交應用通過嚴苛稽核的一些心得。

    希望你愛的人與愛你的人一生平安。

功能簡介

   《手機去哪兒了》是一款手機跟蹤軟體,在手機空閒時間內間隔地上傳手機位置定位資訊到指定郵箱。

    應用下載地址:

點選下載

螢幕截圖

         

(圖1)                                                                          (圖2)

(美工做得不好,見諒)

使用說明

     首先點選圖1下方的設定按鈕,進入圖2,為方便新手,這裡統一註釋一下:

     1、SMTP伺服器:The Simple Mail Transfer Protocol (SMTP) server,即簡單郵件伺服器,大家知道是郵件服務商提供用於發郵件的伺服器就好了,一般在郵箱的首頁都可以找得到;如,

                  網易163:smtp.163.com

                  新浪:smtp.sina.com

     2、登入使用者:此處填寫你註冊的郵箱賬號(有人竟然去填微博賬號,真看不懂),只是使用者名稱(一般是@前面部分),不是完整的郵箱地址

     3、登入密碼:密碼

     4、使用郵箱:這裡填寫完整的郵箱地址

     5、僅WIFI傳送:軟體通過兩種網路傳送,手機蜂巢網和WIFI,因為蜂巢網路會產生流量費用(做了優化流量很小,一張圖片的流量夠發五六千次了),如果不想花錢可以鉤上;

     6、定位服務開關:微軟說一定要有,不然不許釋出,用途是開關本地定位服務;

     7、使用地圖:郵件中將使用表示手機位置的地圖連結,這裡因為考慮到後臺電量問題,考慮到讓手機續航時間延長,沒有使用耗電量多幾倍的精準定位,而且網頁地圖和手機地圖本身存在誤差,所以有時相差較遠,但這樣對於救援力量來說應該足夠了;

     8、郵件測試:正確填寫以上資訊後,可以測試郵件是否能夠正常送達,這裡強調一下考慮到SSL需要穩定的網路、且產生更多的無用流量的關係不支援SSL郵箱,如QQ郵箱

正常送達截圖

        這些準備完成後,我們回到圖一,點選執行按鈕,這樣就會在後臺執行發信系統,空閒時將手機的當前位置上傳自郵箱了。

開發相關

       希望多一些公益性的軟體,在此小結下本軟體有幾個要點:

       1、如何自動傳送郵件,微軟釋出的開發包本身只帶有郵件軟體外連結,如果使用自帶的類庫,除非我們能在將郵件內容傳過去的同時捕獲傳送程式的控制代碼,不然無法操作自動傳送,但是WP8是個封閉系統,程序間的操作除了幾個允許的呼叫,簡直就是禁止的,所以這條路行不通,我們只能做的是重寫郵件協議;

       2、應用後臺程式,這個無疑是限制得比較死的東西,特別是後臺對網際網路的訪問這塊,所以要上傳資料要花些功夫;說到網路限制,這裡著重說下網路迴環,大家都知道,有些伺服器上裝備雙網絡卡,當網路訪問的時候,就會發生迴環,一般的解決辦法就是設定路由表。然而移動裝置的環境複雜度要遠大於有線的寬頻,舉例如下圖:


       當移動裝置從A點移動到B點,我們其實要完成從A的網路到B的網路轉換,而中間的範圍C就是A、B訊號強度不相伯仲的地段,這樣的情況也很容易造成迴環,因此,持續連線的平滑網路轉換是個難點。

       3、大多數軟體是申明全域性的Geoposition物件,StatusChange 和 PositionChange來獲取位置,然而我們考慮到對於某些無法移動的受助者的情況,靠位置的改變來確認位置資訊就顯得不靠譜,而且不斷的監控位置的改變會消耗大量的電力;

       4、考慮到軟體的適用範圍,設計支援4種語言,之前這方面沒注意,到後邊才補救造成多做了許多不必要的工作,這點後邊會統一說一下。

功能實現

語言包規劃

    首先,我們應該注意的是軟體釋出的範圍,因為之前比較在意,很早就勾選了需要的語言,結果後邊要匹配多個語言的欄位,做了許多多餘的活,請先將預設的語言改為英語,因為我們不可能完全翻譯所以非既定語言,我們需要定製一個比較通用的語言。 點開專案→XXX屬性→程式集資訊按鈕
將非特定語言設定為英語,也就是說,除了我們給定的有翻譯的語言包外,所有其他語言的手機都採用英語顯示。同時設定WMAppManifest.xml檔案,讓打包的預設語言也為英語。 完成後,我們資源管理器中找到Resources\AppResources.resx 檔案將ResourceLanguage欄位預設的zh-CN改為en-US,這樣基本準備就完成了,我們可以開始下一步工作

簡單郵件協議

    因為微軟在WP平臺上並沒有公佈郵件API,使得市面上的郵件軟體幾乎沒有,好在哥以前是學C的,寫一套郵件協議並不難,具體可以參看文件RFC821以下列出本篇使用的協議命令:
郵件協議
命令 介紹