撰寫android軟體問題

小弟目前大三要做專題,架構上遇到些瓶頸,不知道該朝哪個方向開發。
主要是手機端的Android軟體跟伺服器,
之前完全沒有做過這類程式的經驗,
想要詢問大家幾個問題,
如果有些問題很笨,
還是被說沒爬文就敬請見諒了!
如有心替小弟解惑的大大,可以在這裡提出你們看法與意見,我會虛心接受感恩
以下簡述

我們是想要做有關手機的防身軟體。

手機端方面:
使用者(會員機制),與伺服器保持連線,定時傳送gps位置,並即時更新在google map上面,
當遭遇危險時,搖晃手機,送出求救訊息給伺服器,伺服器會去告知相對應的緊急聯絡人。

伺服器端:想要知道能與手機保持連線的伺服器應該是要架設哪種伺服器,還是只要寫一支socket程式?
但是我所希望的伺服器是可以做到,有會員機制,會查詢與寫入資料庫(gps位置、會員資料、緊急聯絡人等。),還要可以傳送email給緊急聯絡人(這部份可以改用push訊息的方式)

一切的重點是我分布太清楚何謂server,感覺寫一支簡單的socket程式也可以達到某些目的,
但是想要架一個server,應該需要哪種類型的才能來達成我需要的功能?

2011-11-02 19:51 發佈

ChunTseLin wrote:
小弟目前大三要做專題...(恕刪)

應該用 php 就可以作做到了,可以 email ,也可以會員管理。

ChunTseLin wrote:
但是想要架一個server,應該需要哪種類型的才能來達成我需要的功能?..(恕刪)

你需要的是支援 E-MAIL, MYSQL, PHP 的虛擬主機
現在都有免費的虛擬主機, 也蠻好用的(中文介面), 不需要自己架

http://www.summerhost.info/
去申請一個免費的虛擬主機, 然後把自己寫的 PHP 網頁放上去即可
所以....需要的技能就是 PHP 和 MYSQL


至於Android軟體...用APP INVENTOR, 簡單搞定
不需要用 Android SDK

KaKuDoKu wrote:
你需要的是支援 E-...(恕刪)


android 方面應該是沒問題,之前也都有用eclipse,基本的拉layout那些都還算熟悉。


因為我想要防身軟體在沒有異常的時候,
像是行進中,把資料存到資料庫中,即時的更新目前的路徑,這個動作不希望透過server,
而發生異常時,server擁有主控權,對資料庫去做查詢他設定的緊急聯絡人,發送email通知

所以android程式,如果要去存取mysql的資料庫的話是不是就要了解怎樣用jdbc(直接的存取)?
還有就是 mysql 在存取的時候,本身有提供驗證帳號密碼的機制嗎?
不然這樣只要把手機程式反組譯出來看到你存取哪個資料庫,就可以把整個資料庫的資料抓走了?
還是你的意思是說,手機的程式要先透過php的網頁才能對資料庫做存取的動作?

或者能提供我一些參考資料或網站 謝謝您! 幫助很大!

因為對這些都是粗略的了解,所以有滿多的問題,敬請見諒!

以下是我建立為了製作專題做的協作平台
如果大大心有餘力 可以參考這份ppt 提共意見 謝謝
https://sites.google.com/site/idefenseapp/idea/ver1

ChunTseLin wrote:
android 方...(恕刪)

利用三層式架構
用戶端→伺服端→資料庫
如果是會上架或公開用的
千萬不要把讀寫資料庫的完全寫在用戶端
讓用戶端對伺服端提出需求,伺服端再給予回應

雖然程式會寫得比較龐大,但是資安比較有保障,並且用戶端不一定會一直更新
有時候只要改伺服端的某些code就可以讓用戶端得出不一樣的結果
所以你所謂的伺服器是有兩個
一個是資料庫儲存伺服器, 另一個是接Arduino的伺服器(這個看起來是主機)
其實整合成一個就可以了

上面存會員資料, 會員密碼, gps, e-mail
android手機端只要使用WEBVIEW, 不用考慮sql

webview.loadUrl("http://www.ChunTseLin.com/data.php?name=ChunTseLin&pwd=1234&longitude=124.11&latitude=24.22");
定時執行, 送 gps 資料資料庫儲存伺服器(www.ChunTseLin.com)
當然. 資料可以加密, 就不怕被偷看了

而資料庫儲存伺服器看到有人連過來
http://www.ChunTseLin.com/data.php?name=ChunTseLin&pwd=1234&longitude=124.11&latitude=24.22
php 網頁就會先看使用者 ChunTseLin 和 密碼1234是不是自己會員
如果是, 就把(124.11, 24.22) 寫到資料庫中
所以所有有關 sql 的程式, 都是用 php 寫即可
當然還需要另一個顯示地圖的 map.php, 用 sql 把資料讀出來顯示

現在的問題應該是, 由於你要檢查斷線和接Arduino
就沒辦法用別人的虛擬主機
如果你會自己架伺服器, 那就沒問題了


KaKuDoKu wrote:
資料庫儲存伺服器


因為我對架伺服器這個詞,不慎理解,
雖然平常都很冗統的說架伺服器去做連接來解決...像我的ppt裡面自己也這樣說,
可是完全不知道架什麼樣或是什麼形式的伺服器,所以你的意思是說,
架一個http伺服器,像是網頁的那種嗎?
所以就用Apache PHP MySQL phpMyAdmin 類似這樣的組合,去寫你說的php網頁在對mysql去做存取?
然後用post get 那種方法將資料送給php網頁去做處理?所以送每一筆資料都要包含會員帳號與密碼?

你說的方法如果我沒有理解錯誤的話,確實給了我很大的幫助!
所以一開始的建立會員資料的部份也是可以用同一個方法去讓php去處理?
還有你最後說的map.php是要把google map用網頁的方法呈現,而不是用原本android 內的api?

不過你解決的問題是我整體需要伺服器處理的事件一半
建立會員資料 查詢會員資料 v
傳送gps位置 查詢gps位置 v

我還差一個
異常時(有五種異常)需要發送email(伺服器要去發送)給緊急聯絡人
(會去查詢資料庫相對應的緊急聯絡人) X

php可以送email嗎?

還有其實我判斷異常的方法
其實有五種
時間異常 (行走時間大於原先預設路徑行總時間的平均值)
速度異常 (伺服器會計算數次傳送的gps位置的距離與接收的時間是否,
大於人類所能及的速度(被車子擄走))
路徑異常 (偏離軌道的意思)
異常斷線 (php的方式應該就不是一直保持連線吧?)
搖晃手機 (三軸異常就送異常訊息)

這些有辦法都用php去做嗎?
ChunTseLin wrote:
架一個http伺服器,像是網頁的那種嗎?
所以就用Apache PHP MySQL phpMyAdmin 類似這樣的組合,去寫你說的php網頁在對mysql去做存取?


ChunTseLin wrote:
然後用post get 那種方法將資料送給php網頁去做處理?所以送每一筆資料都要包含會員帳號與密碼?

對, 不過當然只要有一次 POST 成功, 下次也可以不用送NAME&PWD
就看 PHP 怎麼寫

ChunTseLin wrote:
所以一開始的建立會員資料的部份也是可以用同一個方法去讓php去處理?

對, 不過這時應該是用另一個 PHP, 讓使用者建立(都可以啦)

ChunTseLin wrote:
還有你最後說的map.php是要把google map用網頁的方法呈現,而不是用原本android 內的api?

怎麼做都可以, 不過我是這樣想的


ChunTseLin wrote:
php可以送email嗎?

可以.

時間異常. 速度異常 , 路徑異常 , 搖晃手機
這些要用 Android 去做, 如果有異常, 直接 post 給伺服器
讓伺服器直接送 E-MAIL, 如
webview.loadUrl("http://www.ChunTseLin.com/data.php?name=ChunTseLin&pwd=1234&alarm=1");

至於異常斷線, 就要用 PHP, 一段時間沒收到 POST, 就直接發 E-MAIL

如果你不會架, 我建議直接用別人的虛擬主機
先不要考慮 Arduino
至於異常斷線, 可以用一招作弊法
隨便找一台 PC, 打開你的網頁, 不用作任何事
然後 PHP 網頁具有每段時間自動更新的功能
就是加上 header('Refresh: 60');
這樣 PHP 中的程式就會每 60 秒自動執行一次
而且根本沒人會知道有這台 PC
不過, 或許有可以定時執行PHP的免費主機也說不定
那就不用這樣累了


至於 PHP 收送 SMS, 我覺得應該可以找的到
也許不好找或不是免費的而已




KaKuDoKu wrote:
時間異常. 速度異常 , 路徑異常 , 搖晃手機
這些要用 Android 去做, 如果有異常, 直接 post 給伺服器
讓伺服器直接送 E-MAIL, 如
webview.loadUrl("http://www.ChunTseLin.com/data.php?name=ChunTseLin&pwd=1234&alarm=1");

至於異常斷線, 就要用 PHP, 一段時間沒收到 POST, 就直接發 E-MAIL


你說的這個方法真不錯!讓兩邊彼此分工!
伺服器就是去做存取跟發送異常訊息

可是這樣可以提供給多個使用者嗎?
也許在demo這個專題的時候只有一個人
好像最後一個異常斷線這個地方比較有難度!



Arduino那個部分其實延伸想要做的
當初想說是要做成Arduino+壓力感測器+3g模組放到一個娃娃裡面,變成是一個吊飾,
就是簡易版的求救方法,沒有手機直接使用也可以,因為已經有相對應的資料庫可以去做存取了,

不過麻煩的是就是伺服器端也有有一個可以收sms訊息的Arduino,所以我們暫時沒有要做
另一方面就是說手機求救太樹大招風很明顯(怕被搶走),如果有吊飾就可以有第二次的機會可以求救。
ChunTseLin wrote:
可是這樣可以提供給多個使用者嗎?
也許在demo這個專題的時候只有一個人
好像最後一個異常斷線這個地方比較有難度!..(恕刪)

可以, 就是PHP 怎麼寫的問題而已
先去會員資料庫找出所有會員
然後看每個會員最後更新時間(PHP 用 SQL 指令就可簡單向資料庫撈資料)
和現在時間比, 如果時間差太多, 就送 E-MAIL

而且...基本上, 這應該是專題而已
不用考慮太專業的問題吧?
先用別人的虛擬主機來做
成功了再學自己架站
一步步替換

內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?