Android程序設(shè)計課程報告_第1頁
Android程序設(shè)計課程報告_第2頁
Android程序設(shè)計課程報告_第3頁
Android程序設(shè)計課程報告_第4頁
Android程序設(shè)計課程報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Android程序設(shè)計課程報告 題 目:360安全衛(wèi)士 專 業(yè):軟件工程 姓名學(xué) 號: 一、 系統(tǒng)功能1.1 手機防盜手機防盜主要實現(xiàn)對手機的保護,進入“手機防盜”模塊,提示用戶設(shè)置手機保護密碼,設(shè)置密碼成功或者已經(jīng)設(shè)置后進入保護程序,主要有以下幾個功能:SIM卡變更警報等。1.2 通訊衛(wèi)士通訊衛(wèi)士主要實現(xiàn)對手機通訊錄的備份,添加黑名單,防騷擾設(shè)置。1.3 手機殺毒手機殺毒主要實現(xiàn)對惡意軟件的掃描,通過調(diào)用數(shù)據(jù)庫中惡意軟件標(biāo)識特征來識別本機是否含有惡意軟件。1.4 軟件管理軟件管理實現(xiàn)對軟件的管理,包括系統(tǒng)軟件和用戶軟件,包含軟件的卸載程序。1.5 任務(wù)管理任務(wù)管理實現(xiàn)對系統(tǒng)內(nèi)存中的進程進行動

2、態(tài)監(jiān)控,滿足用戶對無響應(yīng)占資源的進程結(jié)束機制。但不允許用戶結(jié)束系統(tǒng)進程。1.6 流量管理流量管理實現(xiàn)對各進程訪問網(wǎng)絡(luò)數(shù)據(jù)量的監(jiān)控。1.7 系統(tǒng)優(yōu)化系統(tǒng)優(yōu)化實現(xiàn)優(yōu)化系統(tǒng),對系統(tǒng)開機項進行優(yōu)化、系統(tǒng)垃圾清理。1.8 隱私空間隱私空間實現(xiàn)用戶保存一些重要的文件,訪問需要獨立密碼。1.9 高級工具高級工具實現(xiàn)一些日常需要的幫助。1.10 設(shè)置中心設(shè)置中心實現(xiàn)用戶對操作習(xí)慣的設(shè)置,如界面顏色、升級服務(wù)、程序鎖、退出等操作。二、項目分析2.1 主界面新建類SplashActivity設(shè)置不要提示標(biāo)題欄并且全屏顯示。檢查是否升級版本。 protected void onCreate(Bundle saved

3、InstanceState) super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.splash);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);tv_version = (TextView) findViewById(R.id.tv_splash_version);ve

4、rsion = getVersion();tv_version.setText(版本號 + version);ll = (LinearLayout) findViewById(R.id.ll_splash_main);AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);alphaAnimation.setDuration(2000);ll.startAnimation(alphaAnimation);progressDialog = new ProgressDialog(this);progressDialog.setP

5、rogressStyle(ProgressDialog.STYLE_HORIZONTAL);progressDialog.setMessage(正在下載.);new Thread()public void run() trysleep(3000);handler.sendEmptyMessage(0);catch (InterruptedException e)e.printStackTrace();.start();private void showUpdateDialog()AlertDialog.Builder builder = new AlertDialog.Builder(this

6、);builder.setIcon(android.R.drawable.ic_dialog_info);builder.setTitle(升級提醒);builder.setMessage(info.getDescription();builder.setCancelable(false);builder.setPositiveButton(確定, new DialogInterface.OnClickListener()Overridepublic void onClick(DialogInterface dialog, int which)if(Environment.getExterna

7、lStorageState().equals(Environment.MEDIA_MOUNTED)File dir = new File(Environment.getExternalStorageDirectory(), /security/update);if(!dir.exists()dir.mkdirs();String apkPath = Environment.getExternalStorageDirectory() + /security/update/new.apk;UpdateTask task = new UpdateTask(info.getUrl(), apkPath

8、);progressDialog.show();new Thread(task).start();elseToast.makeText(SplashActivity.this, SD卡不可用,請插入SD卡, Toast.LENGTH_SHORT).show();loadMainUI(););builder.setNegativeButton(取消, new DialogInterface.OnClickListener()Overridepublic void onClick(DialogInterface dialog, int which)loadMainUI(););builder.cr

9、eate().show();private boolean isNeedUpdate(String version)UpdateInfoService updateInfoService = new UpdateInfoService(this);tryinfo = updateInfoService.getUpdateInfo(R.string.serverUrl);String v = info.getVersion();if(v.equals(version)Log.i(TAG, 當(dāng)前版本: + version);Log.i(TAG, 最新版本: + v);loadMainUI();re

10、turn false;elseLog.i(TAG, 需要更新);return true;catch (Exception e)e.printStackTrace();Toast.makeText(this, 獲取更新信息異常,請稍后再試, Toast.LENGTH_SHORT).show();loadMainUI();return false;private String getVersion()tryPackageManager packageManager = getPackageManager();PackageInfo packageInfo = packageManager.getP

11、ackageInfo(getPackageName(), 0);return packageInfo.versionName;catch (NameNotFoundException e)e.printStackTrace();return 版本號未知;2.2 與服務(wù)器的交互2.2.1 tomcat配置好之后在update.xml里面添加一下內(nèi)容配置好服務(wù)器。其中這里的ip地址一定要寫你服務(wù)器所在的電腦的ip地址,需要在Security這個目錄下面放置一下new.apk的,用來更新的。1.0這里寫一些這個版本的特點:8080/Security/new.apk2

12、.2.2 交互地址存起來,在項目的values目錄下面新建一個config.xml文件 :8080/Security/update.xml2.2.3需要用一個model用來存放輸入的更新信息,并且需要新建類com.xiaobin.security.domain.UpdateInfo從服務(wù)器中讀取update.xml里面的內(nèi)容,拿到apk的下載地址,和最新版本與當(dāng)前版本的比較,查看是否下載。從服務(wù)器上讀取update.xml新建類與服務(wù)器交互。public UpdateInfo getUpdateInfo(int urlId) throws Exception

13、String path = context.getResources().getString(urlId);URL url = new URL(path);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setConnectTimeout(5000);httpURLConnection.setRequestMethod(GET);InputStream is = httpURLConnection.getInputStream();return Up

14、dateInfoParser.getUpdateInfo(is);/解析xml2.2 app更新的邏輯和主頁面下載apk需要另開一個線程下載,新建類。有安裝邏輯后,用一個內(nèi)部類用來啟動另一個線程下載。class UpdateTask implements Runnableprivate String path;private String filePath;public UpdateTask(String path, String filePath)this.path = path;this.filePath = filePath;Overridepublic void run()tryFil

15、e file = DownloadTask.getFile(path, filePath, progressDialog);progressDialog.dismiss();install(file);catch (Exception e)e.printStackTrace();progressDialog.dismiss();Toast.makeText(SplashActivity.this, 更新失敗, Toast.LENGTH_SHORT).show();loadMainUI();2.3 設(shè)置自定義對話框與啟動activity2.3.1 在手機防盜界面設(shè)置一個快捷啟動方式,就是在撥打電

16、話的時候,輸入一個特定的號 碼,然后就會啟動手機防盜界面。接收打電話的廣播,捕獲它。并且在AndroifMainfest文件里面注冊這個廣播接收者。再加上相應(yīng)的權(quán)限。 public void onReceive(Context context, Intent intent)String outPhoneNumber = this.getResultData();if(outPhoneNumber.equals(1314)/當(dāng)監(jiān)聽到用戶撥打的是1314的時候,就進行下面的操作,你可以把撥打的號碼做成參數(shù)的形式,讓用戶可配置Intent i = new Intent(context, LostPr

17、otectedActivity.class);/這個很重要,如果沒有這一句,那就會報錯,這一句是因為我們是在一個Receiver里面啟動一個activity的,但activity的啟動,都是放到一個棧里面的,/但Receiver里面沒有那個棧,所以我們要在這里啟動一個activity,那就必須要指定這行代碼啦i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);setResultData(null);/這行代碼是把廣播的數(shù)據(jù)設(shè)置為null,這樣就不會把剛剛那個號碼撥打出去啦,只會啟動我們的activity2.3.2

18、 自定義對話框需要在styles.xml文件里面寫上所需的對話框的樣式,之后指定樣式dialog=new Dialog(this,R.style.MyDialog);2.4 加密當(dāng)用戶第一次啟動手機防盜功能時,輸入一次登陸密碼,之后每次進入這個功能時,都要輸入之前設(shè)置的登陸密碼。密碼是以MD5加密后放到SharedPreferences里。加密的工具類,邏輯是返回加密后的字節(jié)數(shù)組并把字節(jié)轉(zhuǎn)換成16進制的字符串,如果這個字符串只有一個字符就要補0.MessageDigest messageDigest = MessageDigest.getInstance(MD5);/拿到MD5加密的對象byt

19、e bytes = messageDigest.digest(pwd.getBytes();/返回一個加密后的字節(jié)數(shù)組StringBuffer sb = new StringBuffer();String tmp;for(int i = 0; i bytes.length; i+)tmp = Integer.toHexString(0xff & bytesi);/把字節(jié)轉(zhuǎn)換為16進制的字符串if(tmp.length() = 1)/如果這個字符串,只有一個字符,就要補0sb.append(0 + tmp);elsesb.append(tmp);2.5 優(yōu)化2.5.1 ListView和GridView效率很重要,需要避免在滑動的時候出現(xiàn)了停頓等問題。優(yōu)化是在adapter里面修改。是在進行view繪制的時候進行判斷是否繪制過。2.5.2 Button優(yōu)化樣式,需要把它的Background指定成xml2.6 設(shè)置向?qū)?個xml是向?qū)У慕缑妗?.6.1 切換activity時添加的效果需要通過overridePendingTransition來實現(xiàn)的。2.6.2 定義一個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論