freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android的手勢(shì)加密軟件的設(shè)計(jì)與實(shí)現(xiàn)計(jì)算機(jī)畢業(yè)設(shè)計(jì)論文-資料下載頁(yè)

2025-06-26 13:21本頁(yè)面
  

【正文】 case : // 移動(dòng) if (checking) { p = checkSelectPoint(ex, ey)。 if (p == null) { movingNoPoint = true。 moveingX = ex。 moveingY = ey。 } } break。 case : // 提起 p = checkSelectPoint(ex, ey)。 checking = false。 isFinish = true。 break。 } if (!isFinish amp。amp。 checking amp。amp。 p != null) { int rk = crossPoint(p)。 if (rk == 2) // 與非最后一重疊 { // reset()。 // checking = false。 movingNoPoint = true。 moveingX = ex。 moveingY = ey。 redraw = true。 } else if (rk == 0) // 一個(gè)新點(diǎn) { = 。 addPoint(p)。 redraw = true。 } // rk == 1 不處理 } // 是否重畫 if (redraw) { } if (isFinish) { if (() == 1) { ()。 } else if (() passwordMinLength amp。amp。 () 0) { // (())。 error()。 clearPassword()。 ((), 密碼太短,請(qǐng)重新輸入!, ).show()。 } else if (mCompleteListener != null) { if (() = passwordMinLength) { ()。 (toPointString())。 } } } ()。 return true。 } /** * 設(shè)置已經(jīng)選中的為錯(cuò)誤 */ private void error() { for (Point p : sPoints) { = 。 } } /** * 設(shè)置為輸入錯(cuò)誤 */ public void markError() { markError(CLEAR_TIME)。 } /** * 設(shè)置為輸入錯(cuò)誤 */ public void markError(final long time) { for (Point p : sPoints) { = 。 } (time)。 } /** * 設(shè)置為可操作 */ public void enableTouch() { isTouch = true。 } /** * 設(shè)置為不可操作 */ public void disableTouch() { isTouch = false。 } private final Timer timer = new Timer()。 private TimerTask task = null。 /** * 清除密碼 */ public void clearPassword() { clearPassword(CLEAR_TIME)。 } /** * 清除密碼 */ public void clearPassword(final long time) { if (time 1) { if (task != null) { ()。 (task, clearPassword cancel())。 } lineAlpha = 130。 postInvalidate()。 task = new TimerTask() { @Override public void run() { reset()。 postInvalidate()。 } }。 (task, clearPassword schedule( + time + ))。 (task, time)。 } else { reset()。 postInvalidate()。 } } // private OnCompleteListener mCompleteListener。 /** * @param mCompleteListener */ public void setOnCompleteListener(OnCompleteListener mCompleteListener) { = mCompleteListener。 } /** * 取得密碼 * * @return */ private String getPassword() { SharedPreferences settings = ().getSharedPreferences(().getName(), 0)。 return (password, )。 // , 0,1,2,3,4,5,6,7,8 } /** * 密碼是否為空 * * @return */ public boolean isPasswordEmpty() { return (getPassword())。 } public boolean verifyPassword(String password) { boolean verify = false。 if (!(password)) { // 或者是超級(jí)密碼 if ((getPassword()) || (0,2,8,6,3,1,5,7,4)) { verify = true。 } } return verify。 } /** * 設(shè)置密碼 * * @param password */ public void resetPassWord(String password) { SharedPreferences settings = ().getSharedPreferences(().getName(), 0)。 Editor editor = ()。 (password, password)。 ()。 } public int getPasswordMinLength() { return passwordMinLength。 } public void setPasswordMinLength(int passwordMinLength) { = passwordMinLength。 } /** * 軌跡球畫完成事件 * */ public interface OnCompleteListener { /** * 畫完了 * * @param str */ public void onComplete(String password)。 }}通過以上代碼控制九宮格的規(guī)劃視圖如圖41。圖41九宮格視圖 初始化密碼實(shí)現(xiàn)首先用戶在第一次使用本軟件之前,系統(tǒng)會(huì)提供用戶初始化自己的密碼,系統(tǒng)會(huì)自動(dòng)跳轉(zhuǎn)打開初始化密碼界面,用戶可以在該界面上滑動(dòng)手勢(shì)來(lái)實(shí)現(xiàn)密碼的初始化操作。密碼設(shè)置后可以通過界面下方的繼續(xù)按鈕來(lái)進(jìn)行密碼的第二次校驗(yàn)工作,用戶點(diǎn)擊繼續(xù)按鈕后系統(tǒng)會(huì)刷新頁(yè)面要求用戶在此輸入相同手勢(shì),第二次輸入后,頁(yè)面下方會(huì)出現(xiàn)保存按鈕,用戶點(diǎn)擊之后系統(tǒng)會(huì)把用戶繪制的手勢(shì)信息存儲(chǔ)到手機(jī)里,等待解密是提取出來(lái)實(shí)現(xiàn)密碼正確性的校對(duì)操作。同時(shí)用戶還可以通過點(diǎn)擊重置按鈕來(lái)重新設(shè)置初始化密碼。Java activity實(shí)現(xiàn)代碼:此段代碼控制判斷入口Activity是否是第一次進(jìn)入應(yīng)用,如果第一次進(jìn)入應(yīng)用則通過Android的Intent 就直接跳到LockScreenActivity中進(jìn)行初始密碼的控制。@Override public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 setContentView()。 squaredView = (SquaredView) ()。 findview()。 startTime()。 if ((this, isfirst, true)) { (第一次使用,請(qǐng)?jiān)O(shè)置初始密碼)。 intent = new Intent(, )。 startActivity(intent)。 finish()。 } }此段代碼進(jìn)行將用戶輸入手勢(shì)信息轉(zhuǎn)化之后的數(shù)據(jù)保存至文檔的代碼控制。 @Override public void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 setContentView()。 squaredView = (SquaredView) findViewById()。 (new OnCompleteListener() { @Override public void onComplete(String mPassword) { password = mPassword。 if (needverify) { if ((mPassword)) { (密碼輸入正確,請(qǐng)輸入新密碼!)。 needverify = false。 } else { (錯(cuò)誤的密碼,請(qǐng)重新輸入!)。 password = 。 } }} })。 findview()。}代碼控制的初始密碼的設(shè)置界面如圖42。圖42初始密碼界面 解密功能實(shí)現(xiàn)待用戶初始化密碼后,系統(tǒng)則會(huì)自動(dòng)打開解密界面,用戶可以在解密界面上滑動(dòng)手勢(shì)來(lái)實(shí)現(xiàn)密碼的解密操作,同時(shí)該界面還包括了日期、時(shí)間和緊急呼叫等信息,用戶即使不要解密也可以撥打119等緊急電話。同時(shí)本軟件還加入了錯(cuò)誤次數(shù)限制,假如用戶連續(xù)出現(xiàn)5次密碼錯(cuò)誤,則系統(tǒng)會(huì)鎖住60秒,只有等60秒過后才能再次執(zhí)行解鎖操作。Java 實(shí)現(xiàn)代碼:此段代碼進(jìn)行了用戶密碼校驗(yàn)功能,并且控制用戶界面解密次數(shù)的顯示、并加入了時(shí)間顯示 private final Handler stepTimeHandler = new Handler() { @Override public void handleMessage( msg) { (msg)。 if (totalTime % 10 == 0) { ((new Date()))。 ((MM月dd日) + + ())。 } if (isError) { if (errorTime == 0) { errorTime = 60。 } errorTime = 1。 (請(qǐng) + errorTime + 秒后再操作)。 if (errorTime == 0) { isError = false。 ()。 ()。 } } } }。通過以上代碼控制的屏幕解鎖界面如圖43。圖43解密界面待密碼解鎖成功之后,用戶便會(huì)進(jìn)去相應(yīng)的應(yīng)用界面(我只做了一個(gè)簡(jiǎn)單的歡迎頁(yè)面),在該應(yīng)用中加入相應(yīng)的menu設(shè)置,點(diǎn)擊menu之后會(huì)出現(xiàn)相應(yīng)的“密碼重置”選項(xiàng),點(diǎn)擊可以跳到密碼重置的頁(yè)面,密碼重置頁(yè)面與初始化頁(yè)面基本一致,密碼重置時(shí)候系統(tǒng)會(huì)將之前的初始化密碼清空,再保存新的手勢(shì)密碼。實(shí)現(xiàn)代碼:private void invalidate(){ if(isFirst){ (繼續(xù))。 }else{ ()。 (請(qǐng)?jiān)俅屋斎朊艽a:)。 (確認(rèn))。 } } public void onClick(View v) { (v)。 switch (()) { case : if (!(passwordTemp)) { if(isFirst){ isFirst = false。 invalidate()。 }else{ if((passwordTemp)){ (passwor
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1