一種多媒體數(shù)據(jù)的隨機(jī)播放方法和裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例提供了一種多媒體數(shù)據(jù)的隨機(jī)播放方法和裝置,該方法包括:在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的第一多媒體數(shù)據(jù);在連續(xù)的區(qū)間中記錄所述第一多媒體數(shù)據(jù)在所述多媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào);在所述區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值;查詢所述目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù)序號(hào);播放所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的第一多媒體數(shù)據(jù)。本發(fā)明實(shí)施例減少了循環(huán)遍歷的次數(shù),減少了時(shí)間復(fù)雜度,同時(shí),并沒有更改播放列表及其長(zhǎng)度這兩個(gè)變量,避免增加模塊之間的耦合度,避免模塊之間相互產(chǎn)生影響,因此,并沒有影響到其他模塊的使用,保證了安全性。
【專利說明】
-種多媒體數(shù)據(jù)的隨機(jī)播放方法和裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及計(jì)算機(jī)處理的技術(shù)領(lǐng)域,特別是設(shè)及一種多媒體數(shù)據(jù)的隨機(jī)播放方法 和一種多媒體數(shù)據(jù)的隨機(jī)播放裝置。
【背景技術(shù)】
[0002] 隨著移動(dòng)通信技術(shù)的發(fā)展,電子產(chǎn)品在人們的生活、學(xué)習(xí)、工作中的應(yīng)用越來越 多。
[0003] 在電子產(chǎn)品中,用戶經(jīng)常隨機(jī)播放音樂、壁紙、屏保等多媒體數(shù)據(jù)。
[0004] 在隨機(jī)播放時(shí),需要使用播放列表及其長(zhǎng)度運(yùn)兩個(gè)變量,而運(yùn)兩個(gè)變量的變化設(shè) 及多個(gè)模塊,為了減少禪合度,避免模塊之間相互產(chǎn)生影響,現(xiàn)有隨機(jī)播放時(shí)不會(huì)改變運(yùn)兩 個(gè)變量的值,多次進(jìn)行循環(huán)遍歷,時(shí)間復(fù)雜度比較高。
【發(fā)明內(nèi)容】
[0005] 鑒于上述問題,為了解決上述隨機(jī)播放的時(shí)間復(fù)雜度比較高的問題,本發(fā)明實(shí)施 例提出了一種多媒體數(shù)據(jù)的隨機(jī)播放方法和相應(yīng)的一種多媒體數(shù)據(jù)的隨機(jī)播放裝置。
[0006] -方面,本發(fā)明實(shí)施例公開了一種多媒體數(shù)據(jù)的隨機(jī)播放方法,包括:
[0007] 在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的第一多媒體數(shù)據(jù);
[000引在連續(xù)的區(qū)間中記錄所述第一多媒體數(shù)據(jù)在所述多媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào);
[0009] 在所述區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值;
[0010] 查詢所述目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù)序號(hào);
[0011] 播放所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的第一多媒體數(shù)據(jù)。
[0012] 另一方面,本發(fā)明實(shí)施例公開了一種多媒體數(shù)據(jù)的隨機(jī)播放裝置,包括:
[0013] 多媒體數(shù)據(jù)識(shí)別模塊,用于在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的第一多媒體數(shù) 據(jù);
[0014] 數(shù)據(jù)序號(hào)記錄模塊,用于在連續(xù)的區(qū)間中記錄所述第一多媒體數(shù)據(jù)在所述多媒體 數(shù)據(jù)中的數(shù)據(jù)序號(hào);
[0015] 目標(biāo)數(shù)值隨機(jī)生成模塊,用于在所述區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值;
[0016] 數(shù)據(jù)序號(hào)查詢模塊,用于查詢所述目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù)序號(hào);
[0017] 多媒體數(shù)據(jù)播放模塊,用于播放所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的第一多媒體數(shù)據(jù)。
[001引本發(fā)明實(shí)施例包括W下優(yōu)點(diǎn):
[0019]本發(fā)明實(shí)施例在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的第一多媒體數(shù)據(jù),在連續(xù)的區(qū) 間中記錄第一多媒體數(shù)據(jù)在多媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào),在區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù) 值,播放該目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù)序號(hào)的第一多媒體數(shù)據(jù),減少了循環(huán)遍歷的次數(shù),減少了時(shí) 間復(fù)雜度,同時(shí),并沒有更改播放列表及其長(zhǎng)度運(yùn)兩個(gè)變量,避免增加模塊之間的禪合度, 避免模塊之間相互產(chǎn)生影響,因此,并沒有影響到其他模塊的使用,保證了安全性。
【附圖說明】
[0020]圖1是本發(fā)明的一種多媒體數(shù)據(jù)的隨機(jī)播放方法實(shí)施例的步驟流程圖;
[0021 ]圖2是本發(fā)明實(shí)施例的一種未播放的第一多媒體數(shù)據(jù)的識(shí)別流程圖;
[0022] 圖3是本發(fā)明實(shí)施例的一種第一多媒體數(shù)據(jù)的數(shù)據(jù)序號(hào)的記錄流程圖;
[0023] 圖4是本發(fā)明的一種多媒體數(shù)據(jù)的隨機(jī)播放裝置實(shí)施例的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0024] 為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí) 施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
[0025] 參照?qǐng)D1,示出了本發(fā)明的一種多媒體數(shù)據(jù)的隨機(jī)播放方法實(shí)施例的步驟流程圖, 具體可W包括如下步驟:
[0026] 步驟101,在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的第一多媒體數(shù)據(jù);
[0027] 在具體實(shí)現(xiàn)中,本發(fā)明實(shí)施例可W應(yīng)用在電子設(shè)備中,具體可W包括移動(dòng)設(shè)備,例 如,手機(jī)、平板電腦、智能手表等等,也可W包括固定設(shè)備,例如,電視、個(gè)人電腦等等,本發(fā) 明實(shí)施例對(duì)此不加 W限制。
[00巧]運(yùn)些電子設(shè)備的操作系統(tǒng)可W包括An化oid(安卓)、I0S、Windows陸one、Windows 等等,通常可W支持各種應(yīng)用的運(yùn)行,例如,音頻播放器、視頻播放器等等。
[0029] 在運(yùn)些電子設(shè)備中,預(yù)先存儲(chǔ)有多媒體數(shù)據(jù),該多媒體數(shù)據(jù)包括圖像數(shù)據(jù)、音頻數(shù) 據(jù)、視頻數(shù)據(jù),等等,經(jīng)常用于隨機(jī)播放。
[0030] 例如,對(duì)于圖像數(shù)據(jù),其可W表現(xiàn)為壁紙、屏保等形式。
[0031] 又例如,對(duì)于音頻數(shù)據(jù),其可W表現(xiàn)為音樂、歌曲等形式。
[0032] 又例如,對(duì)于視頻數(shù)據(jù),其可W表現(xiàn)為MV(Music Video,音樂錄像帶)、電影等形 式。
[0033] 隨機(jī)播放的要求,一般是隨機(jī)播放播放列表中的多媒體數(shù)據(jù),不能重復(fù)播放之前 已播放過的多媒體數(shù)據(jù),直至所有多媒體數(shù)播放結(jié)束,因此,下一個(gè)播放對(duì)象一般是未播放 的多媒體數(shù)據(jù)。
[0034] 在本發(fā)明實(shí)施例中,未播放的多媒體數(shù)據(jù)可W稱之為第一多媒體數(shù)據(jù),此外,已播 放的多媒體數(shù)據(jù)可W稱之為第二多媒體數(shù)據(jù)。
[0035] 在本發(fā)明的一個(gè)實(shí)施例中,如圖2所示,步驟101可W包括如下子步驟:
[0036] 子步驟S11,讀取預(yù)置的多媒體數(shù)據(jù)的播放列表和歷史播放記錄;
[0037] 在隨機(jī)播放中,一般要應(yīng)用幾個(gè)變量:
[003引 1、播放列表 mPlayList[i](i = 0,l,2,3...);
[0039] 播放列表mPlayList中按照一定的順序存放著要播放的所有多媒體數(shù)據(jù)的地址。
[0040] 2、播放列表 mPlayList的長(zhǎng)度為mPlayList len;
[0041 ] 播放列表mPlayList的長(zhǎng)度為mPlayListlen-般指播放列表mPlayList [i]所包含 的多媒體數(shù)據(jù)的數(shù)量。
[0042] 3、播放歷史記錄mHistoiy;
[0043] 播放歷史記錄mHistcxry中存放著已播放的第二多媒體數(shù)據(jù)在播放列表mPlayList
[i ]中的數(shù)據(jù)序號(hào)mPlayPos (又稱下標(biāo))。
[0044] 子步驟S12,按照所述播放列表的長(zhǎng)度創(chuàng)建一數(shù)組;
[0045] 在本發(fā)明實(shí)施例中,依據(jù)播放列表的長(zhǎng)度創(chuàng)建一數(shù)組,即該數(shù)組中鍵值對(duì)(數(shù)組序 號(hào)與數(shù)值)的數(shù)量與該播放列表的長(zhǎng)度相等。
[0046] 在數(shù)組中,數(shù)組序號(hào)一般從0開始遞增,因此,數(shù)組序號(hào)的范圍為0- (1]1口1曰71^131:1^6]1-1),因此,在本發(fā)明實(shí)施例中可^創(chuàng)建數(shù)組化曰。43[;[],其中,1 = 0,1,2, 3,· · ,(mPlayListLen-1)。
[0047] 子步驟S13,從所述歷史播放記錄中讀取已播放的第二多媒體數(shù)據(jù)在所述播放列 表中的數(shù)據(jù)序號(hào);
[0048] 子步驟S14,依次判斷所述數(shù)組序號(hào)與所述數(shù)據(jù)序號(hào)是否匹配;若否,則執(zhí)行子步 驟S15,若是,則執(zhí)行子步驟S16;
[0049] 子步驟S15,將所述數(shù)組序號(hào)的數(shù)值賦值為第一數(shù)值;
[0050] 子步驟S16,將所述數(shù)組序號(hào)的數(shù)值賦值為第二數(shù)值。
[0051] 如果數(shù)組序號(hào)與數(shù)據(jù)序號(hào)不匹配,則可W在該數(shù)組序號(hào)的數(shù)值賦值為表示未播放 的第一多媒體數(shù)據(jù)的第一數(shù)值。
[0052] 如果數(shù)組序號(hào)與數(shù)據(jù)序號(hào)匹配,則可W在該數(shù)組序號(hào)的數(shù)值賦值為表示已播放的 第二多媒體數(shù)據(jù)的第二數(shù)值。
[0053] 通常情況下,為了將第二數(shù)值與數(shù)組序號(hào)區(qū)分,在本發(fā)明實(shí)施例的一個(gè)示例中,第 一數(shù)值可W小于或等于值最小的數(shù)組序號(hào)、大于或等于值最大的數(shù)組序號(hào),假設(shè)第一數(shù)值 為曰,組序號(hào)的范圍為0-(111?1曰7^31:1^6]1-1),貝1|曰《0,曰>111?1曰71^13化6]1-1,即曰是除0- (mPlayListLen-1)之外的任意數(shù)值。
[0054] 當(dāng)?shù)谝粩?shù)值小于或等于值最小的數(shù)組序號(hào)時(shí),第二數(shù)值小于第一數(shù)值;
[0055] 當(dāng)?shù)谝粩?shù)值大于或等于值最大的數(shù)組序號(hào)時(shí),第二數(shù)值大于第一數(shù)值。
[0化6] 假設(shè)第二數(shù)值為b,則當(dāng)a《0時(shí),b<a;當(dāng)曰>111?1日7]^131:]^6]1-1時(shí),b>a。
[0057] 在Amlroid系統(tǒng)中,在java語言中,創(chuàng)建的數(shù)組在初始化之前,所有的數(shù)值均為0。
[0058] 在本發(fā)明實(shí)施例中,為了減少計(jì)算量,可W將第一數(shù)值設(shè)置為0,將第二數(shù)值設(shè)置 為-1,因此,可W在播放歷史記錄mHistory中提取已播放的第二多媒體數(shù)據(jù)的數(shù)組序號(hào),將 數(shù)組中相應(yīng)的數(shù)組序號(hào)對(duì)應(yīng)的數(shù)值設(shè)置為第二數(shù)值-1。
[0059] 步驟102,在連續(xù)的區(qū)間中記錄所述第一多媒體數(shù)據(jù)在所述多媒體數(shù)據(jù)中的數(shù)據(jù) 序號(hào);
[0060] 在具體實(shí)現(xiàn)中,可W在多媒體數(shù)據(jù)中識(shí)別出未播放的第一多媒體數(shù)據(jù),并在連續(xù) 的區(qū)間中記錄其在多媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào),即數(shù)據(jù)序號(hào)之間并未間斷。
[0061 ] 在本發(fā)明的一個(gè)實(shí)施例中,如圖3所示,步驟102可W包括如下子步驟:
[0062] 子步驟S21,在所述數(shù)組中依次讀取所述數(shù)組序號(hào)的數(shù)值;
[0063] 在本發(fā)明實(shí)施例中,可W循環(huán)判斷數(shù)組中數(shù)組序號(hào)的數(shù)值是否為表征未播放的第 一多媒體數(shù)據(jù)的第一數(shù)值,W將數(shù)組序號(hào)(即多媒體數(shù)據(jù)的下標(biāo))賦值至數(shù)組的前Μ個(gè)數(shù)組 序號(hào)的數(shù)值中,組成連續(xù)的區(qū)間。
[0064] 其中,Μ為未播放的第一多媒體數(shù)據(jù)的數(shù)量numUnPlayed,numUnPlayed =播放列表 的長(zhǎng)度mPlaylen-播放歷史記錄的數(shù)量mHistoiy. size。
[0065] 在賦值給前Μ個(gè)數(shù)組序號(hào)的數(shù)值的過程中,每次賦值,可W在數(shù)組中依次讀取數(shù)組 序號(hào)的數(shù)值,所謂依次,是從第一個(gè)數(shù)組序號(hào)(即0)開始讀取數(shù)值,如果該數(shù)值是表征未播 放的第一多媒體數(shù)據(jù)的第一數(shù)值,則賦值,否則,讀取下一個(gè)數(shù)組序號(hào)的數(shù)值,即第二個(gè)數(shù) 組序號(hào)(即1)的數(shù)值,如此遞增,直至讀取識(shí)別表征未播放的第一多媒體數(shù)據(jù)的第一數(shù)值完 畢,然后將運(yùn)個(gè)數(shù)組的數(shù)組序號(hào)賦值給前Μ項(xiàng)中尚未使用此過此賦值的那一項(xiàng),并對(duì)前Μ項(xiàng) 依次運(yùn)樣賦值下去。
[0066] 子步驟S22,識(shí)別所述數(shù)值的屬性;當(dāng)確定所述數(shù)值為第一數(shù)值時(shí),執(zhí)行子步驟 S23;當(dāng)確定所述數(shù)值為第二數(shù)值時(shí),返回執(zhí)行子步驟S21。
[0067] 在本發(fā)明實(shí)施例中,數(shù)值的屬性包括兩個(gè),表征未播放的第一多媒體數(shù)據(jù)的第一 數(shù)值,W及,表征已播放的第二多媒體數(shù)據(jù)的第二數(shù)值。
[0068] 如果數(shù)值的屬性為表征未播放的第一多媒體數(shù)據(jù)的第一數(shù)值,則可W計(jì)算其數(shù)據(jù) 序號(hào)。
[0069] 如果數(shù)值的屬性為表征已播放的第二多媒體數(shù)據(jù)的第二數(shù)值,則可W跳過該數(shù) 值,繼續(xù)循環(huán),讀取下一個(gè)數(shù)值。
[0070] 在具體實(shí)現(xiàn)中,可W將數(shù)值與第一數(shù)值或第二數(shù)值進(jìn)行比較,則可W判斷出該數(shù) 值的屬性。
[0071] 在一個(gè)示例中,如果第一數(shù)值小于或等于值最小的數(shù)組序號(hào)、大于或等于值最大 的數(shù)組序號(hào)。
[0072] 當(dāng)?shù)谝粩?shù)值小于或等于值最小的數(shù)組序號(hào)時(shí),第二數(shù)值小于第一數(shù)值;
[0073] 當(dāng)?shù)谝粩?shù)值大于或等于值最大的數(shù)組序號(hào)時(shí),第二數(shù)值大于第一數(shù)值。
[0074] 則可W判斷數(shù)值是否小于第一數(shù)值(如0);若是,則確定數(shù)值為第二數(shù)值(如-1); 若否,則確定數(shù)值為第一數(shù)值(如0)。
[0075] 當(dāng)然,上述識(shí)別方式只是作為示例,在實(shí)施本發(fā)明實(shí)施例時(shí),若第一數(shù)值、第二數(shù) 值具有其他限制,則可W根據(jù)實(shí)際情況設(shè)置其他識(shí)別方式,本發(fā)明實(shí)施例對(duì)此不加 W限制。 另外,除了上述識(shí)別方式外,本領(lǐng)域技術(shù)人員還可W根據(jù)實(shí)際需要采用其它識(shí)別方式,本發(fā) 明實(shí)施例對(duì)此也不加 W限制。
[0076] 子步驟S23,按照所述數(shù)組序號(hào)計(jì)算所述第一多媒體數(shù)據(jù)在所述播放列表中的數(shù) 據(jù)序號(hào);
[0077] 由于數(shù)組是按照多媒體數(shù)據(jù)的播放列表的長(zhǎng)度進(jìn)行創(chuàng)建的,因此,多媒體數(shù)據(jù)的 數(shù)據(jù)序號(hào)與數(shù)組的數(shù)組序號(hào)存在一定的關(guān)系。
[007引例如,包I建的數(shù)組為 tracks[i],其中,i = 0,l ,2,3,…,(mPlayLis1:Len-l),則i的 值與多媒體數(shù)據(jù)的數(shù)據(jù)序號(hào)相同。
[0079] 子步驟S24,將所述數(shù)據(jù)序號(hào)賦值給所述數(shù)組中前N個(gè)數(shù)組序號(hào)的數(shù)值;
[0080] 在具體實(shí)現(xiàn)中,可W按照順序?qū)?shù)據(jù)序號(hào)賦值給數(shù)組中前N個(gè)數(shù)組序號(hào)的數(shù)值。
[0081] 例如,第一個(gè)識(shí)別到的數(shù)據(jù)序號(hào)賦值給第一個(gè)數(shù)組序號(hào)(如0),第二個(gè)識(shí)別到的數(shù) 據(jù)序號(hào)賦值給第二個(gè)數(shù)組序號(hào)(如1),等等。
[0082] 當(dāng)然,除了順序之外,也可W按照亂序?qū)?shù)據(jù)序號(hào)賦值給數(shù)組中前N個(gè)數(shù)組序號(hào)的 數(shù)值,本發(fā)明實(shí)施例對(duì)此不加 W限制。
[0083] 子步驟S25,判斷是否記錄所述第一多媒體數(shù)據(jù)的數(shù)據(jù)序號(hào)完畢;若是,則執(zhí)行子 步驟S26,若否,則返回執(zhí)行子步驟S21;
[0084] 在每次循環(huán)中,若判斷記錄到的第一多媒體數(shù)據(jù)的數(shù)據(jù)序號(hào)的數(shù)量等于第一多媒 體數(shù)據(jù)的數(shù)量numUnPlayed,則可W認(rèn)為記錄完畢。
[0085] 子步驟S26,結(jié)束記錄所述第一多媒體數(shù)據(jù)在所述多媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào)。
[0086] 若記錄所述第一多媒體數(shù)據(jù)的數(shù)據(jù)序號(hào)完畢,則可W結(jié)束循環(huán)操作。
[0087] 步驟103,在所述區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值;
[0088] 在本發(fā)明實(shí)施例中,可W在連續(xù)的區(qū)間的范圍內(nèi),調(diào)用隨機(jī)函數(shù),生成一目標(biāo)數(shù) 值,即該目標(biāo)數(shù)值大于區(qū)間的起始值,小于區(qū)間的終止值。
[0089] 在具體實(shí)現(xiàn)中,若在數(shù)組tracks[i]的前Μ個(gè)數(shù)組序號(hào)中記錄第一多媒體數(shù)據(jù)的數(shù) 據(jù)序號(hào),則可W在數(shù)組中前Μ個(gè)數(shù)組序號(hào)的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值。
[0090] 步驟104,查詢所述目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù)序號(hào);
[0091] 在本發(fā)明實(shí)施例中,通過目標(biāo)數(shù)值,可W在該區(qū)間中查找到相應(yīng)的數(shù)據(jù)序號(hào)。
[0092] 在具體實(shí)現(xiàn)中,若在數(shù)組tracks[i]的前Μ個(gè)數(shù)組序號(hào)中記錄第一多媒體數(shù)據(jù)的數(shù) 據(jù)序號(hào),則可W在數(shù)組中查詢與目標(biāo)數(shù)值相等的數(shù)組序號(hào),提取所述數(shù)組序號(hào)數(shù)值,作為數(shù) 據(jù)序號(hào)。
[0093] 步驟105,播放所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的第一多媒體數(shù)據(jù)。
[0094] 在具體實(shí)現(xiàn)中,可W在播放列表中讀取該數(shù)據(jù)序號(hào)對(duì)應(yīng)的地址,從該地址加載第 一多媒體數(shù)據(jù)進(jìn)行播放。
[0095] 本發(fā)明實(shí)施例在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的第一多媒體數(shù)據(jù),在連續(xù)的區(qū) 間中記錄第一多媒體數(shù)據(jù)在多媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào),在區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù) 值,播放該目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù)序號(hào)的第一多媒體數(shù)據(jù),減少了循環(huán)遍歷的次數(shù),減少了時(shí) 間復(fù)雜度,同時(shí),并沒有更改播放列表及其長(zhǎng)度運(yùn)兩個(gè)變量,避免增加模塊之間的禪合度, 避免模塊之間相互產(chǎn)生影響,因此,并沒有影響到其他模塊的使用,保證了安全性。
[0096] 為使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實(shí)施例,W下通過具體的示例來說明本發(fā) 明實(shí)施例中多媒體數(shù)據(jù)的隨機(jī)播放方法。
[0097] 假設(shè)總共有5首歌曲,播放列表mPlayList中存放著運(yùn)五首歌曲的地址,即 mPlayList[4],數(shù)據(jù)序號(hào)分別為0、1、2、3、4,播放列表mPlayList的長(zhǎng)度mPlayListlen = 5。 [009引假設(shè)第2首歌曲和第4首歌曲是已播放的歌曲,記錄在播放記錄mHistory中,其對(duì) 應(yīng)的數(shù)據(jù)序號(hào)是1和3。
[0099 ] -、應(yīng)用目前某個(gè)歌曲的隨機(jī)播放方法:
[0100] 1、按照播放列表mPlayList的長(zhǎng)度mPlayListlen創(chuàng)建數(shù)組化acks,并按照數(shù)組序 號(hào)進(jìn)行賦值,tracks[i] = i,i = 0,1,2,3,..., (mPlayListlen-1)。
[0101 ] 在本示例中,由于播放列表mPlayList的長(zhǎng)度mPlayListlen = 5,即可W創(chuàng)建5個(gè)鍵 值對(duì)鍵值對(duì)(數(shù)組序號(hào)與數(shù)值)的數(shù)組tracks[4]:
[0102]_
[0103]~2、從播放歷史記錄mHistory中取出已播放的歌曲的數(shù)據(jù)序號(hào),并在數(shù)組tracks [i]中,將與數(shù)據(jù)序號(hào)相等的數(shù)組序號(hào)的數(shù)值置為-1。
[0104]在本示例中,從播放記錄mHistory中提取已播放的歌曲的數(shù)據(jù)序號(hào)1和3,將數(shù)據(jù) 序號(hào)為1的第二數(shù)值-1賦值給數(shù)組序號(hào)為1的數(shù)值,將數(shù)據(jù)序號(hào)為3的第二數(shù)值-1賦值給數(shù) 組序號(hào)為3的數(shù)值。
[01化]賦值之后的數(shù)組tracks[4]為:
[0106]
[0107] 3、先隨機(jī)生成得到一個(gè)數(shù)值skip(0<ski^numUnPlayed),運(yùn)個(gè)skip表示在所有未 播放的歌曲中第skip首歌曲,遍歷數(shù)組,查找第skip首未播放的歌曲。
[010引假設(shè)skip = 2,設(shè)置中間值k = -l,tracks[++k]<0作為數(shù)值的屬性的判斷條件, skip<0作為終止條件。
[0109] 在第一輪循環(huán)中,tracks [++k] = tracks [ 0 ] <0,運(yùn)個(gè)判斷條件不成立,表示hacks [0 ]的數(shù)值為表征未播放的歌曲的第一數(shù)值。
[0110] 第一輪循環(huán)結(jié)束,k的值加1,skip的值減1,即k = 0,skip = l。
[0111] 由于skip = 1 <0,終止條件不成立,循環(huán)繼續(xù)。
[0112] 在第二輪循環(huán)中,tracks[++k]=化acks[ 1 ]<0,運(yùn)個(gè)判斷條件成立,表示tracks [1 ]的數(shù)值為表征已播放的歌曲的第二數(shù)值,跳過該數(shù)值。
[0113] k的值再加 1,即k = l,第二輪循環(huán)繼續(xù)。
[0114] tracks [++k] = hacks [ 2 ] <0,運(yùn)個(gè)判斷條件不成立,表示tracks [ 2 ]的數(shù)值為表征 未播放的歌曲的第一數(shù)值。
[0115] 第二輪循環(huán)結(jié)束,k的值加1,skip的值減1,即k = 2,skip = 0。
[0116] 由于skip = 0<0,終止條件不成立,循環(huán)繼續(xù)。
[0117] 在第二輪循環(huán)中,tracks[++k]=化acks [3]<0,運(yùn)個(gè)判斷條件成立,表示tracks [1 ]的數(shù)值為表征已播放的歌曲的第二數(shù)值,跳過該數(shù)值。
[011引k的值再加1,即k = 3,第Ξ輪循環(huán)繼續(xù)。
[0119] tracks [++k] = hacks [4] <0,運(yùn)個(gè)判斷條件不成立,表示tracks [4]的數(shù)值為表征 未播放的歌曲的第一數(shù)值。
[0120] 第Ξ輪循環(huán)結(jié)束,k的值加 1,skip的值減1,即k = 4,skip = -l。
[0121] 由于skip = -K0,終止條件成立,循環(huán)結(jié)束。
[0122] 因此,數(shù)組序號(hào)4對(duì)應(yīng)的數(shù)據(jù)序號(hào)為4,即數(shù)據(jù)序號(hào)為4的歌曲為待播放的歌曲。
[0123] 4、播放該數(shù)據(jù)序號(hào)對(duì)應(yīng)的歌曲。
[0124] 在示例中,可W播放第5首歌曲。
[0125] 二、應(yīng)用本發(fā)明實(shí)施例的隨機(jī)播放方法
[01%] 1、按照播放列表mPlayList的長(zhǎng)度mPlayListlen創(chuàng)建數(shù)組化acks,并W區(qū)分已播 放的歌曲和未播放的歌曲為目的進(jìn)行賦值;
[0127] 在本示例中,由于播放列表mPlayList的長(zhǎng)度mPlayListlen = 5,即可W創(chuàng)建5個(gè)鍵 值對(duì)鍵值對(duì)(數(shù)組序號(hào)與數(shù)值)的數(shù)組tracks[4]:
[012 引
[0129] 創(chuàng)建的數(shù)組tracks[4]在初始化之前,所有的數(shù)值均為0。
[0130] 從播放記錄mHistory中提取已播放的歌曲的數(shù)據(jù)序號(hào)1和3。
[0131] 未播放的歌曲的第一數(shù)值設(shè)置為0,已播放歌曲的第二數(shù)值設(shè)置為-1。
[0132] 將數(shù)據(jù)序號(hào)為1的第二數(shù)值-1賦值給數(shù)組序號(hào)為1的數(shù)值,將數(shù)據(jù)序號(hào)為3的第二 數(shù)值-1賦值給數(shù)組序號(hào)為3的數(shù)值。
[0133] 賦值之后的數(shù)組tracks[4]為:
[0134]
[01巧]2、將數(shù)組tracks中數(shù)組序號(hào)為前numUnPlayed項(xiàng)的數(shù)值,賦值為未播放歌曲的數(shù) 組序號(hào),其中,numUnPlayed =播放列表的長(zhǎng)度mPlaylen-播放歷史記錄的數(shù)量 mHistory.size。
[0136] 在本示例中,num加 Played = 5-2 = 3,設(shè)置第一中間值i = -l,第二中間值j = 0, racks[++i]<0作為數(shù)值的屬性的判斷條件,jCnumUnPlayed作為循環(huán)條件。
[0137] 在第一次循環(huán)中,tracks [++i] = tracks [0] <0,運(yùn)個(gè)判斷條件不成立,表示 tracks [ 0 ]的數(shù)值為表征未播放的歌曲的第一數(shù)值。
[013引對(duì)tracks [ j ] = i,即 tracks [ 0 ] = 0。
[0139] 第一輪循環(huán)結(jié)束,i和j的值加1,即i = 0,j = l。
[0140] 第一輪循環(huán)之后的數(shù)組tracks[4]為:
[0141]
[0142] 由于j = 1 < 3,循環(huán)條件成立,循環(huán)繼續(xù)。
[0143] 在第二輪循環(huán)中,tracks[++i ] = tracks[ 1 ] <0,運(yùn)個(gè)判斷條件成立,表示hacks [1 ]的數(shù)值為表征已播放的歌曲的第二數(shù)值,跳過該數(shù)值。
[0144] i的值再加1,即i = l,第二輪循環(huán)繼續(xù)。
[0145] tracks[++i] =tracks[2] <0,運(yùn)個(gè)判斷條件不成立,表示1:racks[2]的數(shù)值為表 征未播放的歌曲的第一數(shù)值。
[0146] 對(duì)tracks [ j ] = i,即 tracks [ 1 ] = 2。
[0147] 第一輪循環(huán)結(jié)束,i和j的值加1,即i = 2,j = 2。
[0148] 第一輪循環(huán)之后的數(shù)組tracks[4]為:
[0149]
[0150] 由于j = 2<3,循環(huán)條件成立,循環(huán)繼續(xù)。
[0151 ] 在第S輪循環(huán)中,tracks[++i] = tracks[3] <0,運(yùn)個(gè)判斷條件成立,表示hacks [3]的數(shù)值為表征已播放的歌曲的第二數(shù)值,跳過該數(shù)值。
[0152] i的值再遞增1,即i = 3,第二輪循環(huán)繼續(xù)。
[0153] tracks[++i] =tracks[4] <0,運(yùn)個(gè)判斷條件不成立,表示1:racks[4]的數(shù)值為表 征未播放的歌曲的第一數(shù)值。
[0154] 對(duì)tracks [ j ] = i,即 tracks [ 2 ] = 4。
[0155] 第Ξ輪循環(huán)結(jié)束,巧日j的值加1,即i = 3,j = 3。
[0156] 第Ξ輪循環(huán)之后的數(shù)組tracks[4]為:
[0157]
[0158] 由于j = 3 < 3,循環(huán)條件不成立,循環(huán)結(jié)束。
[0159] 3、在數(shù)組tracks中前num化Played項(xiàng)數(shù)組序號(hào)的范圍內(nèi),隨機(jī)生成一目標(biāo)數(shù)值查 找與目標(biāo)數(shù)值相等的數(shù)組序號(hào)的數(shù)值,獲得未播放的歌曲的數(shù)據(jù)序號(hào)。
[0160] 4、播放該數(shù)據(jù)序號(hào)對(duì)應(yīng)的歌曲。
[0161] 在本示例中,可W在0-2的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值,假設(shè)為1,即提取數(shù)組序號(hào) 為1的數(shù)值,即2,播放數(shù)據(jù)序號(hào)mPlayPos為2的歌曲,即播放第3首歌曲。
[0162] 針對(duì)上述示例,假設(shè)多媒體數(shù)據(jù)的數(shù)量為N,N為正整數(shù):
[0163] 應(yīng)用目前某個(gè)歌曲的隨機(jī)播放方法的平均時(shí)間復(fù)雜度:
[0164] 在步驟1中,每次都要通過循環(huán)η次賦值,平均時(shí)間復(fù)雜度為0(N);
[0165] 在步驟2中,播放歷史記錄的數(shù)量mHistory. size的大小是變化的,分別從0到N,共 N+1次,所W平均時(shí)間復(fù)雜度為0(N/2);
[0166] 在步驟3中,從整個(gè)循環(huán)來看,每次k的值都會(huì)保留下來下來,而k的值不可能大于 N,即總的歌曲數(shù)目,也就是++k的運(yùn)行次數(shù)不會(huì)大于N.
[0167] 在運(yùn)算最少的情況中,skip = 0,k = 0,只運(yùn)行一次,在運(yùn)算最多的情況中,運(yùn)行N 次,所W,平均時(shí)間復(fù)雜度也為〇(N/2)。
[016引因此,總的時(shí)間復(fù)雜度為0(N)+0(N/2)+0(N/2)=0(2N)。
[0169] 應(yīng)用本發(fā)明實(shí)施例的隨機(jī)播放方法:
[0170] 在步驟1中,播放歷史記錄的數(shù)量mHistory. size的大小是變化的,分別從0到N,共 N+1次,所W平均時(shí)間復(fù)雜度為0(N/2);
[0171] 在步驟2中,在整個(gè)循環(huán)中,每次i的值會(huì)保存下來,i的值最大不超過N-1,因?yàn)檠?環(huán)跳出條件KunNumPlayed,j的最大值為unNumPlayed-1,j的循環(huán)次數(shù)為unNumPlayed次, 而在tracks[ i ]中,共有unNumPlayed首歌的值不小于0,因此整個(gè)賦值完成后,tracks [unNumPlayed-1 ]的值是所有未播放歌曲中最后一首,小于或等于(N-1)的。
[0172] 所W,i的值也就小于或等于(N-1),在運(yùn)算最少的情況中,numUnPlayed=l,track
[0] = 0,那么運(yùn)行一次,在運(yùn)算最多的情況中,numUnPlayed = N,那么運(yùn)行N次,所W,平均時(shí) 間復(fù)雜度也為〇(N/2)。
[0173] 在步驟3中,只運(yùn)行1次,時(shí)間復(fù)雜度為0(1),由于多媒體數(shù)據(jù)的數(shù)量N-般比1大很 多,因此,此時(shí)間復(fù)雜度0(1) -般可W忽略。
[0174] 因此,總的時(shí)間復(fù)雜度為 0(N/2)+0(N/2)+0(l)>0(N)。
[0175] 綜上所述,本發(fā)明實(shí)施例的多媒體數(shù)據(jù)的隨機(jī)播放方法,由于在數(shù)組賦值時(shí)區(qū)分 了已播放的多媒體數(shù)據(jù)和未播放的多媒體數(shù)據(jù),節(jié)約了部分時(shí)間,并且,更改循環(huán)過程,使 得平均時(shí)間復(fù)雜度大約是目前隨機(jī)播放方法的一半,在空間復(fù)雜度上,并沒有引入新的、大 的變量,同時(shí),并沒有改變播放列表及其長(zhǎng)度,對(duì)隨機(jī)播放的整體流程也沒有做出大的改 變,避免增加模塊之間的禪合度,避免模塊之間相互產(chǎn)生影響,因此,并沒有影響到其他模 塊的使用,保證了安全性。
[0176] 需要說明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組 合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐?據(jù)本發(fā)明實(shí)施例,某些步驟可W采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該 知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所設(shè)及的動(dòng)作并不一定是本發(fā)明實(shí)施 例所必須的。
[0177] 參照?qǐng)D4,示出了本發(fā)明的一種多媒體數(shù)據(jù)的隨機(jī)播放裝置實(shí)施例的結(jié)構(gòu)框圖,具 體可W包括如下模塊:
[0178] 多媒體數(shù)據(jù)識(shí)別模塊401,用于在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的第一多媒體 數(shù)據(jù);
[0179] 數(shù)據(jù)序號(hào)記錄模塊402,用于在連續(xù)的區(qū)間中記錄所述第一多媒體數(shù)據(jù)在所述多 媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào);
[0180] 目標(biāo)數(shù)值隨機(jī)生成模塊403,用于在所述區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值;
[0181 ]數(shù)據(jù)序號(hào)查詢模塊404,用于查詢所述目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù)序號(hào);
[0182] 多媒體數(shù)據(jù)播放模塊405,用于播放所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的第一多媒體數(shù)據(jù)。
[0183] 在本發(fā)明的一個(gè)實(shí)施例中,所述多媒體數(shù)據(jù)識(shí)別模塊401可W包括如下子模塊:
[0184] 播放信息讀取子模塊,用于讀取預(yù)置的多媒體數(shù)據(jù)的播放列表和歷史播放記錄;
[0185] 數(shù)組創(chuàng)建子模塊,用于按照所述播放列表的長(zhǎng)度創(chuàng)建一數(shù)組;
[0186] 數(shù)據(jù)序號(hào)讀取子模塊,用于從所述歷史播放記錄中讀取已播放的第二多媒體數(shù)據(jù) 在所述播放列表中的數(shù)據(jù)序號(hào);
[0187] 匹配子模塊,用于依次判斷所述數(shù)組序號(hào)與所述數(shù)據(jù)序號(hào)是否匹配;若否,則調(diào)用 第一賦值子模塊,若是,則調(diào)用第二賦值子模塊;
[0188] 第一賦值子模塊,用于將所述數(shù)組序號(hào)的數(shù)值賦值為第一數(shù)值;
[0189] 第二賦值子模塊,用于將所述數(shù)組序號(hào)的數(shù)值賦值為第二數(shù)值。
[0190] 在本發(fā)明的一個(gè)實(shí)施例中,所述數(shù)據(jù)序號(hào)記錄模塊402可W包括如下子模塊:
[0191] 數(shù)值依次讀取子模塊,用于在所述數(shù)組中依次讀取所述數(shù)組序號(hào)的數(shù)值;
[0192] 屬性識(shí)別子模塊,用于識(shí)別所述數(shù)值的屬性;
[0193] 數(shù)據(jù)序號(hào)計(jì)算子模塊,用于在確定所述數(shù)值為第一數(shù)值時(shí),按照所述數(shù)組序號(hào)計(jì) 算所述第一多媒體數(shù)據(jù)在所述播放列表中的數(shù)據(jù)序號(hào);
[0194] 第Ξ賦值子模塊,用于將所述數(shù)據(jù)序號(hào)賦值給所述數(shù)組中前Μ個(gè)數(shù)組序號(hào)的數(shù)值, Μ為所述第一多媒體數(shù)據(jù)的數(shù)量;
[01%]循環(huán)判斷子模塊,用于判斷是否記錄所述第一多媒體數(shù)據(jù)的數(shù)據(jù)序號(hào)完畢;若是, 則調(diào)用結(jié)束子模塊,若否,則返回調(diào)用所述數(shù)值依次讀取子模塊;
[0196] 調(diào)用結(jié)束子模塊,用于結(jié)束記錄所述第一多媒體數(shù)據(jù)在所述多媒體數(shù)據(jù)中的數(shù)據(jù) 序號(hào);
[0197] 跳躍子模塊,用于在確定所述數(shù)值為第二數(shù)值時(shí),返回調(diào)用所述數(shù)值依次讀取子 模塊。
[0198] 在本發(fā)明實(shí)施例的一個(gè)示例中,所述第一數(shù)值小于或等于值最小的數(shù)組序號(hào)、大 于或等于值最大的數(shù)組序號(hào);
[0199] 當(dāng)所述第一數(shù)值小于或等于值最小的數(shù)組序號(hào)時(shí),所述第二數(shù)值小于所述第一數(shù) 值;
[0200] 當(dāng)所述第一數(shù)值大于或等于值最大的數(shù)組序號(hào)時(shí),所述第二數(shù)值大于所述第一數(shù) 值;
[0201 ]所述屬性識(shí)別子模塊可W包括如下單元:
[0202] 數(shù)值判斷單元,用于判斷所述數(shù)值是否小于所述第一數(shù)值;若是,則調(diào)用第一確定 單元,若否,則調(diào)用第二確定單元;
[0203] 第一確定單元,用于確定所述數(shù)值為第二數(shù)值;
[0204] 第二確定單元,用于確定所述數(shù)值為第一數(shù)值。
[0205] 在本發(fā)明的一個(gè)實(shí)施例中,所述目標(biāo)數(shù)值隨機(jī)生成模塊403可W包括如下子模塊:
[0206] 數(shù)組序號(hào)生成子模塊,用于在所述數(shù)組中前Μ個(gè)數(shù)組序號(hào)的范圍內(nèi)隨機(jī)生成一目 標(biāo)數(shù)值。
[0207] 在本發(fā)明的一個(gè)實(shí)施例中,所述數(shù)據(jù)序號(hào)查詢模塊404可W包括如下子模塊:
[0208] 數(shù)組序號(hào)查詢子模塊,用于在所述數(shù)組中查詢與所述目標(biāo)數(shù)值相等的數(shù)組序號(hào);
[0209] 數(shù)據(jù)序號(hào)提取子模塊,用于提取所述數(shù)組序號(hào)的數(shù)值,作為數(shù)據(jù)序號(hào)。
[0210] 在本發(fā)明的一個(gè)實(shí)施例中,所述多媒體數(shù)據(jù)播放模塊405可W包括如下子模塊:
[0211] 地址讀取子模塊,用于在所述播放列表中讀取所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的地址;
[0212] 多媒體數(shù)據(jù)加載子模塊,用于從所述地址加載所述第一多媒體數(shù)據(jù)進(jìn)行播放。
[0213] 對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所W描述的比較簡(jiǎn)單,相關(guān) 之處參見方法實(shí)施例的部分說明即可。
[0214] 本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與 其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
[0215] 本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明實(shí)施例的實(shí)施例可提供為方法、裝置、或計(jì)算 機(jī)程序產(chǎn)品。因此,本發(fā)明實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和 硬件方面的實(shí)施例的形式。而且,本發(fā)明實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可 用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上 實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0216] 本發(fā)明實(shí)施例是參照根據(jù)本發(fā)明實(shí)施例的方法、終端設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序 產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖 中的每一流程和/或方框、W及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供運(yùn)些 計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè) 備的處理器W產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí) 行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中 指定的功能的裝置。
[0217] 運(yùn)些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備 W特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包 括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方 框或多個(gè)方框中指定的功能。
[0218] 運(yùn)些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得 在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟W產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在 計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程 和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0219] 盡管已描述了本發(fā)明實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基 本創(chuàng)造性概念,則可對(duì)運(yùn)些實(shí)施例做出另外的變更和修改。所W,所附權(quán)利要求意欲解釋為 包括優(yōu)選實(shí)施例W及落入本發(fā)明實(shí)施例范圍的所有變更和修改。
[0220] 最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將 一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示運(yùn)些實(shí)體或操作 之間存在任何運(yùn)種實(shí)際的關(guān)系或者順序。而且,術(shù)語"包括"、"包含"或者其任何其他變體意 在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包 括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為運(yùn)種過程、方法、物品 或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句"包括一個(gè)……"限定的要 素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
[0221] W上對(duì)本發(fā)明所提供的一種多媒體數(shù)據(jù)的隨機(jī)播放方法和一種多媒體數(shù)據(jù)的隨 機(jī)播放裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了 闡述,W上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核屯、思想;同時(shí),對(duì)于本領(lǐng)域 的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上 所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【主權(quán)項(xiàng)】
1. 一種多媒體數(shù)據(jù)的隨機(jī)播放方法,其特征在于,包括: 在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的第一多媒體數(shù)據(jù); 在連續(xù)的區(qū)間中記錄所述第一多媒體數(shù)據(jù)在所述多媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào); 在所述區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值; 查詢所述目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù)序號(hào); 播放所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的第一多媒體數(shù)據(jù)。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的 第一多媒體數(shù)據(jù)的步驟包括: 讀取預(yù)置的多媒體數(shù)據(jù)的播放列表和歷史播放記錄; 按照所述播放列表的長(zhǎng)度創(chuàng)建一數(shù)組; 從所述歷史播放記錄中讀取已播放的第二多媒體數(shù)據(jù)在所述播放列表中的數(shù)據(jù)序號(hào); 依次判斷所述數(shù)組序號(hào)與所述數(shù)據(jù)序號(hào)是否匹配; 若否,則將所述數(shù)組序號(hào)的數(shù)值賦值為第一數(shù)值; 若是,則將所述數(shù)組序號(hào)的數(shù)值賦值為第二數(shù)值。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在連續(xù)的區(qū)間中記錄所述第一多媒體 數(shù)據(jù)在所述多媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào)的步驟包括: 在所述數(shù)組中依次讀取所述數(shù)組序號(hào)的數(shù)值; 識(shí)別所述數(shù)值的屬性; 當(dāng)確定所述數(shù)值為第一數(shù)值時(shí),按照所述數(shù)組序號(hào)計(jì)算所述第一多媒體數(shù)據(jù)在所述播 放列表中的數(shù)據(jù)序號(hào); 將所述數(shù)據(jù)序號(hào)賦值給所述數(shù)組中前Μ個(gè)數(shù)組序號(hào)的數(shù)值,Μ為所述第一多媒體數(shù)據(jù)的 數(shù)量; 判斷是否記錄所述第一多媒體數(shù)據(jù)的數(shù)據(jù)序號(hào)完畢; 若是,則結(jié)束記錄所述第一多媒體數(shù)據(jù)在所述多媒體數(shù)據(jù)中的數(shù)據(jù)序號(hào); 若否,則返回執(zhí)行所述依次讀取所述數(shù)組中數(shù)組序號(hào)對(duì)應(yīng)的數(shù)值的步驟; 當(dāng)確定所述數(shù)值為第二數(shù)值時(shí),返回執(zhí)行所述依次讀取所述數(shù)組中數(shù)組序號(hào)對(duì)應(yīng)的數(shù) 值的步驟。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述第一數(shù)值小于或等于值最小的數(shù)組序 號(hào)、大于或等于值最大的數(shù)組序號(hào); 當(dāng)所述第一數(shù)值小于或等于值最小的數(shù)組序號(hào)時(shí),所述第二數(shù)值小于所述第一數(shù)值; 當(dāng)所述第一數(shù)值大于或等于值最大的數(shù)組序號(hào)時(shí),所述第二數(shù)值大于所述第一數(shù)值; 所述識(shí)別所述數(shù)值的屬性的步驟包括: 判斷所述數(shù)值是否小于所述第一數(shù)值; 若是,則確定所述數(shù)值為第二數(shù)值; 若否,則確定所述數(shù)值為第一數(shù)值。5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述在所述區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo) 數(shù)值的步驟包括: 在所述數(shù)組中前Μ個(gè)數(shù)組序號(hào)的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值。6. 根據(jù)權(quán)利要求3或4或5所述的方法,其特征在于,所述查詢所述目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù) 序號(hào)的步驟包括: 在所述數(shù)組中查詢與所述目標(biāo)數(shù)值相等的數(shù)組序號(hào); 提取所述數(shù)組序號(hào)的數(shù)值,作為數(shù)據(jù)序號(hào)。7. 根據(jù)權(quán)利要求2-6任一項(xiàng)所述的方法,其特征在于,所述播放所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的第 一多媒體數(shù)據(jù)的步驟包括: 在所述播放列表中讀取所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的地址; 從所述地址加載所述第一多媒體數(shù)據(jù)進(jìn)行播放。8. -種多媒體數(shù)據(jù)的隨機(jī)播放裝置,其特征在于,包括: 多媒體數(shù)據(jù)識(shí)別模塊,用于在預(yù)置的多媒體數(shù)據(jù)中識(shí)別未播放的第一多媒體數(shù)據(jù); 數(shù)據(jù)序號(hào)記錄模塊,用于在連續(xù)的區(qū)間中記錄所述第一多媒體數(shù)據(jù)在所述多媒體數(shù)據(jù) 中的數(shù)據(jù)序號(hào); 目標(biāo)數(shù)值隨機(jī)生成模塊,用于在所述區(qū)間的范圍內(nèi)隨機(jī)生成一目標(biāo)數(shù)值; 數(shù)據(jù)序號(hào)查詢模塊,用于查詢所述目標(biāo)數(shù)值對(duì)應(yīng)的數(shù)據(jù)序號(hào); 多媒體數(shù)據(jù)播放模塊,用于播放所述數(shù)據(jù)序號(hào)對(duì)應(yīng)的第一多媒體數(shù)據(jù)。9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述多媒體數(shù)據(jù)識(shí)別模塊包括: 播放信息讀取子模塊,用于讀取預(yù)置的多媒體數(shù)據(jù)的播放列表和歷史播放記錄; 數(shù)組創(chuàng)建子模塊,用于按照所述播放列表的長(zhǎng)度創(chuàng)建一數(shù)組; 數(shù)據(jù)序號(hào)讀取子模塊,用于從所述歷史播放記錄中讀取已播放的第二多媒體數(shù)據(jù)在所 述播放列表中的數(shù)據(jù)序號(hào); 匹配子模塊,用于依次判斷所述數(shù)組序號(hào)與所述數(shù)據(jù)序號(hào)是否匹配;若否,則調(diào)用第一 賦值子模塊,若是,則調(diào)用第二賦值子模塊; 第一賦值子模塊,用于將所述數(shù)組序號(hào)的數(shù)值賦值為第一數(shù)值; 第二賦值子模塊,用于將所述數(shù)組序號(hào)的數(shù)值賦值為第二數(shù)值。10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述數(shù)據(jù)序號(hào)記錄模塊包括: 數(shù)值依次讀取子模塊,用于在所述數(shù)組中依次讀取所述數(shù)組序號(hào)的數(shù)值; 屬性識(shí)別子模塊,用于識(shí)別所述數(shù)值的屬性; 數(shù)據(jù)序號(hào)計(jì)算子模塊,用于在確定所述數(shù)值為第一數(shù)值時(shí),按照所述數(shù)組序號(hào)計(jì)算所 述第一多媒體數(shù)據(jù)在所述播放列表中的數(shù)據(jù)序號(hào); 第三賦值子模塊,用于將所述數(shù)據(jù)序號(hào)賦值給所述數(shù)組中前Μ個(gè)數(shù)組序號(hào)的數(shù)值,Μ為 所述第一多媒體數(shù)據(jù)的數(shù)量; 循環(huán)判斷子模塊,用于判斷是否記錄所述第一多媒體數(shù)據(jù)的數(shù)據(jù)序號(hào)完畢;若是,則調(diào) 用結(jié)束子模塊,若否,則返回調(diào)用所述數(shù)值依次讀取子模塊; 調(diào)用結(jié)束子模塊,用于結(jié)束記錄所述第一多媒體數(shù)據(jù)在所述多媒體數(shù)據(jù)中的數(shù)據(jù)序 號(hào); 跳躍子模塊,用于在確定所述數(shù)值為第二數(shù)值時(shí),返回調(diào)用所述數(shù)值依次讀取子模塊。
【文檔編號(hào)】G11B27/10GK105989866SQ201610511008
【公開日】2016年10月5日
【申請(qǐng)日】2016年6月30日
【發(fā)明人】孫卓, 張博
【申請(qǐng)人】青島海信移動(dòng)通信技術(shù)股份有限公司