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

下載本文檔

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

文檔簡(jiǎn)介

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

2、態(tài)監(jiān)控,滿足用戶對(duì)無(wú)響應(yīng)占資源的進(jìn)程結(jié)束機(jī)制。但不允許用戶結(jié)束系統(tǒng)進(jìn)程。1.6 流量管理流量管理實(shí)現(xiàn)對(duì)各進(jìn)程訪問(wèn)網(wǎng)絡(luò)數(shù)據(jù)量的監(jiān)控。1.7 系統(tǒng)優(yōu)化系統(tǒng)優(yōu)化實(shí)現(xiàn)優(yōu)化系統(tǒng),對(duì)系統(tǒng)開(kāi)機(jī)項(xiàng)進(jìn)行優(yōu)化、系統(tǒng)垃圾清理。1.8 隱私空間隱私空間實(shí)現(xiàn)用戶保存一些重要的文件,訪問(wèn)需要獨(dú)立密碼。1.9 高級(jí)工具高級(jí)工具實(shí)現(xiàn)一些日常需要的幫助。1.10 設(shè)置中心設(shè)置中心實(shí)現(xiàn)用戶對(duì)操作習(xí)慣的設(shè)置,如界面顏色、升級(jí)服務(wù)、程序鎖、退出等操作。二、項(xiàng)目分析2.1 主界面新建類SplashActivity設(shè)置不要提示標(biāo)題欄并且全屏顯示。檢查是否升級(jí)版本。 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(版本號(hào) + 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(升級(jí)提醒);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卡不可用,請(qǐng)插入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, 獲取更新信息異常,請(qǐng)稍后再試, 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 版本號(hào)未知;2.2 與服務(wù)器的交互2.2.1 tomcat配置好之后在update.xml里面添加一下內(nèi)容配置好服務(wù)器。其中這里的ip地址一定要寫你服務(wù)器所在的電腦的ip地址,需要在Security這個(gè)目錄下面放置一下new.apk的,用來(lái)更新的。1.0這里寫一些這個(gè)版本的特點(diǎn):8080/Security/new.apk2

12、.2.2 交互地址存起來(lái),在項(xiàng)目的values目錄下面新建一個(gè)config.xml文件 :8080/Security/update.xml2.2.3需要用一個(gè)model用來(lái)存放輸入的更新信息,并且需要新建類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更新的邏輯和主頁(yè)面下載apk需要另開(kāi)一個(gè)線程下載,新建類。有安裝邏輯后,用一個(gè)內(nèi)部類用來(lái)啟動(dòng)另一個(gè)線程下載。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è)置自定義對(duì)話框與啟動(dòng)activity2.3.1 在手機(jī)防盜界面設(shè)置一個(gè)快捷啟動(dòng)方式,就是在撥打電

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

17、otectedActivity.class);/這個(gè)很重要,如果沒(méi)有這一句,那就會(huì)報(bào)錯(cuò),這一句是因?yàn)槲覀兪窃谝粋€(gè)Receiver里面啟動(dòng)一個(gè)activity的,但activity的啟動(dòng),都是放到一個(gè)棧里面的,/但Receiver里面沒(méi)有那個(gè)棧,所以我們要在這里啟動(dòng)一個(gè)activity,那就必須要指定這行代碼啦i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);setResultData(null);/這行代碼是把廣播的數(shù)據(jù)設(shè)置為null,這樣就不會(huì)把剛剛那個(gè)號(hào)碼撥打出去啦,只會(huì)啟動(dòng)我們的activity2.3.2

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

19、e bytes = messageDigest.digest(pwd.getBytes();/返回一個(gè)加密后的字節(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進(jìn)制的字符串if(tmp.length() = 1)/如果這個(gè)字符串,只有一個(gè)字符,就要補(bǔ)0sb.append(0 + tmp);elsesb.append(tmp);2.5 優(yōu)化2.5.1 ListView和GridView效率很重要,需要避免在滑動(dòng)的時(shí)候出現(xiàn)了停頓等問(wèn)題。優(yōu)化是在adapter里面修改。是在進(jìn)行view繪制的時(shí)候進(jìn)行判斷是否繪制過(guò)。2.5.2 Button優(yōu)化樣式,需要把它的Background指定成xml2.6 設(shè)置向?qū)?個(gè)xml是向?qū)У慕缑妗?.6.1 切換activity時(shí)添加的效果需要通過(guò)overridePendingTransition來(lái)實(shí)現(xiàn)的。2.6.2 定義一個(gè)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論