本發(fā)明涉及電子技術(shù),尤其涉及一種閃光燈打開(kāi)方法和裝置。
背景技術(shù):
大部分智能設(shè)備都配置有閃光燈。隨著閃光燈的配置,出現(xiàn)了大量運(yùn)用閃光燈的應(yīng)用,例如,用來(lái)照明的手電筒應(yīng)用、使用閃光燈達(dá)到補(bǔ)光目的的相機(jī)應(yīng)用等。目前,閃光燈有兩種打開(kāi)方式:可以被搶占式與獨(dú)占式。所謂可以被搶占式是指,后打開(kāi)閃光燈的應(yīng)用具有優(yōu)先權(quán),后打開(kāi)閃光燈的應(yīng)用搶占正在占用閃光燈應(yīng)用的使用權(quán),正在使用閃光燈的應(yīng)用會(huì)自動(dòng)釋放對(duì)閃光燈的使用。也就是說(shuō),在先應(yīng)用打開(kāi)閃光燈的時(shí)候,閃光燈可以被其它應(yīng)用搶占,閃光燈被搶占后在先應(yīng)用自動(dòng)放棄對(duì)閃光燈的使用。而獨(dú)占式是指,先打開(kāi)閃光燈的應(yīng)用具有優(yōu)先權(quán),在釋放閃光燈使用權(quán)之前,其它應(yīng)用是無(wú)法申請(qǐng)到閃光燈的使用權(quán)。
對(duì)于每個(gè)使用閃光燈的應(yīng)用來(lái)說(shuō),閃光燈的打開(kāi)方式不僅是統(tǒng)一的,而且在終端出廠之前已確定。也就是說(shuō),智能設(shè)備上每個(gè)使用閃光燈的應(yīng)用,打開(kāi)閃光燈的方式都是一樣的,要么都是獨(dú)占式,要么都是搶占式。因此,現(xiàn)有打開(kāi)閃光燈的方法,沒(méi)有考慮應(yīng)用的需求,打開(kāi)閃光燈的方式不合理。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于,針對(duì)現(xiàn)有技術(shù)中閃光燈的使用權(quán)分配不合理的問(wèn)題,提出一種閃光燈打開(kāi)方法和裝置,在打開(kāi)閃光燈時(shí)考慮到了應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,實(shí)現(xiàn)了合理分配閃光燈使用權(quán)的目的。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的閃光燈打開(kāi)方法包括:
接收當(dāng)前應(yīng)用發(fā)起的打開(kāi)閃光燈申請(qǐng),所述申請(qǐng)包括所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光式的方式;
根據(jù)閃光燈的當(dāng)前狀態(tài)和閃光燈的當(dāng)前模式,確定是否為所述當(dāng)前應(yīng)用打開(kāi)閃光燈;所述閃光燈的當(dāng)前模式為在先應(yīng)用打開(kāi)閃光燈的方式;所述閃光燈的狀態(tài)包括打開(kāi)和關(guān)閉;
在所述閃光燈的當(dāng)前狀態(tài)為打開(kāi)且確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈時(shí),為在先應(yīng)用關(guān)閉閃光燈并通知在先應(yīng)用;
在確定為當(dāng)前應(yīng)用打開(kāi)閃光燈情況下,根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,并將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,通知所述當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果。
進(jìn)一步地,所述根據(jù)閃光燈的當(dāng)前狀態(tài)和閃光燈的當(dāng)前模式,確定是否為所述當(dāng)前應(yīng)用打開(kāi)閃光燈,包括:
在閃光燈的當(dāng)前狀態(tài)為關(guān)閉或閃光燈的當(dāng)前模式不是獨(dú)占式時(shí),確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈;
在閃光燈的當(dāng)前狀態(tài)為打開(kāi)且閃光燈的當(dāng)前模式為獨(dú)占式時(shí),確定不能為所述當(dāng)前應(yīng)用打開(kāi)閃光燈。
進(jìn)一步地,若閃光燈的當(dāng)前模式為允許臨時(shí)搶占式,在所述為在先應(yīng)用關(guān)閉閃光燈并通知在先應(yīng)用之后,還包括:
保存閃光燈關(guān)閉前的信息;
將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式之后,還包括:
在所述當(dāng)前應(yīng)用釋放對(duì)閃光燈的使用后,根據(jù)先前保存的閃光燈信息打開(kāi)閃光燈,并通知所述在先應(yīng)用閃光燈的打開(kāi)結(jié)果。
進(jìn)一步地,若閃光燈的當(dāng)前模式為允許臨時(shí)搶占式,所述根據(jù)閃光燈的當(dāng)前狀態(tài)和閃光燈的當(dāng)前模式,確定是否為所述當(dāng)前應(yīng)用打開(kāi)閃光燈,還包括:
在閃光燈的當(dāng)前狀態(tài)為打開(kāi)、閃光燈的當(dāng)前模式是允許臨時(shí)搶占式且臨時(shí)搶占的嵌套標(biāo)識(shí)為零時(shí),確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈,并對(duì)所述臨時(shí)搶占的嵌套標(biāo)識(shí)進(jìn)行加一操作;所述臨時(shí)搶占的嵌套標(biāo)識(shí)的初始值為零;
在閃光燈的當(dāng)前狀態(tài)為打開(kāi)、閃光燈的當(dāng)前模式是允許臨時(shí)搶占式且所述臨時(shí)搶占的嵌套標(biāo)識(shí)等于一時(shí),確定不為所述當(dāng)前應(yīng)用打開(kāi)閃光燈。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的閃光燈打開(kāi)裝置包括:
接收模塊,用于接收當(dāng)前應(yīng)用發(fā)起的打開(kāi)閃光燈申請(qǐng),所述申請(qǐng)包括所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光式的方式;
確定模塊,用于根據(jù)閃光燈的當(dāng)前狀態(tài)和閃光燈的當(dāng)前模式,確定是否為所述當(dāng)前應(yīng)用打開(kāi)閃光燈;所述閃光燈的當(dāng)前模式為在先應(yīng)用打開(kāi)閃光燈的方式;所述閃光燈的狀態(tài)包括打開(kāi)和關(guān)閉;
關(guān)閉模塊,用于在所述確定模塊確定所述閃光燈的當(dāng)前狀態(tài)為打開(kāi)且確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈時(shí),為在先應(yīng)用關(guān)閉閃光燈并通知在先應(yīng)用;
打開(kāi)模塊,用于在所述確定模塊確定為當(dāng)前應(yīng)用打開(kāi)閃光燈情況下,根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,并將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,通知所述當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果。
進(jìn)一步地,所述確定模塊具體為:在閃光燈的當(dāng)前狀態(tài)為關(guān)閉或閃光燈的當(dāng)前模式不是獨(dú)占式時(shí),確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈;在閃光燈的當(dāng)前狀態(tài)為打開(kāi)且閃光燈的當(dāng)前模式為獨(dú)占式時(shí),確定不能為所述當(dāng)前應(yīng)用打開(kāi)閃光燈。
進(jìn)一步地,所述裝置還包括:
恢復(fù)模塊,用于若閃光燈的當(dāng)前模式為允許臨時(shí)搶占模式,在所述關(guān)閉模塊為在先應(yīng)用關(guān)閉閃光燈并通知在先應(yīng)用之后,保存閃光燈關(guān)閉前的信息;在所述打開(kāi)模塊將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式之后,在當(dāng)前應(yīng)用釋放對(duì)閃光燈的使用后,根據(jù)先前保存的閃光燈信息打開(kāi)閃光燈,并通知在先應(yīng)用閃光燈的打開(kāi)結(jié)果。
進(jìn)一步地,所述確定模塊,還用于:在閃光燈的當(dāng)前狀態(tài)為打開(kāi)、閃光燈的當(dāng)前模式是允許臨時(shí)搶占式且臨時(shí)搶占的嵌套標(biāo)識(shí)為零時(shí),確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈,并對(duì)所述臨時(shí)搶占的嵌套標(biāo)識(shí)進(jìn)行加一操作;所述臨時(shí)搶占的嵌套標(biāo)識(shí)的初始值為零;在閃光燈的當(dāng)前狀態(tài)為打開(kāi)、閃光燈的當(dāng)前模式是允許臨時(shí)搶占式且所述臨時(shí)搶占的嵌套標(biāo)識(shí)等于一時(shí),確定不為所述當(dāng)前應(yīng)用打開(kāi)閃光燈。
本發(fā)明提供的技術(shù)方案中,應(yīng)用申請(qǐng)打開(kāi)閃光燈時(shí),在申請(qǐng)中包括應(yīng)用申請(qǐng)打開(kāi)閃光式的方式。閃光燈管理服務(wù)根據(jù)閃光燈的當(dāng)前狀態(tài)和在先應(yīng)用打開(kāi)閃光燈的方式,確定為應(yīng)用打開(kāi)閃光燈后,將閃光燈的當(dāng)前模式更新為該應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,以便在該應(yīng)用打開(kāi)閃光燈時(shí)如果其它應(yīng)用申請(qǐng)打開(kāi)閃光燈時(shí)根據(jù)閃光燈的當(dāng)前模式,確定是否為其它應(yīng)用打開(kāi)閃光燈。由于本發(fā)明在打開(kāi)閃光燈時(shí)考慮到了應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,實(shí)現(xiàn)了合理分配閃光燈使用權(quán)的目的。
附圖說(shuō)明
圖1A為本發(fā)明提供的使用閃光燈的框架圖;
圖1B為本發(fā)明提供的一種閃光燈打開(kāi)方法流程圖;
圖2為本發(fā)明提供的另一種閃光燈打開(kāi)方法流程圖;
圖3為本發(fā)明提供的一種Session數(shù)據(jù)結(jié)構(gòu)和Session棧示意圖;
圖4為本發(fā)明提供的一種閃光燈打開(kāi)裝置結(jié)構(gòu)示意圖;
圖5為本發(fā)明提供的另一種閃光燈打開(kāi)裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
如圖1A所示,閃光燈與應(yīng)用之間加入閃光燈管理服務(wù)(Flash Manager Service),每個(gè)應(yīng)用對(duì)閃光燈的操作都通過(guò)閃光燈管理服務(wù)來(lái)進(jìn)行,并且申請(qǐng)打開(kāi)閃光燈的應(yīng)用與閃光燈管理服務(wù)進(jìn)行交互式通訊來(lái)獲得應(yīng)用打開(kāi)閃光燈的方式。
圖1B為本發(fā)明提供的一種閃光燈打開(kāi)方法流程圖。如圖1B所示,本實(shí)施例提供的方法包括:
步驟101:閃光燈管理服務(wù)接收當(dāng)前應(yīng)用發(fā)起的打開(kāi)閃光燈申請(qǐng),所述申請(qǐng)包括所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光式的方式;
本發(fā)明中閃光燈的打開(kāi)方式,由應(yīng)用申請(qǐng)打開(kāi)方式,具體地,可以由用戶(hù)通過(guò)應(yīng)用提供的用戶(hù)接口選擇閃光燈打開(kāi)方式,也可以是智能設(shè)備的操作系統(tǒng)根據(jù)應(yīng)用的優(yōu)先級(jí)事先確定閃光燈打開(kāi)方式。當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光式的方式可以是獨(dú)占式也可以是可以被搶占式。
步驟102:閃光燈管理服務(wù)根據(jù)閃光燈的當(dāng)前狀態(tài)和閃光燈的當(dāng)前模式,確定是否為所述當(dāng)前應(yīng)用打開(kāi)閃光燈;所述閃光燈的當(dāng)前模式為在先應(yīng)用打開(kāi)閃光燈的方式;
閃光燈的狀態(tài)包括打開(kāi)和關(guān)閉。閃光燈的當(dāng)前狀態(tài)是指當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈時(shí),閃光燈的狀態(tài),也就是閃光燈處于關(guān)閉狀態(tài)或打開(kāi)狀態(tài)。閃光燈的模式包括可以被搶占式和獨(dú)占式。閃光燈的當(dāng)前模式為在先應(yīng)用打開(kāi)閃光燈的方式。在先使用是指已打開(kāi)閃光燈的應(yīng)用。
如果閃光燈的當(dāng)前狀態(tài)為關(guān)閉,那么閃光燈管理服務(wù)確定為當(dāng)前應(yīng)用打開(kāi)閃光燈。如果閃光燈的當(dāng)前狀態(tài)為打開(kāi),而且閃光燈的當(dāng)前模式不是獨(dú)占式,那么閃光燈管理服務(wù)確定為當(dāng)前應(yīng)用打開(kāi)閃光燈。例如,閃光燈的當(dāng)前狀態(tài)為打開(kāi),而且閃光燈的當(dāng)前模式是可以被搶占式,那么閃光燈管理服務(wù)確定為當(dāng)前應(yīng)用打開(kāi)閃光燈。在閃光燈處于打開(kāi)狀態(tài)且閃光燈的當(dāng)前模式為獨(dú)占式時(shí),確定不能為所述當(dāng)前應(yīng)用打開(kāi)閃光燈。
可選地,本發(fā)明增加了一種新的閃光燈打開(kāi)方式:允許臨時(shí)搶占式。應(yīng)用以臨時(shí)搶占式打開(kāi)閃光燈時(shí),在閃光燈處于打開(kāi)狀態(tài)時(shí)閃光燈可以被其它應(yīng)用搶占,其它應(yīng)用使用完閃光燈后,閃光燈管理服務(wù)重新為在先應(yīng)用打開(kāi)閃光燈,即將閃光燈使用權(quán)分配給在先應(yīng)用。因此,在閃光燈的當(dāng)前狀態(tài)為打開(kāi)且閃光燈的當(dāng)前模式為允許臨時(shí)搶占模式時(shí),那么閃光燈管理服務(wù)確定為當(dāng)前應(yīng)用打開(kāi)閃光燈。
步驟103:在確定為當(dāng)前應(yīng)用打開(kāi)閃光燈且閃光燈的當(dāng)前狀態(tài)為打開(kāi)時(shí),閃光燈管理服務(wù)為在先應(yīng)用關(guān)閉閃光燈并通知在先應(yīng)用;
在確定為當(dāng)前應(yīng)用打開(kāi)閃光燈且閃光燈的當(dāng)前狀態(tài)為關(guān)閉時(shí),閃光燈管理服務(wù)直接執(zhí)行步驟104,不需要執(zhí)行步驟103。
步驟104:閃光燈管理服務(wù)在確定為當(dāng)前應(yīng)用打開(kāi)閃光燈情況下,根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,并將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,通知所述當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果。
在確定為當(dāng)前應(yīng)用打開(kāi)閃光燈時(shí),不論閃光燈的當(dāng)前狀態(tài)是打開(kāi)還是關(guān)閉,均需執(zhí)行步驟104,也就是,閃光燈管理服務(wù)根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,并將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,通知所述當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果。
可選地,若閃光燈的當(dāng)前模式為允許臨時(shí)搶占式,在所述為在先應(yīng)用關(guān)閉閃光燈并通知在先應(yīng)用之后,即步驟103之后還包括:保存閃光燈關(guān)閉前的信息;將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式之后,還包括:在當(dāng)前應(yīng)用釋放對(duì)閃光燈的使用后,根據(jù)先前保存的閃光燈信息打開(kāi)閃光燈,并通知在先應(yīng)用閃光燈的打開(kāi)結(jié)果。
具體地,如果閃光燈的當(dāng)前狀態(tài)為打開(kāi)且閃光燈的當(dāng)前模式為允許臨時(shí)搶占式,閃光燈管理服務(wù)為所述在先應(yīng)用關(guān)閉閃光燈,同時(shí)保存閃光燈關(guān)閉前的信息,并通知在先應(yīng)用有新的打開(kāi)閃光燈的申請(qǐng)到來(lái),根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,并通知當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果,在當(dāng)前應(yīng)用釋放對(duì)閃光燈的使用后,根據(jù)先前保存的閃光燈信息打開(kāi)閃光燈,并通知在先應(yīng)用閃光燈的打開(kāi)結(jié)果。
本發(fā)明提供的閃光燈打開(kāi)方法,應(yīng)用在向閃光燈管理服務(wù)申請(qǐng)打開(kāi)閃光燈時(shí),在申請(qǐng)中包括應(yīng)用申請(qǐng)打開(kāi)閃光式的方式。閃光燈管理服務(wù)根據(jù)閃光燈的當(dāng)前狀態(tài)和在先應(yīng)用打開(kāi)閃光燈的方式,確定為應(yīng)用打開(kāi)閃光燈后,將閃光燈的當(dāng)前模式更新為該應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,以便在該應(yīng)用打開(kāi)閃光燈時(shí)如果其它應(yīng)用申請(qǐng)打開(kāi)閃光燈時(shí)根據(jù)閃光燈的當(dāng)前模式,確定是否為其它應(yīng)用打開(kāi)閃光燈。由于本發(fā)明在打開(kāi)閃光燈時(shí)考慮到了應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,實(shí)現(xiàn)了合理分配閃光燈使用權(quán)的目的。
圖2為本發(fā)明提供的另一種閃光燈打開(kāi)方法流程圖。如圖2所示,本實(shí)施例提供的方法包括:
步驟201:閃光燈管理服務(wù)接收當(dāng)前應(yīng)用發(fā)起的打開(kāi)閃光燈申請(qǐng),所述申請(qǐng)包括所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光式的方式;
步驟202:閃光燈管理服務(wù)判斷閃光燈的當(dāng)前狀態(tài)是否為關(guān)閉,如果是,執(zhí)行步驟203,否則,執(zhí)行步驟204。
步驟203:閃光燈管理服務(wù)根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,并將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,通知所述當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果。
步驟204:閃光燈的當(dāng)前狀態(tài)為打開(kāi)且閃光燈的當(dāng)前模式為可以被搶占式,閃光燈管理服務(wù)為在先應(yīng)用關(guān)閉閃光燈并通知在先應(yīng)用,之后執(zhí)行步驟203。
步驟205:閃光燈的當(dāng)前狀態(tài)為打開(kāi)且閃光燈的當(dāng)前模式為允許臨時(shí)搶占式,閃光燈管理服務(wù)為所述在先應(yīng)用關(guān)閉閃光燈,同時(shí)保存閃光燈關(guān)閉前的信息,并通知在先應(yīng)用有新的打開(kāi)閃光燈的申請(qǐng)到來(lái),根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,并通知當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果,在當(dāng)前應(yīng)用釋放對(duì)閃光燈的使用后,根據(jù)先前保存的閃光燈信息為在先應(yīng)用打開(kāi)閃光燈,并通知在先應(yīng)用閃光燈的打開(kāi)結(jié)果。
例如,如果手電筒應(yīng)用以允許臨時(shí)被搶占式申請(qǐng)打開(kāi)閃光燈,相機(jī)應(yīng)用在申請(qǐng)打開(kāi)閃光燈時(shí),閃光燈管理服務(wù)為手電筒應(yīng)用關(guān)閉閃光燈,并保存閃光燈關(guān)閉前的信息,通知手電筒應(yīng)用有新的應(yīng)用到來(lái)即相機(jī)應(yīng)用到來(lái),然后為相機(jī)應(yīng)用打開(kāi)閃光燈,將閃光燈的當(dāng)前模式更新為相機(jī)應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,在相機(jī)應(yīng)用釋放對(duì)閃光燈的使用后,根據(jù)先前保存的閃光燈信息為手電筒應(yīng)用打開(kāi)閃光燈,并通知手電筒應(yīng)用閃光燈的打開(kāi)結(jié)果??梢詫?shí)現(xiàn)以下場(chǎng)景:用戶(hù)晚上開(kāi)著手電筒應(yīng)用,看到比較好的夜景需要使用相機(jī)打開(kāi)閃光燈進(jìn)行拍攝,用戶(hù)希望在拍攝完后繼續(xù)使用手電筒照明。
步驟206:閃光燈的當(dāng)前模式為獨(dú)占式,閃光燈管理服務(wù)通知當(dāng)前應(yīng)用不能打開(kāi)閃光燈。
對(duì)于允許臨時(shí)搶占式,可以采取單級(jí)嵌套或者多級(jí)嵌套的方式。所謂單級(jí)嵌套,指的是只允許搶占一次,通過(guò)搶占其它應(yīng)用的閃光燈使用權(quán)的應(yīng)用,即使該應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式為臨時(shí)搶占模式,也不再允許其它應(yīng)用打開(kāi)閃光燈。多級(jí)嵌套,指的是允許閃光燈被多次搶占,只要應(yīng)用申請(qǐng)閃光燈的方式為允許臨時(shí)搶占式,那么不管該應(yīng)用是否是通過(guò)搶占其它應(yīng)用打開(kāi)的閃光燈,閃光燈都可以被其它應(yīng)用搶占。而多級(jí)嵌套則復(fù)雜的多,具體可通過(guò)棧操作來(lái)達(dá)到目的。每當(dāng)一個(gè)應(yīng)用以臨時(shí)搶占式申請(qǐng)閃光燈,如圖3所示,閃光燈管理服務(wù)為該應(yīng)用分配一個(gè)類(lèi)型名為Session的數(shù)據(jù)結(jié)構(gòu),用來(lái)保存閃光燈的當(dāng)前數(shù)據(jù)即閃光燈關(guān)閉前的信息,包括閃光燈的工作信息和與應(yīng)用交互的通訊接口。當(dāng)有其它應(yīng)用來(lái)?yè)屨奸W光燈時(shí),則將該Session數(shù)據(jù)結(jié)構(gòu)入棧,以此類(lèi)推;而當(dāng)應(yīng)用釋放對(duì)閃光燈的使用權(quán)時(shí),則該Session數(shù)據(jù)結(jié)構(gòu)出棧,并根據(jù)出棧的Session數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)為應(yīng)用打開(kāi)閃光燈,并通知關(guān)聯(lián)應(yīng)用閃光燈的打開(kāi)結(jié)果。
閃光燈的當(dāng)前狀態(tài)為打開(kāi)且閃光燈的當(dāng)前模式為允許臨時(shí)搶占式時(shí),在允許多級(jí)嵌套的方式下,閃光燈管理服務(wù)為所述在先應(yīng)用關(guān)閉閃光燈,同時(shí)對(duì)閃光燈關(guān)閉前的信息進(jìn)行入棧操作即存入棧頂,并通知在先應(yīng)用有新的打開(kāi)閃光燈的申請(qǐng)到來(lái),根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,并通知當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果,在當(dāng)前應(yīng)用釋放對(duì)閃光燈的使用后,進(jìn)行出棧操作,根據(jù)出棧的信息打開(kāi)閃光燈,并通知在先應(yīng)用閃光燈的打開(kāi)結(jié)果。
允許單級(jí)嵌套的方式下,需通過(guò)臨時(shí)搶占的嵌套標(biāo)識(shí)來(lái)識(shí)別當(dāng)前臨時(shí)搶占的嵌套級(jí)別,可以將臨時(shí)搶占的嵌套標(biāo)識(shí)的初始值設(shè)置為零,被臨時(shí)搶占一次則將臨時(shí)搶占的嵌套標(biāo)識(shí)增加一,如果臨時(shí)搶占的嵌套標(biāo)識(shí)等于一則表明閃光燈已被臨時(shí)搶占一次,此時(shí)其它應(yīng)用不能再進(jìn)行臨時(shí)搶占。在閃光燈的當(dāng)前狀態(tài)為打開(kāi)、閃光燈的當(dāng)前模式是允許臨時(shí)搶占式時(shí),確定是否為當(dāng)前應(yīng)用打開(kāi)閃光燈的方法如下:
在閃光燈的當(dāng)前狀態(tài)為打開(kāi)、閃光燈的當(dāng)前模式是允許臨時(shí)搶占式且臨時(shí)搶占的嵌套標(biāo)識(shí)為零時(shí),確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈,并對(duì)所述臨時(shí)搶占的嵌套標(biāo)識(shí)進(jìn)行加一操作;在閃光燈的當(dāng)前狀態(tài)為打開(kāi)、閃光燈的當(dāng)前模式是允許臨時(shí)搶占式且所述臨時(shí)搶占的嵌套標(biāo)識(shí)等于一時(shí),確定不為所述當(dāng)前應(yīng)用打開(kāi)閃光燈。
本實(shí)施提供的閃光燈打開(kāi)方法,當(dāng)前應(yīng)用可以在申請(qǐng)閃光燈使用權(quán)時(shí)選擇合適的打開(kāi)方式,可以選擇允許單級(jí)或多級(jí)嵌套臨時(shí)搶占的模式,在后應(yīng)用打開(kāi)閃光時(shí),需要根據(jù)當(dāng)前應(yīng)用的打開(kāi)方式來(lái)確定是否能打開(kāi)閃光燈,以及打開(kāi)閃燈的過(guò)程。相對(duì)于現(xiàn)有技術(shù)每個(gè)應(yīng)用都采用統(tǒng)一的打開(kāi)方式相比,合理地分配了閃光燈的使用權(quán),使得多個(gè)應(yīng)用可以共享閃光燈。
圖4為本發(fā)明提供的一種閃光燈打開(kāi)裝置結(jié)構(gòu)示意圖。如圖4所示,本實(shí)施例提供的裝置包括:接收模塊41、確定模塊42、關(guān)閉模塊43和打開(kāi)模塊44。
接收模塊41,用于接收當(dāng)前應(yīng)用發(fā)起的打開(kāi)閃光燈申請(qǐng),所述申請(qǐng)包括所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光式的方式;
確定模塊42,用于根據(jù)閃光燈的當(dāng)前狀態(tài)和閃光燈的當(dāng)前模式,確定是否為所述當(dāng)前應(yīng)用打開(kāi)閃光燈;所述閃光燈的當(dāng)前模式為在先應(yīng)用打開(kāi)閃光燈的方式;所述閃光燈的狀態(tài)包括打開(kāi)和關(guān)閉;
進(jìn)一步地,所述確定模塊具體為:在閃光燈的當(dāng)前狀態(tài)為關(guān)閉或閃光燈的當(dāng)前模式不是獨(dú)占式時(shí),確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈;在閃光燈的當(dāng)前狀態(tài)為打開(kāi)且閃光燈的當(dāng)前模式為獨(dú)占式時(shí),確定不能為所述當(dāng)前應(yīng)用打開(kāi)閃光燈。
關(guān)閉模塊43,用于在所述閃光燈的當(dāng)前狀態(tài)為打開(kāi)且確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈時(shí),為在先應(yīng)用關(guān)閉閃光燈并通知在先應(yīng)用;
打開(kāi)模塊44,用于在確定為當(dāng)前應(yīng)用打開(kāi)閃光燈情況下,根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,并將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,通知所述當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果。
本發(fā)明提供的閃光燈打開(kāi)裝置,應(yīng)用在申請(qǐng)打開(kāi)閃光燈時(shí),在申請(qǐng)中包括應(yīng)用申請(qǐng)打開(kāi)閃光式的方式。閃光燈管理服務(wù)根據(jù)閃光燈的當(dāng)前狀態(tài)和在先應(yīng)用打開(kāi)閃光燈的方式,確定為應(yīng)用打開(kāi)閃光燈后,將閃光燈的當(dāng)前模式更新為該應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,以便在該應(yīng)用打開(kāi)閃光燈時(shí)如果其它應(yīng)用申請(qǐng)打開(kāi)閃光燈時(shí)根據(jù)閃光燈的當(dāng)前模式,確定是否為其它應(yīng)用打開(kāi)閃光燈。由于本發(fā)明在打開(kāi)閃光燈時(shí)考慮到了應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,實(shí)現(xiàn)了合理分配閃光燈使用權(quán)的目的。
本發(fā)明在現(xiàn)有技術(shù)的基礎(chǔ)上增加了一種新的閃光燈打開(kāi)方式即允許臨時(shí)搶占式。應(yīng)用以臨時(shí)搶占式打開(kāi)閃光燈時(shí),在閃光燈處于打開(kāi)狀態(tài)時(shí)閃光燈可以被其它應(yīng)用搶占,其它應(yīng)用使用完閃光燈后,閃光燈管理服務(wù)重新為在先應(yīng)用打開(kāi)閃光燈,即將閃光燈使用權(quán)分配給在先應(yīng)用。如圖5所示,本發(fā)明提供的裝置還包括恢復(fù)模塊45。
恢復(fù)模塊45,用于若閃光燈的當(dāng)前模式為允許臨時(shí)搶占模式,在所述關(guān)閉模塊為在先應(yīng)用關(guān)閉閃光燈并通知在先應(yīng)用之后,保存閃光燈關(guān)閉前的信息;在所述打開(kāi)模塊將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式之后,在當(dāng)前應(yīng)用釋放對(duì)閃光燈的使用后,根據(jù)先前保存的閃光燈信息打開(kāi)閃光燈,并通知在先應(yīng)用閃光燈的打開(kāi)結(jié)果。
對(duì)于允許臨時(shí)搶占式,可以采取單級(jí)嵌套或者多級(jí)嵌套的方式。所謂單級(jí)嵌套,指的是只允許搶占一次,通過(guò)搶占其它應(yīng)用的閃光燈使用權(quán)的應(yīng)用,即使該應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式為臨時(shí)搶占模式,也不再允許其它應(yīng)用打開(kāi)閃光燈。多級(jí)嵌套,指的是允許閃光燈被多次搶占,只要應(yīng)用申請(qǐng)閃光燈的方式為允許臨時(shí)搶占式,那么不管該應(yīng)用是否是通過(guò)搶占其它應(yīng)用打開(kāi)的閃光燈,閃光燈都可以被其它應(yīng)用搶占。
閃光燈的當(dāng)前模式為允許臨時(shí)搶占式,在允許多級(jí)嵌套的方式下,如果閃光燈的當(dāng)前狀態(tài)為打開(kāi),關(guān)閉模塊43為所述在先應(yīng)用關(guān)閉閃光燈,同時(shí)對(duì)閃光燈關(guān)閉前的信息進(jìn)行入棧操作即存入棧頂,并通知在先應(yīng)用有新的打開(kāi)閃光燈的申請(qǐng)到來(lái),打開(kāi)模塊44根據(jù)當(dāng)前應(yīng)用的申請(qǐng)打開(kāi)閃光燈,將閃光燈的當(dāng)前模式更新為所述當(dāng)前應(yīng)用申請(qǐng)打開(kāi)閃光燈的方式,并通知當(dāng)前應(yīng)用閃光燈的打開(kāi)結(jié)果,恢復(fù)模塊45在當(dāng)前應(yīng)用釋放對(duì)閃光燈的使用后,進(jìn)行出棧操作,根據(jù)出棧的信息打開(kāi)閃光燈,并通知在先應(yīng)用閃光燈的打開(kāi)結(jié)果。
允許單級(jí)嵌套時(shí),需通過(guò)臨時(shí)搶占的嵌套標(biāo)識(shí)來(lái)識(shí)別當(dāng)前臨時(shí)搶占的嵌套級(jí)別,可以將臨時(shí)搶占的嵌套標(biāo)識(shí)的初始值設(shè)置為零,被臨時(shí)搶占一次則將臨時(shí)搶占的嵌套標(biāo)識(shí)增加一,如果臨時(shí)搶占的嵌套標(biāo)識(shí)等于一則表明閃光燈已被臨時(shí)搶占一次,此時(shí)其它應(yīng)用不能再進(jìn)行臨時(shí)搶占。因此,所述確定模塊42,還用于:在閃光燈的當(dāng)前狀態(tài)為打開(kāi)、閃光燈的當(dāng)前模式是允許臨時(shí)搶占式且臨時(shí)搶占的嵌套標(biāo)識(shí)為零時(shí),確定為所述當(dāng)前應(yīng)用打開(kāi)閃光燈,并對(duì)所述臨時(shí)搶占的嵌套標(biāo)識(shí)進(jìn)行加一操作;所述臨時(shí)搶占的嵌套標(biāo)識(shí)的初始值為零;在閃光燈的當(dāng)前狀態(tài)為打開(kāi)、閃光燈的當(dāng)前模式是允許臨時(shí)搶占式且所述臨時(shí)搶占的嵌套標(biāo)識(shí)等于一時(shí),確定不為所述當(dāng)前應(yīng)用打開(kāi)閃光燈。
本實(shí)施提供的閃光燈打開(kāi)裝置,當(dāng)前應(yīng)用可以在申請(qǐng)閃光燈使用權(quán)時(shí)選擇合適的打開(kāi)方式,可以選擇允許單級(jí)或多級(jí)嵌套臨時(shí)搶占的模式,在后應(yīng)用打開(kāi)閃光時(shí),需要根據(jù)當(dāng)前應(yīng)用的打開(kāi)方式來(lái)確定是否能打開(kāi)閃光燈,以及打開(kāi)閃燈的過(guò)程。相對(duì)于現(xiàn)有技術(shù)每個(gè)應(yīng)用都采用統(tǒng)一的打開(kāi)方式相比,合理地分配了閃光燈的使用權(quán),使得多個(gè)應(yīng)用可以共享閃光燈。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。