真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

html5廣播,web廣播

html5能發(fā)udp發(fā)送廣播包么

不能,你指的html5是前端。js多數(shù)都用的http協(xié)議。

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)江源免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

但可以通過前端通知后端,后端想怎么發(fā)就怎么發(fā)。

--深圳遠(yuǎn)標(biāo)

手機(jī)端ios和android瀏覽器 如何實(shí)現(xiàn)mms廣播電臺在線音頻播放?

從軟件的功能角度來講,Mms分為對話列表,消息列表,短信編輯,彩信編輯,短信顯示,彩信顯示和配置。

從實(shí)現(xiàn)的角度來看,它分為GUI展示層,發(fā)送/接收,彩信解析,彩信附件,信息數(shù)據(jù)等,這些分類對應(yīng)著源碼中的各種包。

源碼導(dǎo)航

Mms的源碼的位置在于android/packages/apps/Mms

其中Mms/src/com/android/mms里面都是Mms相關(guān)的代碼,而Mms/src/org/w3c/dom里面是一個(gè)類庫,主要用于彩信格式的解析和顯示。這里主要講一下Mms/src/com/android/mms下面的一些包和類的主要用途。

ui---GUI展示層,用于展示對話列表,消息列表,消息編輯頁,彩信附件編輯,彩信展示,播放幻燈片。負(fù)責(zé)直接與用戶交互。

?ConversationListAdapter.java---對話列表的Adapter用于給顯示層ConversationList綁定數(shù)據(jù)。

?ConversationListItemData.java---代表對話列表中的每一項(xiàng)的數(shù)據(jù)結(jié)構(gòu),里面含有要在對話列表中展示的信息。

?ConversationList.java------這是對話列表的顯示窗口Activity,它是一個(gè)ListActivity,這幾個(gè)類都是對話列表的相關(guān)類,用于顯示,編輯和管理所有的對話。

?ComposeMessageActivity.java----這個(gè)是核心的窗口Activity,編輯信息,顯示一條對話Thread中的所有往來信息。MessageListView會加在其上面,另外,AttachmentEditor也會加在其上面。這個(gè)Activity也負(fù)責(zé)響應(yīng)外部應(yīng)用程序,發(fā)送SENDTO或SEND等請求Intent,比如外部應(yīng)用想要發(fā)送信息,等就由這個(gè)Activity來響應(yīng)。

?MessageItem.java---代表一個(gè)信息的抽象數(shù)據(jù),它包含了信息相關(guān)的所有內(nèi)容,比如信息的主題,消息內(nèi)容,來信地址,附件內(nèi)容等等。它的所有數(shù)據(jù)都是公共的內(nèi)部成員,都可以直接訪問。

?MessageListAdapter.java---用于給消息列表顯示層(由ComposeMessageActivity創(chuàng)建,綁定到MessageListView上)綁定數(shù)據(jù)。

?MessageListView.java---用于顯示消息列表,繼承自ListView,其生命周期由ComposeMessageActivity來控制,顯示與否也由它來控制。

?MessageListItem.java---是一個(gè)布局,用于顯示和控制消息列表中的每一個(gè)消息的顯示。

?AttachmentTypeSelectorAdapter.java---用于添加附件件時(shí)的一個(gè)支持的附件列表,它就是一個(gè)菜單。

?AttachmentEditor.java---用于在編輯MMS彩信信息時(shí),顯示已添加的附件,它的生命周期由ComposeMessageActivity來控制,顯示與否也是由ComposeMessageActivity來控制,當(dāng)有彩信附件時(shí),它就會顯示,否則就被Hide。它是一個(gè)布局管理器,管理著下面四個(gè)布局,根據(jù)附件的類型動態(tài)的顯示下面四個(gè)View中的某一個(gè)。

?AudioAttachmentView.java---在編輯信息器中用于顯示音頻附件,它是繼承自線性布局。并不在代碼中直接使用,而是在布局文件中來當(dāng)成布局管理器使用。

?ImageAttachmentView.java---在編輯信息器中用于顯示圖片附件,它是繼承自線性布局。并不在代碼中直接使用,而是在布局文件中來當(dāng)成布局管理器使用。

?SlideshowAttachmentView.java---在編輯信息器中用于顯示幻燈片附件,它是繼承自線性布局。并不在代碼中直接使用,而是在布局文件中來當(dāng)成布局管理器使用。

?VideoAttachmentView.java---在編輯信息器中用于顯示視頻附件,它是繼承自線性布局。并不在代碼中直接使用,而是在布局文件中來當(dāng)成布局管理器使用。

?SlideshowActivity.java—用來全屏播放幻燈片,也即幻燈片的展示,因?yàn)椴市诺膭?chuàng)建和播放都是以幻燈片的方式進(jìn)行的,也即一張一張的,每張上面可以文字,圖片,視頻和音頻,每一張有瀏覽時(shí)長。

?SlideshowEditActivity.java---以列表方式管理幻燈片,也即是把所有的幻燈片用列表顯示出來,用戶可添加一頁幻燈片,也可以點(diǎn)擊進(jìn)入編輯某頁幻燈片,用于創(chuàng)建和編輯幻燈片。

?SlideshowEditor.java---用于編輯某頁幻燈片,比如添加元素,刪除元素和替換元素,這里的元素可以是圖片,視頻,音頻和文字。也可以用于編輯整頁幻燈片,比如刪除某頁幻燈片,調(diào)整這頁幻燈片在所有幻燈片中的位置等。它是一個(gè)具體操作幻燈片的封裝,SlideEditorActivity創(chuàng)建它并使用它來完成紀(jì)燈片的編輯。

?SlideshowPresenter.java---用于展示所有的幻燈片,也就是播放所有的幻燈片。由SlideshowActivity來創(chuàng)建和使用。

?SlideViewInterface.java---定義了一些用于顯示一頁幻燈片中的內(nèi)容的接口,如設(shè)置圖像,設(shè)置視頻,設(shè)置音頻,播放視頻,播放音頻,暫停,隨機(jī)定位等等。附件顯示的View:AudioAttachmentView,ImageAttachmentView,SlideshowAttachmentView和VideoAttachmentView均實(shí)現(xiàn)了此接口,這樣AttachmentEditor就可以用統(tǒng)一的接口來控制內(nèi)容的播放,而不用關(guān)心具體的內(nèi)容是什么。

?SlideEditorActivity.java---用于編輯某頁幻燈片,比如添加音頻,添加視頻,添加圖像,添加文字等。它只是提供用戶界面,讓用戶來操作各種按扭以達(dá)到添加元素,替換元素或是刪除元素。而對具體的幻燈片的操作是通過SlideshowEditor來完成的,它主要負(fù)責(zé)與用戶交互。

?SlideListItemView.java--- SlideshowEditActivity中列表的每一項(xiàng)的布局管理,繼承自LinearLayout。

?MmsThumbnailPresenter.java---用于在消息列表中,顯示彩信的縮略圖,因?yàn)椴市诺膬?nèi)容不固定,可能是圖片,可能是音頻,可能是視頻也可能是幻燈片,所以用這個(gè)類來處理并顯示彩信的縮略圖。

?MessagingPreferenceActivity.java---Mms的配置信息編輯器,用來編輯和更改配置信息,繼承息PreferenceActivity。它負(fù)責(zé)與用戶交互,顯示和更改配置。在Mms啟動時(shí),MmsConfig會從SharedPreference中讀出配置信息,在運(yùn)行時(shí)其他的類的配置信息都是從MmsConfig中獲取的,MmsConfig提供了很多Get方法以獲取配置信息。

?Presenter.java---用來展示附件的一個(gè)抽象類。

?PresenterFactory.java---工廠方法。

?RecipientsAdapter.java

?RecipientsEditor.java---用于顯示信息編輯頁面上面的收信人的編輯框,它可以有自動補(bǔ)全的功能,補(bǔ)全的數(shù)據(jù)由RecipientsAdapter來提供。

?ViewInterface.java---代表一個(gè)View的基類,用于Slideshow顯示內(nèi)容或是取縮略圖??梢匀iew的長寬高等。

?BasicSlideEditorView.java---編輯某一頁幻燈片時(shí)所用的布局,也就是在SlideEditorActivity.java中使用。

?EditSlideDurationActivity.java---顧名思義,用于編輯某一頁幻燈片的瀏覽時(shí)長。

?ManageSimMessages.java---這個(gè)是在設(shè)置中使用的,用來管理SIM里的消息。在設(shè)置中有一項(xiàng)是管理SIM卡上面的消息。在Mms的設(shè)置Settings中有一個(gè)選項(xiàng)可以設(shè)置是把信息存儲在SIM卡,還是存儲在手機(jī)里。在收信時(shí)SmsReceiverService會查看這個(gè)設(shè)置然后把收到的信息寫到相應(yīng)的地址。ManageSimMessages也是以列表方式顯示SIM里面的信息,提供了二個(gè)菜單:把信息存入手機(jī)和刪除。

?NumberPickerButton.java---用于顯示選擇數(shù)字的按扭,在配置里面用。

?NumberPickerDialog.java---用于顯示選擇數(shù)字的對話框,在配置里面用。

?NumberPicker.java---用于在配置的時(shí)候選擇數(shù)字。這幾個(gè)NumerPicker主要是用于Settings中的。

?DeliveryReportActivity.java---信息發(fā)送情況報(bào)告。以列表的方式來顯示

?DeliveryReportAdapter.java---相應(yīng)的Adapter

?DeliveryReportItem.java---相應(yīng)的數(shù)據(jù),每一項(xiàng)的數(shù)據(jù)

?DeliveryReportListItem.java---相應(yīng)每一項(xiàng)的布局。

data---用于操作當(dāng)前正在編輯的信息的相關(guān)數(shù)據(jù),比如聯(lián)系人列表,比如當(dāng)前對話,比如當(dāng)前消息。負(fù)責(zé)管理當(dāng)前正在編輯的信息和當(dāng)前所處的對話以及當(dāng)前信息用到的聯(lián)系人。這些類都是在編輯信息的時(shí)候使用,由于這些多半都是用來管理數(shù)據(jù)的,而又無法直接做為對象傳遞給編輯器。所以它們的很多方法都是靜態(tài)的,也就是這些類都近似單鍵。

?WorkingMessage.java---用來管理當(dāng)前正在編輯的消息,它從創(chuàng)建,草稿到發(fā)送完成后一直存在,只要打開了編輯信息的頁面就會創(chuàng)建一個(gè)WorkingMessage,直到退出編輯頁面。

?Conversation.java---用來管理對話Threads,通常用來管理當(dāng)前的對話,也就是進(jìn)入的對話和正在進(jìn)行操作的對話,它也用來管理對話列表,比如查詢對話列表。

?Contact.java---用來代表一個(gè)聯(lián)系人的信息,和管理聯(lián)系人,加載聯(lián)系人信息,其中還有相應(yīng)的Cache。因?yàn)橐粋€(gè)聯(lián)系人的數(shù)據(jù)是比較多的包含名字,名,姓,各種電話號碼,各種地址等等。因?yàn)镸ms中直接使用Contact來作為聯(lián)系人,所有信息都是直接從其中獲取。另外,由于信息交互中也會涉及到聯(lián)系人,因?yàn)槭瞻l(fā)信時(shí)可以直接使用一串電話號碼,這時(shí)就需要有如添加聯(lián)系人的功能。Contact中有很多異步的操作,比如加載聯(lián)系人信息的時(shí)候或者更新Cache的時(shí)候都需要異步操作以不阻塞調(diào)用者。

?ContactList.java---是一個(gè)Contact的List列表它繼承自ArrayListContact。用來管理一個(gè)Contact列表,或管理多個(gè)Contact。因?yàn)槊總€(gè)信息可以發(fā)送給多個(gè)聯(lián)系人,這時(shí)就需要用到ContactList來管理這些收信人。也提供了一些方便存儲和傳遞Contact的方法,比如把多個(gè)Contact轉(zhuǎn)成String,或者轉(zhuǎn)成String數(shù)組等。

?RecipientIdCache.java---用于保存所用到的Contact的Id和地址(電話)。每次WorkingMessage會更新這個(gè)Cache,然后ContactList會優(yōu)先從這個(gè)Cache中查詢聯(lián)絡(luò)人。

dom---用于解析彩信內(nèi)容smil的工具包

drm---用于處理DRM的媒體文件的工具包

layout---為了滿足特殊需要而改寫的布局元素

model---這里面定義了彩信支持的附件數(shù)據(jù)結(jié)構(gòu)和附件的組織方式。彩信可包含的內(nèi)容有圖片,視頻,音頻和文字。這些內(nèi)容可以單獨(dú)存在,也可以組合在一起。如果組合在一起就變成了幻燈片。用戶可以用幻燈片的方式來創(chuàng)建含有多個(gè)媒體的附件,圖文并茂的展示。每張幻燈片上面可以加視頻,音頻,圖片和文字,但通常一張幻燈片上面只允許加一個(gè)圖片或視頻,文字是都可以添加的,音頻在沒有視頻的情況下只可以添加的。播放的時(shí)候可以設(shè)置每張幻燈片的播放時(shí)長,以及文字的滾動速度等等。

?CarrierContentRestriction.java---是具體的彩信附件檢查站,對于不支持的附件,或者附件大小超出限制,或者圖像分辨率不對,或者圖像超出尺寸,會拋出異常:UnsupportedContentTypeException,ResolutionException,ExceedMessageSizeException,ContentRestrictionException。

?ContentRestriction.java是用于檢查附件的接口,外部直接使用這相接口,而具體實(shí)現(xiàn)是CarrierContentRestriction

?ContentRestrictionFactory.java是創(chuàng)建附件檢查的工廠方法。外部通過這個(gè)工廠來創(chuàng)建一個(gè)ContentRestriction對象,然后使用其中定義的檢查方法來進(jìn)行附件內(nèi)部檢查。

?SmilHelper.java用于解析和處理附件中的Smil的工具類。

?IModelChangedObserver.java接口,用于監(jiān)聽附件內(nèi)容有變化。

?Model.java---彩信附件的數(shù)據(jù)組織方式和管理方式是每一個(gè)附件都是一個(gè)Model的子類,它不但用于管理附件的具體數(shù)據(jù),比如Uri,大小,文件名,位置等,也可以用于在GUI顯示附件和查看附件。

?LayoutModel.java---繼承自Model用于管理可視的附件的布局的類。它用來管理RegionModel等的基本元素。它就好比ViewGroup或LinearLayout,RelativeLayout等一些布局管理器,用來組織并管理布局基本元素也就是RegionModel的子類ImageModel,TextModel和VideoModel。

?RegionModel.java---繼承自Model用于管理可視附件和布局,比如圖像,視頻和文字。特別是在顯示可視附件的時(shí)候,用于控制可視附件在屏幕中的位置。一個(gè)RegionModel代表著一張幻燈片上的一塊區(qū)域,它是幻燈片上的布局基本元素。好比UI元素中的View,但多在使用時(shí)都是使用它的子類,也就是ImageModel,TextModel和VideoModel。

?RegionMediaModel.java---繼承自MediaModel,是用于多媒體附件中的可視部分的布局控制,主要用在附件的顯示和播放幻燈片時(shí)的控制。它的子類是ImageModel,TextModel和VideoModel。

?MediaModel.java---繼承自Model,代表媒體的數(shù)據(jù)結(jié)構(gòu),管理具體的附件數(shù)據(jù),同時(shí)也用于管理附件的顯示控制,比如圖像的顯示,音頻和視頻的播放控制等。

?MediaModelFactory.java---用于從一個(gè)Pdu附件中解析出來MediaModel,也就是把Pdu轉(zhuǎn)化為Mms內(nèi)部的附件數(shù)據(jù)。

?ImageModel.java—繼承自RegionMediaModel用于管理圖像附件和控制圖像附件的顯示。

?VideoModel.java---繼承自RegionMediaModel用于管理視頻附件和控制視頻附件的播放。

?AudioModel.java----繼承自MediaModel用于管理音頻附件和控制音頻附件的播放

?SlideModel.java----繼承自Model用于管理一組附件,這些附件同一次顯示給用戶。就好像幻燈片的一片一樣,每一個(gè)SlideModel里面有一個(gè)可以存儲Model的列表,可以包含文字,音頻,圖像或視頻,其上面的附件同時(shí)顯示出來。

?SlideshowModel.java---繼承自Model,用于管理一個(gè)彩信中的所有附件。其內(nèi)含有一個(gè)存儲SlideModel的列表,用于保存和控制一條彩信中的所有附件。另外它也負(fù)責(zé)顯示這些附件,把一個(gè)個(gè)SlideModel組織起來,播放。它也負(fù)責(zé)著把這些Mms形式的附件(各種Model)轉(zhuǎn)化為Android的附件Pdu,和從Pdu提出各自Model,因?yàn)镾lideshow是應(yīng)用程序?qū)拥牟市盘幚矸绞?,而能發(fā)送和接收的彩信數(shù)據(jù)是Pdu。

?TextModel.java---繼承自RegionMediaModel用于管理文字附件和控制文字附件的顯示,比如按時(shí)間來滾動

util---這里面是整個(gè)Mms共享的工具類,其中全部都是單鍵或是直接使用類,不可以創(chuàng)建對象和以對象方式來使用

?AddressUtils.java---關(guān)于地址的工具類,目前只有一個(gè)getFrom()方法,用于獲取發(fā)信人地址。

?DraftCache.java---用于標(biāo)識哪些對話Thread有Draft,哪些沒有,也就是用于管理和查詢對話的草稿狀態(tài),有草稿還是沒有。它里面維護(hù)了一個(gè)HashSet,里面包含了所有含有草稿的Thread Id。它里面也有一個(gè)HashSet用于存儲OnDraftChangedListener,即當(dāng)Thread的Draft狀態(tài)有變化時(shí),DraftCache會調(diào)用相應(yīng)的Listener以告知相應(yīng)模塊,這個(gè)對話的草稿狀態(tài)有所變化??梢酝ㄟ^DraftCache.setDraftState(threadId, state)來設(shè)置某個(gè)對話的草稿狀態(tài); 可以通過DraftCache.hasDraft(threadId)來查詢某個(gè)對話是否含有草稿。

?Recycler.java---是一個(gè)抽象的工具類,里面定義了SmsRecycler和MmsRecycler,用于刪除陳舊的消息,或者刪除超過信息數(shù)量限制的信息。使用方法都是Recycler.getSmsRecycler.deleteOldMessages(context) 或者Recycler.getMmsRecycler.deleteOldMessages(context)

?SmileyParser.java---把標(biāo)點(diǎn)式的表情符號轉(zhuǎn)化為圖形的表情,比如把?用圖標(biāo)笑臉來代替。

?DownloadManager.java---不要被名字騙到,它并不是真正意義上的下載管理器,因?yàn)樗⒉回?fù)責(zé)任何與下載文件過程或下載文件的管理。它是用于管理與下載相關(guān)的配置信息,比如是否是自動下載,以及下載過程的各種通知,比如Notification Bar和Toast提示等。

?RateController.java

?SendingProgressTokenManager.java

transaction---對于Mms來講是最底層的一個(gè)包,用戶不可見,它負(fù)責(zé)發(fā)信息的最后處理和收信息的最初處理。主要是負(fù)責(zé)發(fā)送信息和接收信息。它并不是真正的發(fā)送和接收信息。是由系統(tǒng)Frameworks里面來負(fù)責(zé)接收和發(fā)送信息。這個(gè)包只是對于Mms應(yīng)用層來講是發(fā)送和接收。

?AbstractRetryScheme.java

?DefaultRetryScheme.java—這二個(gè)類是實(shí)現(xiàn)一種Retry機(jī)制,因?yàn)樾畔⒌陌l(fā)送與接收會受到環(huán)境的限制,比如現(xiàn)在手機(jī)沒信號,或是網(wǎng)絡(luò)連接不成功,那么就會把信息放到Pending隊(duì)列里面,等一段時(shí)間再重新嘗試發(fā)送與接收。這里的二個(gè)類就是為了實(shí)現(xiàn)此Retry機(jī)制。

?HttpUtils.java—彩信發(fā)送與接收的最底層實(shí)現(xiàn)者,它負(fù)責(zé)用HTTP協(xié)議接收和發(fā)送彩信到MMSC彩信服務(wù)中心。

?MessageSender.java—像其名字所預(yù)示的那樣,它是為了發(fā)送信息而封裝的一個(gè)接口,它里面只有一個(gè)方法sendMessage(),UI層只需要調(diào)用實(shí)現(xiàn)了這個(gè)接口的類即可發(fā)送信息。

?MessagingNotification.java—專門負(fù)責(zé)在Status Bar上面做Notification,比如新接收到了信息,或是信息發(fā)送失敗,或是接收失敗等。它被UI層,和底邏輯層共用著。

?MmsMessageSender.java—繼承自MessageSender,專門用于發(fā)送彩信。它并不是做發(fā)送的事情,而是做一些錯誤檢查和前期準(zhǔn)備工作,然后啟動TransactionService來做發(fā)送相關(guān)的事情。

?NotificationTransaction.java—繼承自Transaction,負(fù)責(zé)接收彩信和更新通知(Notification)。當(dāng)有一個(gè)新彩信時(shí),F(xiàn)rameworks會先發(fā)出一個(gè)短信,稱作彩信通知(NotificationIndication),其內(nèi)含有彩信相關(guān)的信息(MMSC, 彩信的ContentLocation(URL)等),之后是由應(yīng)用程序自己去MMSC用ContentLocation取彩信。這個(gè)NotificationTransaction就是專門用于處理彩信通知的,它會從MMSC上取出彩信數(shù)據(jù)(Pdu),把它寫入數(shù)據(jù)庫中,然后更新Notification。需要注意的是,只有彩信的設(shè)置是自動獲取(“auto retrieve”)時(shí),它才會去下載彩信,否則,它只處理彩信通知(Notification Indication),而不去下載彩信。

?Observable.java—里面定義了觀察對象,Transaction是它的一個(gè)子類,其他的實(shí)體Transaction都是觀察對象,里面有一個(gè)列表保存著觀察者的引用,當(dāng)一個(gè)Transaction完成時(shí),或是有異常時(shí)就會調(diào)用notifyObservers()方法來把狀態(tài)通知給觀察者。

?Observer.java—觀察者,TransactionService實(shí)現(xiàn)了這個(gè)接口。它是所有Transaction的觀察者,以監(jiān)聽他們的狀態(tài)和處理結(jié)果,因?yàn)樗械腡ransaction都 是異步的,所以才用觀察模式來通知Transaction的處理結(jié)果。

?PrivilegedSmsReceiver.java—繼承自SmsReceiver短信收信的事件監(jiān)聽者,負(fù)責(zé)監(jiān)聽新短信事件android.provider.Telephony.Intents.SMS_RECEIVED_ACTION(“android.provider.Telephony.SMS_RECEIVED”);當(dāng)接收到這個(gè)Intent時(shí)表明有一個(gè)新短信。它會喚起SmsReceiverServier來處理短信。

?ProgressCallbackEntity.java

?PushReceiver.java—一個(gè)BroadcastReceiver專門用于接收彩信事件android.provider.Telephony.WAP_PUSH_RECEIVED_ACTION(“android.provider.Telephony.WAP_PUSH_RECEIVED”),它會先做一些預(yù)處理,然后啟動TransactionService,TransactionService又會創(chuàng)建NotificationTransaction來處理這個(gè)彩信通知。

?ReadRecTransaction.java

?RetrieveTransaction.java—繼承自Transaction,用于主動獲取彩信數(shù)據(jù)。當(dāng)彩信設(shè)置為非自動獲取時(shí),需要用戶觸發(fā)獲取,TransactionService會創(chuàng)建一個(gè)RetrieveTransaction來獲取彩信數(shù)據(jù)(Pdu),存入數(shù)據(jù)庫,更新Notification等。

?RetryScheduler.java

?SendTransaction.java—繼承自Transaction,用于發(fā)送彩信數(shù)據(jù)。

?SimFullReceiver.java

?SmsMessageSender.java—發(fā)送短信的封裝,繼承自MessageSender。它會啟動SmsReceiverService來發(fā)送。

?SmsReceiver.java—是一個(gè)BroadcastReceiver,不要被其名字唬到,它并不負(fù)責(zé)接收新短信通知,相反,它用于發(fā)送信息,接收發(fā)送信息請求,并喚起SmsReceiverService來處理發(fā)送。這里可能是Android命名規(guī)則的原因,Android里的四大組件都喜歡把其組件的名字加上,比如ComposeMessageActivity,是一個(gè)Activity,TransactionService是一個(gè)Service,而這里SmsReceiver是一個(gè)BroadcastReceiver,它與接收短信(receiving Sms)沒有關(guān)系。當(dāng)然了,這完全是一個(gè)糟糕的命名。

?SmsReceiverService.java—它是一個(gè)Service,專門用于處理短信的發(fā)送與接收。它是由SmsReceiver和PrivilegedSmsReceiver監(jiān)聽事件,然后啟動它的,自己并不會監(jiān)聽Intent事件。

?SmsRejectedReceiver.java

?SmsSingleRecipientSender.java—繼承自SmsMessageSender,它針對一個(gè)收信人,調(diào)用Frameworks層接口發(fā)送信息,對于Mms應(yīng)用來說,這是發(fā)送短信的最后一站,對就是說對于應(yīng)用來說,它會把短信發(fā)送出去。

?TransactionBundle.java—Transaction所用的一個(gè)數(shù)據(jù)結(jié)構(gòu),用于給Transaction傳送數(shù)據(jù)。

?Transaction.java—各種Transaction的基類,它里面定義了二個(gè)方法getPdu(),sendPdu()這二個(gè)方法是從MMSC取彩信數(shù)據(jù),和向MMSC發(fā)送數(shù)據(jù)。它是對HttpUtils的一層包裝。

?TransactionService.java—是一個(gè)Service,接收各種Transaction請求,然后處理Transaction。每個(gè)Transaction都 會開啟新的線程異步的處理,所以當(dāng)處理完成時(shí)又會通過Observer來通知TransactionService。

?TransactionSettings.java—彩信相關(guān)配置信息的數(shù)據(jù)結(jié)構(gòu),比如MMSC,Proxy,Port等。請求方可能會提供這些數(shù)據(jù),如果提供就使用;否則就會從Telephony數(shù)據(jù)庫加載默認(rèn)的數(shù)據(jù),這些數(shù)據(jù)與運(yùn)營商和APN的設(shè)置有關(guān)。

?TransactionState.java—標(biāo)識每一個(gè)Transaction處理情況的數(shù)據(jù)結(jié)構(gòu),很簡單,只是標(biāo)明處理成功還是失敗,用于Transaction回調(diào)Observer(TransactionService)時(shí)用。

還有com/android/mms根目錄下面的一些文件,其中絕大多數(shù)是定義的基類異常和一些公共的類。

?MmsApp.java---Mms Application會在應(yīng)用進(jìn)程啟動的時(shí)候做一些必要的初始化工作,比如配置,下載,聯(lián)系人,對話,Smiley解析器和通知等。

?MmsConfig.java---管理Mms的一些常用配置,比如彩信大小上限,彩信圖片尺寸上限,收信人的個(gè)數(shù)上限等等。這些配置信息是保存在在res/xml/mms_config.xml里面。MmsApp在初始化時(shí)會調(diào)用MmsConfig.init(),在這里面會調(diào)用loadMmsSettings來解析mms_config.xml從而得到所需要的配置信息。其他的模塊只通過MmsConfig來訪問這些配置信息。

?LogTag.java---有關(guān)日志跟蹤信息的控制。它可以方便的控制日志輸出級別。但是實(shí)際上整個(gè)Mms代碼中使用這個(gè)LogTag的地方并不多。

各位大神現(xiàn)在HTML5怎么樣

HTML5 的應(yīng)用仍存在巨大的上升空間,近期內(nèi)很可能從廣告行業(yè)逐漸往游戲行業(yè)、廣播電視行業(yè)和媒體行業(yè)轉(zhuǎn)型,不遠(yuǎn)的未來還能把觸角伸得更遠(yuǎn)。作為新一代Web 開發(fā)標(biāo)準(zhǔn),HTML5這把火勢必?zé)絹砟???梢赃x擇上課學(xué)習(xí)HTML5,來提升自己的技術(shù)知識。

怎么做到微信直播,HTML5直播,低延時(shí)

功能模塊概述

通過obs客戶端推流到nginx流媒體服務(wù)器上,對流媒體用ffmpeg將流剪切為若干段ts流文件并保存到臨時(shí)目錄中,通過訪問m3u8格式拼接ts流文件段來觀看直播。

推流端

采用開源工具OBS客戶端進(jìn)行推流

根據(jù)項(xiàng)目的推流地址,填入OBS客戶端(下載地址)中,并設(shè)置場景,保存后重啟,便可開始推流。

為更加穩(wěn)定的推流,建議使用以上鏈接中的v0.625穩(wěn)定版本,按提示安裝完成后,打開設(shè)定.在廣播設(shè)定中,伺服器統(tǒng)一填寫我們項(xiàng)目的流媒體接收流地址:

rtmp://127.0.0.1:1935/hls/

以上這幾個(gè)數(shù)據(jù)都是可以更改的。

127.0.0.1——你的流媒體服務(wù)器ip

1935——你的rtmp端口號

hls——你的直播nginx配置模塊

具體在下文中也有詳細(xì)介紹

配置地址

回到主界面,右鍵來源,選擇添加視頻捕捉設(shè)備或獲取窗口等(相關(guān)設(shè)置默認(rèn)即可),點(diǎn)擊開始串流,便可開始直播。

添加場景

圖為添加視頻捕捉設(shè)備后的直播畫面:

直播中

流媒體服務(wù)器

Nginx接收推流模塊

rtmp_auto_push on;

rtmp {

server {

listen 1935;

application hls {

live on;

hls on;

hls_path /tmp/hls;

on_publish 項(xiàng)目地址/liveOnPublish;

on_publish_done 項(xiàng)目地址/liveOnDone;

notify_method get;

}

}

}

配上我在word上的注解

注解1

Nginx處理直播流模塊

http {

server {

listen 80;

server_name localhost;

location /hls {

secure_link $arg_st,$arg_e;

secure_link_md5 key$arg_e;

subs_filter .ts '.ts?st=$arg_ste=$arg_eclentip=$remote_addr';

subs_filter_types application/vnd.apple.mpegurl;

if ($secure_link = "") {

return 402;

}

if ($secure_link = "0") {

return 403;

}

# Serve HLS fragments

types {

application/vnd.apple.mpegurl m3u8;

video/mp2t ts;

}

root /tmp;

add_header Cache-Control no-cache;

}

}

}

注解2

項(xiàng)目部署服務(wù)器

流媒體服務(wù)器不通過項(xiàng)目服務(wù)器,整個(gè)直播過程的推流和處理流都在流媒體服務(wù)器上進(jìn)行。項(xiàng)目服務(wù)器主要進(jìn)行直播地址加密處理意見推流開始和結(jié)束觸發(fā)的方法(liveOnPublish(),liveOnDone())已及對直播地址加密.

播放端

直接通過HTML5中的video標(biāo)簽設(shè)置src來播放直播流。如:

video src="pro/live.m3u8?st=UM/L8jdfTlY2b1j1F6XSxA==e=1468548530

" controls="controls"/video

存在的問題

延遲待測試(不科學(xué)的數(shù)據(jù)是安卓手機(jī)普遍在30-40s,蘋果手機(jī)在20-30s)

并發(fā)待測試

掉幀待測試(網(wǎng)速影響大,網(wǎng)絡(luò)好幾乎不掉幀,網(wǎng)絡(luò)差掉一半,用戶體驗(yàn)差)

html5可以播放哪些格式的視頻

HTML5支持的視頻格式在HTML5中嵌入的視頻格式主要包括ogg、mpeg4、wehm等。

具體介紹如下:

ogg:一種開源的視頻封裝容器,其視頻文件擴(kuò)展名為ogg,里面可以封裝vobris音頻編碼或者theora視頻編碼,同時(shí)ogg文件也能將音頻編碼和視頻編碼進(jìn)行混合封裝。

mpeg4:目前最流行的視頻格式,其視頻文件擴(kuò)展名為mp4。

同等條件下,mpeg4格式的視頻質(zhì)量較好,但它的專利被MPEG-LA公司控制,任何支持播放mpeg4視頻的設(shè)備,都必須有一張MPEG-LA頒發(fā)的許可證。

擴(kuò)展資料:

1、視頻格式是視頻播放軟件為了能夠播放視頻文件而賦予視頻文件的一種識別符號。

2、3GP是一種3G流媒體的視頻編碼格式,主要是為了配合3G網(wǎng)絡(luò)的高傳輸速度而開發(fā)的,也是目前手機(jī)中最為常見的一種視頻格式。

3、MPEG(運(yùn)動圖像專家組)是Motion Picture Experts Group 的縮寫,這類格式包括了MPEG-1,MPEG-2和MPEG-4在內(nèi)的多種視頻格式。

4、AVI,音頻視頻交錯(Audio Video Interleaved)的英文縮寫,AVI這個(gè)由微軟公司發(fā)布的視頻格式,在視頻領(lǐng)域可以說是最悠久的格式之一。

5、一種獨(dú)立于編碼方式的在Internet上實(shí)時(shí)傳播多媒體的技術(shù)標(biāo)準(zhǔn),Microsoft公司希望用其取代QuickTime之類的技術(shù)標(biāo)準(zhǔn)以及WAV、AVI之類的文件擴(kuò)展名。

html5 的服務(wù)器推送 Server-sent Events和 websocket這兩個(gè)是不是同一個(gè)東西,是兩個(gè)不同的?求大神解釋

Server-Sent Events

運(yùn)行原理

瀏覽器通過HTTP向服務(wù)器發(fā)送請求,服務(wù)器端拿出數(shù)據(jù)庫中的最新的信息,立即返回給客戶端,客戶端等待三秒后再次發(fā)出下一個(gè)請求。

實(shí)現(xiàn)方式

同樣,瀏覽器中HTML兩個(gè)input,JavaScript模塊打開EventSource,把接受者的id傳給服務(wù)端。

客戶端收到相應(yīng)后,onMessage事件的處理器將被調(diào)用。瀏覽器將每3秒發(fā)送一個(gè)請求,除非將連接關(guān)閉(Close方法)。

WebSockets

運(yùn)行原理

客戶端通知WebSockets服務(wù)器一個(gè)事件,告訴他接收者id,服務(wù)器將立即通知消息,當(dāng)任何新的未讀消息來的時(shí)候,服務(wù)器都將立即返回?cái)?shù)據(jù)給客戶端。

客戶端打開一個(gè)WebSockets連接而且在/notification/updates上訂閱一個(gè)事件處理。在HTML中添加一個(gè)發(fā)送向/notification/presents發(fā)送接收者id的button。這將在所有的打開連接中引起廣播消息。所以每一個(gè)活躍的客戶端都收到通知,客戶端會檢查消息中的id是否是當(dāng)前登錄的用戶的id,如果是就更新通知數(shù)量。

總結(jié)

瀏覽器兼容性

Server-Sent Events支持Chrome9+、Firefox6+、Opera11+、Safari5+

Chrome14、Firefox7支持最新的hybi-10協(xié)議,F(xiàn)irefox6支持hybi-07.

服務(wù)器負(fù)載

Server-Sent Events工作的方式有很多,除非Server-Sent Events不必在每一次響應(yīng)發(fā)出后都關(guān)閉連接。

WebSockets,服務(wù)器只需要一個(gè)進(jìn)程處理所有的請求,沒有循環(huán),不必為每個(gè)客戶端都分配cpu和內(nèi)存。

客戶端負(fù)載

Server-Sent Events采用瀏覽器的內(nèi)置的實(shí)現(xiàn)方式,只花費(fèi)很少的一部分資源。

WebSockets跟Server-Sent Events一樣,采用瀏覽器的內(nèi)置的實(shí)現(xiàn)方式,只花費(fèi)很少的一部分資源。

時(shí)間線

Server-Sent Events默認(rèn)延時(shí)3秒,但是可以調(diào)整。

WebSockets真正的實(shí)時(shí)

實(shí)現(xiàn)方式復(fù)雜度

Server-Sent Events甚至比Long-polling更簡單

需要一個(gè)WebSockets服務(wù)器處理事件,并開放一個(gè)端口


當(dāng)前名稱:html5廣播,web廣播
文章源于:http://weahome.cn/article/dsohjjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部