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

正文內(nèi)容

基于android的手機(jī)應(yīng)用開(kāi)發(fā)-閱讀頁(yè)

2024-12-26 02:31本頁(yè)面
  

【正文】 義為常量列數(shù)設(shè)成 10行數(shù)設(shè)成 12其中行數(shù) 和列數(shù)包括邊界也就是說(shuō)實(shí)際上棋盤(pán)大小為 810 圖片大小設(shè)置成 45 private Main app 這個(gè)是對(duì)程序 activity 的一個(gè)引用后面用得到 private GameView gameView 這個(gè)變量上面提到的自定義的視圖用它來(lái)呈現(xiàn)游戲界面 private int[][]map 這是保存程序的布局的數(shù)組前面視圖中的 map 數(shù)組只是對(duì)這個(gè)數(shù)組的一個(gè)引用我們?cè)诳刂破鳛樗峙淇臻g生成初始化布局 private List path new ArrayList 這個(gè)變量在視圖中提到過(guò)是保存連線的起始點(diǎn)及折 點(diǎn) 對(duì)界面的刷新有兩部分一個(gè)是為了實(shí)現(xiàn)連線消除動(dòng)畫(huà)對(duì) GameView 延時(shí)刷新另一部分是更新游戲剩余時(shí)間這部分需要有一個(gè) Timer由于 Timer會(huì)另起一個(gè)線程而刷新界面需要在 UI 線程中執(zhí)行所以程序用到了 Handler 這兩部分刷新我們通過(guò)給一個(gè)定義好的 Handler 發(fā)不同的消息實(shí)現(xiàn) 定義了 RefreshHandler 和它的一個(gè)實(shí)例 redrawHandler 其中 sleep 方法實(shí)現(xiàn)了延時(shí)刷新功能在 handleMessage 方法中對(duì)這兩種消息分別處理游戲視圖延時(shí)刷新后需要判斷是否已經(jīng)完全消除即 map數(shù)組元素全為 0如果 是這樣則通過(guò)將activity 狀態(tài)置為 STATE_WIN 回到菜單否則需要判斷游戲是否還能往下進(jìn)行來(lái)決定是否需要調(diào)整布局 對(duì)于游戲的倒計(jì)時(shí)和幫助次數(shù)的更新這里通過(guò)了一個(gè) TimerTask 來(lái)實(shí)現(xiàn)TimerTask 是對(duì)于游戲的倒計(jì)時(shí)和幫助次數(shù)的更新還需要更新剩余時(shí)間剩余時(shí)間的計(jì)算方 remainTime totalTime SystemcurrentTimeMillis startTime 1000 剩余時(shí)間的計(jì)算方法 SystemcurrentTimeMillis 計(jì)時(shí)方法是毫秒計(jì)時(shí)法得除以 1000 才是秒計(jì)時(shí) 這里定義了游戲總時(shí)間為 200s 在 TimerTask 中計(jì)算出游戲剩余時(shí)間并向redrawHandler 發(fā)送消息 在游戲控制器中提供了 startGame 方法用來(lái)開(kāi)始一個(gè)新的游戲 public void startGame Main m generateMap help 100 幫助次數(shù)為 100 remainTime totalTime resume m 可以看到在 startGame方法中先調(diào)用了 generateMap來(lái)生成游戲布局將幫助次數(shù)和剩余時(shí)間變量進(jìn)行初始化之后調(diào)用了 resume 方法其實(shí)開(kāi)始一個(gè)新游戲和恢復(fù)游戲的區(qū)別就在于前者對(duì)游戲數(shù)據(jù)進(jìn)行初始化而后者這些數(shù)據(jù)已經(jīng)有了值如果你想對(duì)游戲數(shù)據(jù)持久化除了 activity 中的游戲狀態(tài)還需要保存控制其中的maphelp以及 remainTime變量 Resume是繼續(xù)一個(gè)游戲的方法游戲暫停時(shí)計(jì)時(shí)器停止計(jì)時(shí)在 resume 方法中實(shí)例化并初始化了 GameView 類(lèi) Pause 和 resume 是對(duì)應(yīng)的不過(guò) pause 方法很簡(jiǎn)單只需要把 timer 停掉在resume方法中實(shí)例化并初始化了 GameView類(lèi)并將這個(gè)視圖放到在 xml文件中定義的 LinerLayout 點(diǎn)的位置上在這里注冊(cè)了 GameView 的 OnItemClickListener監(jiān)聽(tīng)記錄開(kāi)始時(shí)間并每隔 100ms 啟動(dòng)一次前面定義的 TimerTask itemClickListener方法中需要調(diào)用 link方法其中 link方法是連連看的核心算法判斷兩個(gè)棋子是否能連如果能連將連線起始點(diǎn)和折點(diǎn)放到 path 變量中g(shù)enerateMap 是生成初始化布局的方法其中要調(diào)用 shuffle 方法 這個(gè)算法選將棋子按順序排好再隨即交換來(lái)大亂布局循環(huán)變量都是從 1 到定義的長(zhǎng)度減 1 不對(duì)邊界處理其中 shuffle 方法 RefreshHandler 定義中也要調(diào)用在布局無(wú)解的情況也需要調(diào)用 die 是判斷布局無(wú)解的方法這里用了遍歷算法但稍做了點(diǎn)優(yōu)化減少了一個(gè)循環(huán)次數(shù)我們的期盼不是很大這樣遍歷起來(lái)也比較快這里同樣用到了 link 方法 link方法同前面算法里所說(shuō)的一樣這里分了 3種情況不過(guò)其實(shí)有最后一種情況就夠了前面兩種情況可以看作最后一種情況的特例在確認(rèn)能夠相連后把起始點(diǎn)和折點(diǎn)放到 path 變量中去其中用到了 linkD 方法這個(gè)方法判斷兩個(gè)棋子是否能直接相連 判斷兩個(gè)棋子是否能直連比較簡(jiǎn)單分為橫連和豎連兩種情況在 link 函數(shù)中還 用到了 expandH和 expandV兩個(gè)方法這兩個(gè)方法分別對(duì)應(yīng)前面算法中提到的水平掃描延伸和垂直延伸結(jié)果放到定義的 ArryList 中 需要特別說(shuō)明的是由于本論文傾向于 UI 方面的介紹對(duì)于每一種算法的具體實(shí)現(xiàn)方法這里不作詳細(xì)說(shuō)明第章 31 Android 多媒體開(kāi)發(fā)背景介紹 Android的核心代碼在去年 3月底有了一次比較重大的改動(dòng)尤其是多媒體方面的改動(dòng)比較大主要目的是為了更好地實(shí)現(xiàn) Camcoeder 以及進(jìn)一步實(shí)現(xiàn) Video Telephony 這些改動(dòng)也是軟硬件協(xié)調(diào)結(jié)構(gòu)和性能這種的一個(gè)結(jié)果 Open Core 是 Android 多媒體框架的核心所有 Android 平臺(tái)的音頻視頻的采集以及播放等操作都是通過(guò)它來(lái)實(shí)現(xiàn)他也被稱為 PVPacket VideoPacket Video是一家專(zhuān)門(mén)提供多媒體解決方案的公司程序員可以通過(guò) Open Core方便快速地開(kāi)發(fā)出想要的多媒體應(yīng)用程序例如錄音播放回放視頻會(huì)議流媒體播放等等 Open Core 是一個(gè)多媒體的框架從宏觀上來(lái)看它主要包含了兩大方面的內(nèi)容 1PVPlayer提供媒體播放器的功能完成各種音頻 Audio視頻 Video流的回放Playerback 功能 2PVAuthor 提供媒體流 記錄的功能完成各種音頻視頻流以及靜態(tài)圖像的捕獲功能 PVPlayer 和 PVAuthor以 SDK 的形式提供給開(kāi)發(fā)者可以在這個(gè) SDK 智商構(gòu)建多種應(yīng)用程序和服務(wù)在移動(dòng)終端中常常使用多媒體應(yīng)用程序例如媒體播放器照相機(jī)錄像機(jī)錄音機(jī)等等事實(shí)上 Open Core 中包含的內(nèi)容非常多從播放的角度PVPlayer 輸出的 Source 是文件或者網(wǎng)絡(luò)媒體流輸出 Sink 到音頻視頻的輸出設(shè)備其基本功能包含了媒體流控制文件解析音頻視頻流的解碼 Decode 等方面的內(nèi)容除了從文件中播放媒體文件之外還包含了與網(wǎng)絡(luò)相關(guān)的 RTSP 流在媒體流記錄的方 面 PVAuthor 輸入的是照相機(jī)麥克風(fēng)等設(shè)備輸出的是各種文件包含了流的同步音頻視頻流的編碼 Encode 以及文件的寫(xiě)入等功能 32 MediaRecorder 類(lèi)的介紹 錄制音頻的程序要多次用到 MediaRecorder 類(lèi)故在這里做一下詳細(xì)介紹MediaRecorder類(lèi)用來(lái)進(jìn)行媒體采樣包括音頻和食品 Media作為狀態(tài)機(jī)運(yùn)行需要設(shè)置不同的參數(shù)比如原設(shè)備和格式設(shè)置后可執(zhí)行任何時(shí)間長(zhǎng)度的錄制指導(dǎo)用戶停止 MediaRecorder 類(lèi)的工作流程如下 圖 31 MediaRecorder 類(lèi)的工作流程圖 MediaRecorder 在底層同樣是通過(guò) Open Core 來(lái)實(shí)現(xiàn)的但是要開(kāi)發(fā)應(yīng)用時(shí)需要使用 Android 為我們提供的 Java 接口 33 設(shè)計(jì)思路概述 要實(shí)現(xiàn)視頻錄制的功能首先我們要研究一下怎么實(shí)現(xiàn)音頻的錄制所以這個(gè)程序我也是分兩部分完成的先實(shí)現(xiàn)了音頻的錄制然后再實(shí)現(xiàn)視頻的錄制現(xiàn)在幾乎每個(gè)手機(jī)都有錄音功能其用途也很廣比如我們需要記錄某些重要的內(nèi)容時(shí)手頭又沒(méi)有筆之類(lèi)的工具這時(shí)我們就可以通過(guò)錄音功能就愛(ài)你過(guò)通話內(nèi)容錄制下來(lái)而且我們通常可以將自己的錄音設(shè)置為個(gè)性鈴聲等現(xiàn)在我們要實(shí)現(xiàn)錄音功能就得使用 MediaRecorder 類(lèi)這里將 實(shí)現(xiàn)一個(gè)擁有簡(jiǎn)易音頻錄制功能的程序錄制一個(gè) Media 音頻資源大致上可以分為 7 個(gè)步驟 1 使用 new 創(chuàng)建一個(gè)實(shí)例 androidmediaMediaRecorder 2 創(chuàng)建一個(gè) androidcontentContentValues 實(shí)例并設(shè)置一些標(biāo)準(zhǔn)的屬性像TITLETIMESTAMP 最重要的是 MIME_TYPE 3創(chuàng)建一個(gè)要放置的文件的路徑這可以通過(guò) androidcontentContentResolver在內(nèi)容數(shù)據(jù)庫(kù)中來(lái)創(chuàng)建一個(gè)入口并且自動(dòng)地標(biāo)志一個(gè)取得這個(gè)文件的路徑 4 使用 MediaRecordersetAudioSource 方法來(lái)設(shè)置音頻資源這將會(huì)很可能使用到 MediaRecorderAudioSourceMIC 5 使用 MediaRecordersetOutputFormat 方法設(shè)置輸出文件格式 6 用 MediaRecordersetAudioEncoder 方法來(lái)設(shè)置音頻編碼 7 最后 prepare 和 start 所錄制的音頻 stop 和 release 在要結(jié)束的時(shí)候調(diào)用在最新的 Android 15 版本中開(kāi)始支持視頻錄制功能通過(guò) MediaRecorder 類(lèi)的相關(guān)方法可以錄制視頻保存成為 MPEG4H263 和 H264 編碼的視頻有關(guān)的開(kāi)發(fā)文檔中 MediaRecorder 類(lèi) 加 入 了MediaRecorderVideoEncoderMediaRecorderVideoSource 類(lèi)提供了setPreviewDisplay Surface sv 這個(gè)錄制預(yù)覽窗口但需要注意的是執(zhí)行前需要prepare 下其中 setVideoFrameRate int rate 可以設(shè)置幀率 而 setVideoSize int width int height 設(shè) 置 視 頻 的 分 辨 率 最 后 setVideoSource int video_source 是設(shè)置視頻源目前只能為 Camera等到 Android支持外接攝像頭時(shí)會(huì)有新的方式由于模擬器上沒(méi)有 sd 卡所以視頻錄制的部分并不能在模擬器上演示只能在真機(jī)上進(jìn)行調(diào)試測(cè)試結(jié)果也是成功的如圖所示 35 代碼的實(shí)現(xiàn)與分析 這里僅做簡(jiǎn)要的介紹詳細(xì)地代碼見(jiàn)附錄 2 private Button StartButton private Button StopButton 設(shè) 置 了 兩 個(gè) 按 鈕 一 個(gè) 是 開(kāi) 始 鍵 一 個(gè) 是 停 止 鍵 if EnvironmentgetExternalStorageState equals androidosEnvironmentMEDI A_MOUNTED 這個(gè)條件語(yǔ)句用來(lái)檢測(cè)是否存在 SD 卡如果不存在屏幕就會(huì)提示沒(méi)有 SD 卡 mRecAudioFile FilecreateTempFile strTempFileamr mRecAudioPath 這條語(yǔ)句用來(lái)創(chuàng)建錄音文件 mMediaRecorder new MediaRecorder 實(shí)例化 MediaRecordermMediaRecordersetAudioSource MediaRecorderAudioSourceMIC 設(shè) 置 麥 克 風(fēng) mMediaRecordersetOutputFormat MediaRecorderOutputFormatDEFAULT 設(shè)置輸出文件格式 mMediaRecordersetAudioEncoder MediaRecorderAudioEncoderDEFAULT 設(shè) 置 音 頻 文 件 的 編 碼 mMediaRecordersetOutputFile mRecAudioFilegetAbsolutePath 設(shè)置輸出文件的路徑 Android 多媒體錄制中的錄像就是 AudioVideo 所以還要加點(diǎn) 東西 path sdcardv3gp recordersetVideoSource MediaRecorderVideoSourceCAMERA recordersetAudioSource MediaRecorderAudioSourceMIC recordersetOutputFormat MediaRecorderOutputFormatTHREE_GPP recordersetVideoSize 176144 recordersetVideoFrameRate 15 recordersetVideoEncoder MediaRecorderVideoEncoderH263 recordersetAudioEncoder MediaRecorderAudioEncoderAMR_NB recordersetOutputFile path 每行代碼的作用與錄制音頻的代碼相類(lèi)似這里不作詳細(xì)說(shuō)明 第章 1 配置環(huán)境變量右鍵我的電腦 屬性 高級(jí) 環(huán)境變量 選擇系統(tǒng)變量里面的 path 點(diǎn)編輯 2 這時(shí)出現(xiàn)對(duì)話框變量名是 path 變量值就是要找到你的 JDK 所安裝的目錄下的 bin 文件夾的路徑注意如果自己的 path 還有其他的值的話要用來(lái)區(qū)分英文分號(hào)然后點(diǎn)確定編輯完成 3 還需要配置另一個(gè)環(huán)境變量也是系統(tǒng)變量里面的選擇新建然后在變量名里面寫(xiě)入 classpath變量值里面寫(xiě)入你的 JDK所安裝的目錄下的 lib文件夾下的toolsjar 和 dtjar 然后點(diǎn)確定再確定就完成了 JDK 的安裝和環(huán)境變量的配置了Layout 顯示如下 圖 41 mainxml 的 Layout 顯示 。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1