




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 中國移動視頻基地機頂盒應(yīng)用服務(wù)框架對機頂盒接口要求文檔修改記錄版本號更新時間更新人主要內(nèi)容或重大修改0.12013-03-05初稿0.22013-03-06增加pppoe接口,增加升級要求0.32013-03-07增加有線,pppoe廣播消息定義添加網(wǎng)絡(luò)擴展結(jié)構(gòu)圖0.42013-03-08去掉待機,喚醒,升級標(biāo)記位接口,增加待機要求0.52013-03-12增加有線,pppoe管理類獲取說明,升級接口1.02013-03-15增加context類擴展要求,增加播放器要求,修改參數(shù)要求,增加遙控器要求說明,將連接文件內(nèi)容提取顯示1.12013-04-15增加可選參數(shù)upgrade_path,升
2、級模塊增加處理這個參數(shù)說明1.22013-04-18增加播放器事件要求1.32013-06-20增加getNetLinkStatus接口定義,增加支持時移要求1.42013-07-01在【四、參數(shù)設(shè)置要求】增加系統(tǒng)屬性sys.settings.support:是否支持Pppoe和無線,默認為1(0不支持Pppoe和無線,其他值表示支持Pppoe和無線)1.52013-07-111,在【四、參數(shù)設(shè)置要求】增加系統(tǒng)屬性:是否支持Pppoe、有線和無線work.flags,默認為7(1支持無線,2支持有線,4支持Pppoe,其他情況取1、2、4的或值:。如:7表示全支持)。注意:實現(xiàn)此屬性后可忽略原
3、系統(tǒng)屬性sys.settings.support2,在【四、參數(shù)設(shè)置要求】增加系統(tǒng)屬性:epg.eccodeR/W對應(yīng)登錄協(xié)議新增返回的ECCode字段epg.copyrightidR/W對應(yīng)登錄協(xié)議返回的copyrighted字段1.62013-07-241,修改系統(tǒng)屬性參數(shù)名:work.flags修改為.flags2,在【五、遙控器按鍵要求】修改home鍵動作:home鍵 系統(tǒng)默認打開launcher界面(修改前為:home鍵 先交給當(dāng)前顯示應(yīng)用處理,如果當(dāng)前應(yīng)用不處理,系統(tǒng)默認打開launcher界面 )1.72013-08-27在【四、參數(shù)設(shè)置要求】增加系統(tǒng)屬性:epg.indexur
4、lepg.cmcchomeurl1.82013-09-02添加適配常見問題補充時移相關(guān)說明1.92013-09-05補充有線網(wǎng)絡(luò)設(shè)置接口中g(shù)etNetLinkStatus函數(shù)返回值說明2.02013-09-12增加系統(tǒng)屬性:epg.authcodeepg.eccoporationcode2013-09-23說明RecoverySystem.rebootWipeUserData方法被采用的服務(wù)框架版本2013-09-29補充升級要求說明2013-10-14增加第三方應(yīng)用安裝權(quán)限要求2013-11-01增加顯示設(shè)置要求api增加系統(tǒng)屬性:2013-11-15在【九、播放器要求】增加:畫面比例和清晰
5、度2013-12-02修改顯示設(shè)置api:1在display中增加Context類修改說明2 將displaymanager的包名改為android.os.display3 在displaymanager中增加saveParam接口,用于退出切邊設(shè)置時保存相關(guān)參數(shù)2013-12-19首頁地址默認值修改(2.1.5版本后更換首頁地址)2014-03-13增加分辨率設(shè)置后事件規(guī)范2014-04-04第十一章節(jié),添加終端診斷上報系統(tǒng)日志要求2014-04-09第九章節(jié),對播放器的要求中添加卡頓信息支持第七章,待機要求2014-04-10第四章,增加epg.launcher.packagename屬性
6、;第五章,home鍵處理2014-04-16第十章,增加/sdcard目錄要求第九章,添加深度診斷對于播放器上報事件的要求2014-04-17第九章,添加播放器事件(深度診斷相關(guān))目錄 TOC o 1-3 h z u HYPERLINK l _Toc385498441 一、系統(tǒng)要求 PAGEREF _Toc385498441 h 5 HYPERLINK l _Toc385498442 二、網(wǎng)絡(luò)設(shè)置要求 PAGEREF _Toc385498442 h 5 HYPERLINK l _Toc385498443 三、顯示設(shè)置要求 PAGEREF _Toc385498443 h 11 HYPERLINK
7、 l _Toc385498444 四、參數(shù)設(shè)置要求 PAGEREF _Toc385498444 h 14 HYPERLINK l _Toc385498445 五、遙控器按鍵要求 PAGEREF _Toc385498445 h 15 HYPERLINK l _Toc385498446 六、PowerManager要求 PAGEREF _Toc385498446 h 16 HYPERLINK l _Toc385498447 七、待機要求 PAGEREF _Toc385498447 h 17 HYPERLINK l _Toc385498448 八、升級要求 PAGEREF _Toc385498448
8、 h 17 HYPERLINK l _Toc385498449 九、播放器要求 PAGEREF _Toc385498449 h 18 HYPERLINK l _Toc385498450 十、第三方應(yīng)用安裝權(quán)限要求 PAGEREF _Toc385498450 h 21 HYPERLINK l _Toc385498451 十一、終端診斷相關(guān)要求 PAGEREF _Toc385498451 h 21 HYPERLINK l _Toc385498452 十二、常見問題 PAGEREF _Toc385498452 h 21系統(tǒng)要求標(biāo)準(zhǔn)Android4.0以上版本,去掉原生launcher,設(shè)置,Phon
9、e等應(yīng)用網(wǎng)絡(luò)設(shè)置要求 網(wǎng)絡(luò)采用android原生wifi設(shè)置框架,擴展有線和pppoe的設(shè)置,框架如下:紅色塊為文檔中的對應(yīng)文件實現(xiàn),藍色部分由盒子自己實現(xiàn)。滿足aidl服務(wù)和廣播消息需要擴展framework代碼 1 增加.ethernet.EthernetManager.java類,.pppoe.PppoeManager.java類 2 修改 android.content.Context.java類 增加 public static final String ETHERNET_SERVICE = ethernet; public static final String PPPOE_SER
10、VICE = pppoe;有線網(wǎng)絡(luò)配置實現(xiàn)有線管理對象EthernetManager.java,相關(guān)代碼如下:package .ethernet;import .ethernet.IEthernetManager;import android.os.Handler;import android.os.RemoteException;import .DhcpInfo;/* * 有線管理對象類1.0.1 * * author zyd */public class EthernetManager public static final String TAG = EthernetManager;pub
11、lic static final int ETHERNET_DEVICE_SCAN_RESULT_READY = 0;public static final String ETHERNET_STATE_CHANGED_ACTION = .ethernet.ETHERNET_STATE_CHANGE;public static final String NETWORK_STATE_CHANGED_ACTION = .ethernet.STATE_CHANGE;public static final String EXTRA_NETWORK_INFO = networkInfo;public st
12、atic final String EXTRA_ETHERNET_STATE = ethernet_state;public static final int ETHERNET_STATE_DISABLED = 0;public static final int ETHERNET_STATE_ENABLED = 1;public static final int ETHERNET_STATE_UNKNOWN = 2;public static final int EVENT_DHCP_CONNECT_SUCCESSED = 10;public static final int EVENT_DH
13、CP_CONNECT_FAILED = 11;public static final int EVENT_DHCP_DISCONNECT_SUCCESSED = 12;public static final int EVENT_DHCP_DISCONNECT_FAILED = 13;public static final int EVENT_STATIC_CONNECT_SUCCESSED = 14;public static final int EVENT_STATIC_CONNECT_FAILED = 15;public static final int EVENT_STATIC_DISC
14、ONNECT_SUCCESSED = 16;public static final int EVENT_STATIC_DISCONNECT_FAILED = 17;public static final int EVENT_PHY_LINK_UP =18;public static final int EVENT_PHY_LINK_DOWN = 19;/* * The ethernet interface is configured by dhcp */public static final String ETHERNET_CONNECT_MODE_DHCP = dhcp;/* * The e
15、thernet interface is configured manually */public static final String ETHERNET_CONNECT_MODE_MANUAL = manual;private boolean DEBUG = true;IEthernetManager mService;Handler mHandler;public EthernetManager(IEthernetManager service, Handler handler) mService = service;mHandler = handler;/* * 判斷有線網(wǎng)絡(luò)是否已經(jīng)配
16、置 * * return */public boolean isEthernetConfigured() /* * 獲取當(dāng)前網(wǎng)絡(luò)信息 * * return */public DhcpInfo getDhcpInfo() /* * 保存有線連接模式 * * param mode * ETHERNET_CONNECT_MODE_DHCP or ETHERNET_CONNECT_MODE_MANUAL * param dhcpInfo * if mode is ETHERNET_CONNECT_MODE_MANUAL,it is Required. */public void setEthernet
17、Mode(String mode, DhcpInfo dhcpInfo) /* * 獲取有線網(wǎng)絡(luò)連接模式 * * return */public String getEthernetMode() /* * 獲取網(wǎng)卡設(shè)備名 * * return */public String getInterfaceName() public boolean setInterfaceName(String iface) /* * 關(guān)閉/打開有線連接 * * 關(guān)閉: * dhcp時,停止dhcp獲取,并清除網(wǎng)絡(luò)配置信息 * static時,清除網(wǎng)絡(luò)配置信息 * 打開: * 恢復(fù)原來網(wǎng)絡(luò)連接 * * param e
18、nable ETHERNET_STATE_DISABLED or ETHERNET_STATE_ENABLED */public void setEthernetEnabled(boolean enable) /* * 獲取有線網(wǎng)絡(luò)狀態(tài) * return* ETHERNET_STATE_DISABLED* ETHERNET_STATE_ENABLED* ETHERNET_STATE_UNKNOWN */public int getEthernetState() /* * 設(shè)置有線是否模擬無線網(wǎng)絡(luò) * * 用于有些應(yīng)用只獲取獲取wifi連接狀態(tài) * * param enable */public
19、 void setWifiDisguise(boolean enable) /* * 獲取有線是否模擬無線 * return */public boolean getWifiDisguiseState() /* * 獲取網(wǎng)絡(luò)是否連接 * return */ public boolean getNetLinkStatus() return getNetLinkStatus(getInterfaceName() 0; /* * 獲取指定網(wǎng)卡網(wǎng)絡(luò)是否連接 * param ifaceName * return * 大于0表示連接,小于等于0表示未連接 */ public int getNetLinkS
20、tatus(String ifaceName) . 通過EthernetManager em = (EthernetManager) getSystemService(Context.ETHERNET_SERVICE);獲取實現(xiàn)有線廣播消息: action名:ETHERNET_STATE_CHANGED_ACTION action內(nèi)容: keyValueEXTRA_ETHERNET_STATEEVENT_DHCP_CONNECT_SUCCESSED =10EVENT_DHCP_CONNECT_FAILED =11EVENT_DHCP_DISCONNECT_SUCCESSED=12EVENT_D
21、HCP_DISCONNECT_FAILED=13EVENT_STATIC_CONNECT_SUCCESSED=14EVENT_STATIC_CONNECT_FAILED=15EVENT_STATIC_DISCONNECT_SUCCESSED=16EVENT_STATIC_DISCONNECT_FAILED=17EVENT_PHY_LINK_UP=18EVENT_PHY_LINK_DOWN=19 值見 見EthernetManager類定義移動dhcp規(guī)范設(shè)置接口 底層需要實現(xiàn)一個dhcpd+的功能,功能規(guī)格見上海移動網(wǎng)絡(luò)電視承載DHCP接入技術(shù)規(guī)范V0.9.3,dhcpd+所需要的參數(shù)是通過p
22、rop屬性設(shè)置的,具體如下表屬性名含義取值net.dhcpc.ipverip版本4:IPV4 版本 6:IPV6版本net.dhcpc.usernamedhcp接入的用戶名字符串net.dhcpc.pswddhcp接入的密碼字符串net.dhcpc.option是否支持option字段true/ falsePppoe撥號設(shè)置接口底層需要實現(xiàn)一個pppoe的功能, pppoe所需要的參數(shù)見下文參數(shù)要求對應(yīng)管理類接口如下:package .pppoe;import .DhcpInfo;import .pppoe.IPppoeManager;import android.os.Handler;imp
23、ort android.os.RemoteException;import android.util.Log;/* * PPPOE連接管理對象1.0.1 * author zyd * category chinamobile */public class PppoeManager public static final String PPPOE_STATE_CHANGED_ACTION =PPPOE_STATE_CHANGED;public static final String EXTRA_PPPOE_STATE = pppoe_state;public static final int P
24、PPOE_STATE_UNKNOWN = 0;public static final int PPPOE_STATE_CONNECT = 1;public static final int PPPOE_STATE_DISCONNECT = 2;public static final int PPPOE_STATE_CONNECTING = 3;public static final int EVENT_CONNECT_SUCCESSED = 0; public static final int EVENT_CONNECT_FAILED = 1; /* * The pppoe interface
25、 is configured by dhcp */ public static final String PPPOE_CONNECT_MODE_DHCP= dhcp; /* * The pppoe interface is configured manually */ public static final String PPPOE_CONNECT_MODE_MANUAL = manual; IPppoeManager mService;Handler mHandler;public PppoeManager(IPppoeManager service, Handler handler) mS
26、ervice = service;mHandler = handler;/* * pppoe連接(按默認dhcp去連接) * param name * param pswd * param ifaceName 網(wǎng)卡設(shè)備名 如eth0 */public synchronized void connect(String name,String pswd,String ifaceName) /* * 斷開pppoe連接 * param ifaceName 網(wǎng)卡設(shè)備名 如eth0 */public synchronized void disconnect(String ifaceName) /* *
27、設(shè)置pppoe連接模式 * param mode PPOE_CONNECT_MODE_DHCP or PPPOE_CONNECT_MODE_MANUAL * param info mode 為PPPOE_CONNECT_MODE_MANUAL時必選 */public synchronized void setPppoeMode(String mode,DhcpInfo info) ./* * 獲取pppoe連接模式 * return mode PPOE_CONNECT_MODE_DHCP or PPPOE_CONNECT_MODE_MANUAL */public synchronized St
28、ring getPppoeMode() /* * 獲取pppoe狀態(tài) * return * PPPOE_STATE_UNKNOWN* PPPOE_STATE_CONNECT* PPPOE_STATE_DISCONNECT* PPPOE_STATE_CONNECTING */public int getPppoeState() public boolean isPppoeDeviceUp() /* * 獲取網(wǎng)絡(luò)信息 * * return */public DhcpInfo getDhcpInfo() 通過PppoeManager pm = (PppoeManager) getSystemServ
29、ice(Context.PPPOE_SERVICE);獲取實現(xiàn)pppoe廣播消息action名:PPPOE_STATE_CHANGED_ACTIONaction內(nèi)容: keyvalueEXTRA_PPPOE_STATEEVENT_CONNECT_SUCCESSED =0EVENT_CONNECT_FAILED =1 值見 見EthernetManager類定義無線網(wǎng)絡(luò)配置支持android標(biāo)準(zhǔn)無線網(wǎng)絡(luò)配置。支持有線和無線網(wǎng)絡(luò)共存 無線和可以同時配置有線網(wǎng)絡(luò),并啟用,由應(yīng)用來控制開啟和關(guān)閉。顯示設(shè)置要求 顯示設(shè)置采用android AIDL系統(tǒng)服務(wù)方式來實現(xiàn),類似Android WIFI設(shè)置框架
30、,擴展顯示相關(guān)設(shè)置,框架如下:管理類對象管理服務(wù)管理類對象管理服務(wù)aidl盒子實現(xiàn)模塊盒子自己實現(xiàn)的接口需要擴展framework代碼 1 增加android.os.display. DisplayManager.java類 2 修改 android.content.Context.java類 增加 public static final String DISPLAY_MANAGER_SERVICE = displayManagerService;獲取DisplayManager方法:DisplayManager dm = (DisplayManager)context.getSystemSe
31、rvice(Context.DISPLAY_MANAGER_SERVICE);盒子底層需要實現(xiàn)一個顯示管理的功能, 顯示管理所需要的接口見下文要求應(yīng)管理類接口如下(具體方法需要機頂盒底層實現(xiàn)):package android.os.display;/* * 輸出相關(guān)控制的管理類 * * * Date 2013-10-25 */public class DisplayManager public final static int DISPLAY_STANDARD_1080P_60 = 0;public final static int DISPLAY_STANDARD_1080P_50 = 1;
32、public final static int DISPLAY_STANDARD_1080P_30 = 2;public final static int DISPLAY_STANDARD_1080P_25 = 3;public final static int DISPLAY_STANDARD_1080P_24 = 4;public final static int DISPLAY_STANDARD_1080I_60 = 5;public final static int DISPLAY_STANDARD_1080I_50 = 6;public final static int DISPLA
33、Y_STANDARD_720P_60 = 7;public final static int DISPLAY_STANDARD_720P_50 = 8;public final static int DISPLAY_STANDARD_576P_50 = 9;public final static int DISPLAY_STANDARD_480P_60 = 10;public final static int DISPLAY_STANDARD_PAL = 11;public final static int DISPLAY_STANDARD_NTSC = 12;/* * 判斷是否支持該制式 *
34、 * param standard * link #DISPLAY_STANDARD_1080P_60 * link #DISPLAY_STANDARD_1080P_50 * link #DISPLAY_STANDARD_1080P_30 * link #DISPLAY_STANDARD_1080P_25 * link #DISPLAY_STANDARD_1080P_24 * link #DISPLAY_STANDARD_1080I_60 * link #DISPLAY_STANDARD_1080I_50 * link #DISPLAY_STANDARD_720P_60 * link #DIS
35、PLAY_STANDARD_720P_50 * link #DISPLAY_STANDARD_576P_50 * link #DISPLAY_STANDARD_480P_60 * link #DISPLAY_STANDARD_PAL * link #DISPLAY_STANDARD_NTSC * * return */public boolean isSupportStandard(int standard) /need stb implements/* * 獲取盒子所支持的所有制式 * * return */public int getAllSupportStandards() /stb i
36、mplements/* * 設(shè)置制式 * * param standard * link #DISPLAY_STANDARD_1080P_60 * link #DISPLAY_STANDARD_1080P_50 * link #DISPLAY_STANDARD_1080P_30 * link #DISPLAY_STANDARD_1080P_25 * link #DISPLAY_STANDARD_1080P_24 * link #DISPLAY_STANDARD_1080I_60 * link #DISPLAY_STANDARD_1080I_50 * link #DISPLAY_STANDARD
37、_720P_60 * link #DISPLAY_STANDARD_720P_50 * link #DISPLAY_STANDARD_576P_50 * link #DISPLAY_STANDARD_480P_60 * * link #DISPLAY_STANDARD_PAL link #DISPLAY_STANDARD_NTSC */public void setDisplayStandard(int standard) /stb implements/* * 獲取當(dāng)前制式 * * return link #DISPLAY_STANDARD_1080P_60 * link #DISPLAY_
38、STANDARD_1080P_50 * link #DISPLAY_STANDARD_1080P_30 * link #DISPLAY_STANDARD_1080P_25 * link #DISPLAY_STANDARD_1080P_24 * link #DISPLAY_STANDARD_1080I_60 * link #DISPLAY_STANDARD_1080I_50 * link #DISPLAY_STANDARD_720P_60 * link #DISPLAY_STANDARD_720P_50 * link #DISPLAY_STANDARD_576P_50 * link #DISPL
39、AY_STANDARD_480P_60 * * link #DISPLAY_STANDARD_PAL * link #DISPLAY_STANDARD_NTSC */public int getCurrentStandard() /need stb implements/* * 設(shè)置屏幕的邊距 * * param left * 左邊距 * param top * 上邊距 * param right * 右邊距 * param bottom * 下邊距 */public void setScreenMargin(int left, int top, int right, int bottom)
40、/need stb implements/* * 獲取屏幕的邊距 * * return int * * 數(shù)組內(nèi)容順序分別為:左邊距,上邊距,右邊距,下邊距 */public int getScreenMargin() /need stb implements /* * 保存參數(shù) * */public void saveParams () /need stb implements當(dāng)分辨率修改后,盒子底層需要發(fā)送Configuration Changed事件;如果應(yīng)用希望自己處理onConfigurationChanged()事件,可以在AndroidManifest.xml文件的activity
41、中聲明android:configChanges=screenSize;否則正在運行的應(yīng)用會被重啟(具體行為可參見android標(biāo)準(zhǔn)文檔中關(guān)于Configuration Changes的描述)參數(shù)設(shè)置要求 支持網(wǎng)絡(luò)接入,登陸,視頻客戶端運行的一些參數(shù)。保存在系統(tǒng)數(shù)據(jù)庫的如下,是通過Settings.secure進行讀寫的。要支持system用戶身份讀寫Settings參數(shù)包括參數(shù)名讀寫格式默認值home_pageR/W字符:8095upgrade_urlR/W字符:8123/upgrade/STBUpgradeService.jspupgrade_pathR/W字符可選參數(shù)ntvuseracc
42、ountR/W字符空ntvusersuffixR/W字符空ntvuserpasswordR/W字符空dhcp_userR/W字符空dhcp_pswdR/W字符空dhcp_optionR/W0或1空dhcp_ipverR/W4 :IPV4或6 :IPV6空pppoe_usernameR/W字符空pppoe_pswdR/W字符空ntp_serverR/Wip地址0default_screen_ratioR/W字符空default_player_qualityR/W字符空Prop屬性如下,用于保存運行時的一些參數(shù),盒子斷電不需要保存,也需要system用戶身份讀寫屬性名讀寫默認值ro.serialn
43、oR設(shè)備串號ro.macR有線mac地址ro.build.version.incrementalR軟件版本,格式為:X.Y.Z 如:1.0.1duct.modelR硬件產(chǎn)品品牌型號R硬件產(chǎn)品名稱persist.sys.timezoneR/WAsia/Shanghaiepg.loginR/W空epg.useridR/W空epg.tokenR/W空epg.mobile.useridR/W空epg.mobile.tokenR/W空epg.mobile.deviceidR/W空ro.media.timeshiftR是否支持時移 1或 0sys.settings.supportR是否支持Pppoe和無線
44、,默認為1(0不支持Pppoe和無線,其他值表示支持Pppoe和無線).flagsR是否支持Pppoe、有線和無線,默認為7(1支持無線,2支持有線,4支持Pppoe,其他情況取1、2、4的或值:。如:7表示全支持)。注意:實現(xiàn)此屬性后可忽略原系統(tǒng)屬性sys.settings.supportepg.eccodeR/W空epg.copyrightidR/W空epg.indexurlR/W空epg.cmcchomeurlR/W空epg.authcodeR/W空epg.eccoporationcodeR/W空R/W空R/W空epg.launcher.packagenameR/W默認啟動的應(yīng)用遙控器按
45、鍵要求支持android定義的遙控器鍵,如下表格鍵名對于android的KeyEvent(十進制)對應(yīng)鍵盤鍵電源鍵179設(shè)置鍵176F2首頁鍵3起始home返回鍵4回格鍵方向左鍵21方向左鍵方向上鍵19方向上鍵方向右鍵22方向右鍵方向下鍵20方向下鍵確認鍵23回車鍵靜音鍵164靜音(部分鍵盤支持)定位133F3音軌鍵204紅色鍵136F6(直播)綠色鍵137F7黃色鍵138F8藍色鍵139F9應(yīng)用鍵187幫助鍵131F1音量+鍵24音量+(部分鍵盤支持)音量-鍵25音量-(部分鍵盤支持)上頁鍵92上頁pageup下頁鍵93下頁pagedown頻道+166頻道-167快退鍵89快進鍵90播放暫停
46、鍵85停止鍵86數(shù)字鍵070數(shù)字鍵181數(shù)字鍵292數(shù)字鍵3103數(shù)字鍵4114數(shù)字鍵5125數(shù)字鍵6136數(shù)字鍵7147數(shù)字鍵8158數(shù)字鍵9169#鍵18#鍵(數(shù)字鍵盤區(qū))刷新鍵135F5以上紅色按鍵,遙控器必須含有其中home鍵 1)機頂盒底層首先檢查系統(tǒng)屬性 “epg.launcher.packagename”是否有值2)如果該屬性有值,那么通過startActivity方式啟動該應(yīng)用,并通過intent.putExtra (“GoHome”, “true”)傳遞參數(shù)給該應(yīng)用3)應(yīng)用啟動后,檢查intent中參數(shù),如果發(fā)現(xiàn)包含GoHome參數(shù),那么就跳轉(zhuǎn)到首屏4)如果底層沒有獲取到屬性
47、值,那么按照系統(tǒng)默認方式啟動launcher設(shè)置鍵 系統(tǒng)直接打開設(shè)置應(yīng)用,action名為:android.settings.chinamobile.SETTINGS 電源鍵 系統(tǒng)直接處理為待機邏輯PowerManager要求 通過標(biāo)準(zhǔn)服務(wù)獲取接口獲取 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 重啟 pm.reboot(“normal”);重啟升級 pm.reboot(“recovery”); 恢復(fù)出廠:( 注:從服務(wù)框架2.1.3版本之后,會調(diào)用本方法清除用戶區(qū)數(shù)據(jù))RecoverySy
48、stem.rebootWipeUserData(context);待機要求按電源鍵提示用戶是否執(zhí)行真待機用戶按下電源鍵后,機頂盒系統(tǒng)處理彈出頁面提示用戶是否關(guān)機。用戶選擇關(guān)機后,機頂盒進入真待機狀態(tài)(但可通過電源鍵喚醒),真待機后,系統(tǒng)應(yīng)用全部停止,播放器,APK等都停止。通過電源鍵喚醒后, 以重新啟動的方式來打開機頂盒。 升級要求升級接口及目錄權(quán)限支持升級接口 RecoverySystem.installPackage(mContext, packageFile); 支持系統(tǒng)用戶身份讀寫 /cache/update目錄升級文件保存在 /cache/update/update.zip,reco
49、very升級模塊要能識別,進行升級升級成功或失敗后,都要清除升級標(biāo)志位和升級文件如果支持參數(shù)upgrade_path,將按參數(shù)設(shè)置的路徑進行保存升級文件。默認按/cache/update目錄處理升級邏輯及屬性說明duct.model屬性a)會作為產(chǎn)品品牌型號,顯示在設(shè)置界面b)該屬性值不能用于recovery模式升級判斷升級包是否匹配。c)在進行在線檢測升級時,會將這個參數(shù)值發(fā)送給升級服務(wù)器。(實現(xiàn)由服務(wù)框架做,盒端保證參數(shù)值的存在及正確性)d)當(dāng)進行Rom包升級時,不判斷中升級包中包含的這個屬性是否和盒子本身一致,而是判斷ro.build.fingerprint屬性ro.build.vers
50、ion.incremental屬性a)表示為盒子的版本號,會顯示在設(shè)置界面b)在進行在線檢測升級時,會將這個參數(shù)值發(fā)送給升級服務(wù)器。(實現(xiàn)由服務(wù)框架做,盒端保證參數(shù)值的存在及正確性)c)當(dāng)進行Rom包升級時會判斷升級包中對應(yīng)參數(shù)是否一致,一致則不升級或不顯示。(實現(xiàn)由服務(wù)框架做)ro.build.fingerprint屬性a)格式為: a/b/c:d/e/f:g/h,其中藍色部分為設(shè)備型號;紅色為版本號b)當(dāng)Rom包升級時會讀取zip包中META-INF/com/android/metadata文件中的post-build屬性, 判斷規(guī)則如下:1)post-build 必須存在,否則日志中會提
51、示“未發(fā)現(xiàn)post-build屬性”2)post-build內(nèi)容格式與ro.build.fingerprint屬性相同,即,格式也是: a/b/c:d/e/f:g/h3)a/b/c:d/e/f:g/h 必須為兩個:號間隔,否則日志中會提示“類型格式不正確”4)ro.build.fingerprint屬性與post-build中a/b/c 值必須完全一致 ,否則日志中會提示 “硬件類型不一致”5)d/e/f 必須有兩個/分隔 否則日志中會提示 “版本號格式不符合”6)f 不能為空 否則日志中會提示 “版本號為空”7)g/h 不做要求8)當(dāng)ro.build.fingerprint屬性中的設(shè)備類型與
52、post-build中的設(shè)備類型相同,且ro.build.version.incremental屬性與post-build中的版本號不同時,才會啟動升級U盤升級說明:升級包存放路徑: U盤根目錄下upgrade目錄下升級包格式: zip文件當(dāng)U盤被掛接到盒子時,需要:發(fā)送廣播: Intent. ACTION_MEDIA_MOUNTED(“ent.action.MEDIA_MOUNTED”)框架收到廣播后,獲取U盤文件根目錄的方法:intent.getData().getPath()播放器要求點播 支持http協(xié)議的ts流播放 支持處理url參數(shù)中的stattime和duration ,單位毫秒
53、 starttime表示從指定時間點開始播放, duration 表示片源的時長直播 支持標(biāo)準(zhǔn)hls協(xié)議的m3u8播放事件 擴展mediaplayer的OnErrorListener事件 whatExtra說明MEDIA_ERROR_UNKNOWN=1Level 1 開始支持MEDIA_ERROR_SERVER_DIED=100 MEDIA_ERROR_IO = -1004 MEDIA_ERROR_MALFORMED= -1007 MEDIA_ERROR_UNSUPPORTED = -1010 MEDIA_ERROR_TIMED_OUT = -110Level 17 開始支持OnInfoLis
54、tener支持事件whatExtra說明MEDIA_INFO_UNKNOWN=1Level 3開始支持MEDIA_INFO_BUFFERING_START = 701Level 9開始支持MEDIA_INFO_BUFFERING_END = 702Level 9開始支持MEDIA_INFO_DOWNLOAD_START = 10086切片序號切片開始下載事件 (移動規(guī)范定義)MEDIA_INFO_DOWNLOAD_END = 10087下載完成時間,單位 毫秒切片下載完成事件(移動規(guī)范定義)MEDIA_INFO_DOWNLOAD_ERROR = 10088http請求錯誤碼,404,500;超
55、時為2000切片下載失敗事件(移動規(guī)范定義)MEDIA_INFO_VIDEO_RENDERING_START=3播放第一幀畫面事件 Level17開始支持時移1, 對于支持時移或打開時移功能的版本需要用用屬性ro.media.timeshift 標(biāo)識,值為12,seekTo(int arg),其中arg為要播放的時間點與當(dāng)前時間的毫秒差3,根據(jù)url中是否含有l(wèi)ivemode參數(shù)來判斷是否直播時移,具體含義請參考中國移動直播時移規(guī)范文檔4,getCurrentPosition(),返回為與系統(tǒng)當(dāng)前時間的毫秒差畫面比例支持設(shè)置畫面比例,相關(guān)參數(shù)保存在系統(tǒng)數(shù)據(jù)庫,是通過Settings.secur
56、e進行讀寫的。要支持system用戶身份讀寫。public final static String DEFAULT_SCREEN_RATIO = default_screen_ratio;/畫面比例,用戶可以選擇 1 拉伸全屏(默認) 或者 0自適應(yīng)keyValueDEFAULT_SCREEN_RATIOSCREEN_AUTO=0SCREEN_FULL=1清晰度支持設(shè)置清晰度,相關(guān)參數(shù)保存在系統(tǒng)數(shù)據(jù)庫,是通過Settings.secure進行讀寫的。要支持system用戶身份讀寫public final static String DEFAULT_PLAYER_QUALITY = defaul
57、t_player_quality;/清晰度,用戶可以選擇:0 清晰度優(yōu)先(默認)、1 流暢優(yōu)先、2自動切換keyValueDEFAULT_PLAYER_QUALITYDEFINITION_HIGH_QUALITY=0DEFINITION_HIGH_FLUENT=1DEFINITION_PLAYER_AUTO=2播放器記錄卡頓信息支持播放器需要記錄播放視頻的異常情況,當(dāng)播放器發(fā)現(xiàn)播放視頻的時候有卡頓或解碼等錯誤情況出現(xiàn)時,需要記錄到相應(yīng)的文件中。文件存放的路徑為/tmp/playLog存放的文件以15分鐘為單位,每隔15分鐘生成一個文件,每小時清空一次(但保留最后一個15分鐘的文件)如:2014
58、0401121500.txt, 20140401123000.txt20140401124500.txt,20140401130000.txt如果這個15分鐘內(nèi)沒有異常信息,則不需要記錄。下次記錄就以下次的時間為文件名。一個小時清空一次,每次保留最后一個15分鐘的文件(可能是20140401130000.txt也可能是20140401124500.txt)保留上一個小時最后的那個文件播放器記錄的異常信息規(guī)則,每條信息以#開頭,每條信息之間用空行分割字段信息:系統(tǒng)時間、播放URL、播放時間點(點播秒,直播回看時移是相對當(dāng)前系統(tǒng)時間秒差)、異常類型(卡頓開始,卡頓結(jié)束,獲取不到切片,播放器報錯(原
59、因),詳細描述異常類型(卡頓開始701,卡頓結(jié)束702,獲取不到切片703,播放器報錯704)注意:當(dāng)播放卡頓開始后,用戶切換了一個新的URL進行播放,播放器需要再記錄一筆上次卡頓結(jié)束的信息。如果用戶直接關(guān)機了,則可以不用記錄卡頓結(jié)束信息。詳細格式如下: #systemtime:20140411090600 HYPERLINK http:/ url:http:/. playtime:20 status:701 desc:沒有視頻可播放,下載切片緩慢 #systemtime:20140411090600 HYPERLINK http:/ url:http:/. playtime:20 statu
60、s:703 desc:獲取不到切片,切片url是http:/xxx.xxx.xx.xx/xxx.ts深度診斷對播放器上報事件的要求當(dāng)應(yīng)用調(diào)用播放器(MediaPlayer)進行視頻播放時,會監(jiān)聽 HYPERLINK /reference/android/media/MediaPlayer.OnInfoListener.html MediaPlayer.OnInfoListener 事件(參見Android規(guī)范: HYPERLINK /reference/android/media/MediaPlayer.html /reference/android/media/MediaPlayer.htm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人保險理賠授權(quán)委托書
- 單次包車合同范本
- 口罩委托采購合同范本
- 獸藥代理合同范本
- 世界水日活動策劃方案
- 下學(xué)期幼兒教師的個人總結(jié)
- 推拿治療學(xué)模擬題+答案
- 別墅建設(shè)合同范本
- 勞務(wù)合同補充合同范本
- 發(fā)光字安裝合同范本
- 統(tǒng)編人教部編版道德與法治四年級下冊教材解讀教師教材培訓(xùn)課件
- 履約專項檢查表
- 人教版數(shù)學(xué)四年級下冊第一單元測試卷
- 模具保養(yǎng)記錄表
- 2023國家自然科學(xué)基金申請書
- 原始狩獵圖 (2)
- 《色彩構(gòu)成——色彩基礎(chǔ)知識》PPT課件
- 綠色建筑及材料分析及案列
- 鍍層的結(jié)合力
- 霍尼韋爾DDC編程軟件(CARE)簡介
- 實用中西醫(yī)結(jié)合診斷治療學(xué)
評論
0/150
提交評論